import { previewImage, getImageInfo, compressImage, chooseImage, chooseMessageFile } from '@tarojs/taro';
import { Ref } from 'vue';

export type ChooseImageOption = Partial<Pick<chooseImage.Option, 'count' | 'sizeType' | 'sourceType'>>;
export type PreviewImageOption = Pick<previewImage.Option, 'current' | 'urls'>;
export type ChooseImageAction = (option?: ChooseImageOption) => Promise<chooseImage.SuccessCallbackResult>;
export type PreviewImageAction = (option: PreviewImageOption) => Promise<TaroGeneral.CallbackResult>;
export type SaveImageToPhotosAlbumAction = (filePath: string) => Promise<TaroGeneral.CallbackResult>;
export type GetImageInfoAction = (src: string) => Promise<getImageInfo.SuccessCallbackResult>;
export type ChooseMessageFileAction = (count: number, type?: Pick<chooseMessageFile.Option, 'type'>, extend?: Pick<chooseMessageFile.Option, 'extension'>) => Promise<chooseMessageFile.SuccessCallbackResult>;
export type CompressImageAction = (src: string, quality?: number) => Promise<compressImage.SuccessCallbackResult>;
export type IFileInfo = Ref<Pick<chooseImage.SuccessCallbackResult, 'tempFilePaths' | 'tempFiles'>>;
export interface IAction {
    choose: ChooseImageAction;
    chooseMessageFile: ChooseMessageFileAction;
    preview: PreviewImageAction;
    save: SaveImageToPhotosAlbumAction;
    getInfo: GetImageInfoAction;
    compress: CompressImageAction;
}
declare function useImage(options: ChooseImageOption): [IFileInfo, IAction];
export default useImage;
