export type ImagePickerAsset = { uri: string assetId?: string | null width: number height: number mimeType?: string fileName?: string | null fileSize?: number } type ImagePickerSuccessResult = { canceled: false assets: ImagePickerAsset[] } type ImagePickerCanceledResult = { canceled: true assets: null } export type ImagePickerResult = ImagePickerSuccessResult | ImagePickerCanceledResult export interface ImagePickerOptions { selectionLimit?: number allowsEditing?: boolean allowsMultipleSelection?: boolean mediaTypes?: Array<'images' | 'videos' | 'livePhotos'> } export class ImagePickerAdapter { openCameraAsync: () => Promise openImageLibraryAsync: (options?: ImagePickerOptions) => Promise constructor(methods: ImagePickerAdapter) { this.openCameraAsync = methods.openCameraAsync this.openImageLibraryAsync = methods.openImageLibraryAsync } }