import { Result } from './result';
/**
 * reference : https://stackoverflow.com/questions/20958078/resize-a-base-64-image-in-javascript-without-using-canvas
 * */
export declare function imageToCanvas(img: HTMLImageElement, width: number, height: number): HTMLCanvasElement;
export declare function imageToBase64(img: HTMLImageElement, width: number, height: number): string;
export declare function convertHeicFile(file: File): Promise<File>;
/** @alias convertHeicFile */
export declare const convertHeifFile: typeof convertHeicFile;
export declare function base64ToImage(data: string): Promise<HTMLImageElement>;
/**
 * TODO check if there are exceptions
 * */
export declare function checkBase64ImagePrefix(s: string): string;
/**
 * data type conversion
 * also work for resizing
 * FIXME wrap width and height into options object
 * */
export declare function base64ToCanvas(data: string, width?: number, height?: number): Promise<HTMLCanvasElement>;
export declare function resizeBase64Image(data: string, targetWidth: number, targetHeight: number): Promise<string>;
export interface ISize {
    width: number;
    height: number;
}
export declare function getWidthHeightFromBase64(data: string): Promise<ISize>;
export declare const ResizeTypes: {
    with_in: "with_in";
    at_least: "at_least";
};
export type ResizeType = keyof typeof ResizeTypes;
export declare function resizeWithRatio(oriSize: ISize, targetSize: ISize, mode: ResizeType): ISize;
export declare function resizeBase64WithRatio(data: string, preferredSize: ISize, mode: ResizeType): Promise<string>;
export declare function resizeImage(image: HTMLImageElement, maxWidth?: number, maxHeight?: number, mimeType?: string, quality?: number): base64;
export type base64 = string;
export declare function transformCentered(image: HTMLImageElement, flipXY: boolean, f: (ctx: CanvasRenderingContext2D) => void): HTMLCanvasElement;
export declare function rotateImage(image: HTMLImageElement): HTMLCanvasElement;
export declare function flipImage(image: HTMLImageElement, direction?: 'X' | 'Y' | 'horizontal' | 'vertical'): HTMLCanvasElement;
export declare function flipImageX(image: HTMLImageElement): HTMLCanvasElement;
export declare function flipImageY(image: HTMLImageElement): HTMLCanvasElement;
/**
 * extract mime type from base64/URLEncoded data component
 * e.g. data:image/jpeg;base64,... -> image/jpeg
 * */
export declare function dataURItoMimeType(dataURI: string): string;
/**
 * convert base64/URLEncoded data component to raw binary data held in a string
 * e.g. data:image/jpeg;base64,...
 * */
export declare function dataURItoBlob(dataURI: string): Blob;
export declare function dataURItoFile(dataURI: string, originalFile?: File): File;
/** simplified version of compressImageToBase64() / compressImageToBlob() */
export declare function compressImage(image: HTMLImageElement, mimeType?: string, quality?: number): base64;
export declare function compressImageToBase64(args: {
    image: HTMLImageElement;
    canvas?: HTMLCanvasElement;
    ctx?: CanvasRenderingContext2D;
    mimeType?: string;
    maximumLength?: number;
    quality?: number;
}): base64;
export declare function canvasToBlob(canvas: HTMLCanvasElement, mimeType?: string, quality?: number): Promise<Blob>;
export declare function compressImageToBlob(args: {
    image: HTMLImageElement;
    canvas?: HTMLCanvasElement;
    ctx?: CanvasRenderingContext2D;
    mimeType?: string;
    maximumSize?: number;
    quality?: number;
}): Promise<Blob>;
export declare function toImage(image: base64 | File | HTMLImageElement): Result<HTMLImageElement>;
export declare function compressMobilePhoto(args: {
    image: base64 | File | HTMLImageElement;
    maximumSize?: number;
    mimeType?: string;
    quality?: number;
}): Promise<base64>;
