import { HTTP } from '@cordisjs/plugin-http';
import { ImageID, ImageIDs, ImgOps, MemeInfo, RenderMemeListRequest, RenderMemeRequest, RenderStatisticsRequest, UploadImageRequest } from './types';
export declare function reqCatchWrapper<T>(fn: () => Promise<HTTP.Response<T>>): Promise<T>;
export declare class MemeAPI {
    readonly http: HTTP;
    readonly imgOps: MemeAPI.ImageOperations;
    constructor(http: HTTP);
    uploadImage(data: UploadImageRequest): Promise<ImageID>;
    getImage(imageId: string): Promise<Blob>;
    getVersion(): Promise<string>;
    getKeys(): Promise<string[]>;
    getInfos(): Promise<MemeInfo[]>;
    searchMemes(query: string, includeTags?: boolean): Promise<string[]>;
    getInfo(key: string): Promise<MemeInfo>;
    renderPreview(key: string): Promise<ImageID>;
    renderMeme(key: string, data: RenderMemeRequest): Promise<ImageID>;
    renderList(data?: RenderMemeListRequest): Promise<ImageID>;
    renderStatistics(data: RenderStatisticsRequest): Promise<ImageID>;
}
export declare namespace MemeAPI {
    class ImageOperations {
        readonly http: HTTP;
        constructor(http: HTTP);
        inspect(imageId: string): Promise<ImgOps.InspectResponse>;
        flipHorizontal(imageId: string): Promise<ImageID>;
        flipVertical(imageId: string): Promise<ImageID>;
        rotate(imageId: string, extra: ImgOps.RotateRequestExtra): Promise<ImageID>;
        resize(imageId: string, extra: ImgOps.ResizeRequestExtra): Promise<ImageID>;
        crop(imageId: string, extra: ImgOps.CropRequestExtra): Promise<ImageID>;
        grayscale(imageId: string): Promise<ImageID>;
        invert(imageId: string): Promise<ImageID>;
        mergeHorizontal(imageIds: string[]): Promise<ImageID>;
        mergeVertical(imageIds: string[]): Promise<ImageID>;
        gifSplit(imageId: string): Promise<ImageIDs>;
        gifMerge(imageIds: string[], extra: ImgOps.GifMergeRequestExtra): Promise<ImageID>;
        gifReverse(imageId: string): Promise<ImageID>;
        gifChangeDuration(imageId: string, extra: ImgOps.GifChangeDurationRequestExtra): Promise<ImageID>;
    }
}
