export interface ImageID {
    image_id: string;
}
export interface ImageIDs {
    image_ids: string[];
}
export interface ParserFlags {
    short: boolean;
    long: boolean;
    short_aliases: string[];
    long_aliases: string[];
}
export type MemeOptionType = 'boolean' | 'integer' | 'float' | 'string';
export interface MemeOption {
    type: MemeOptionType;
    name: string;
    default: boolean | number | string | null;
    description?: string | null;
    parser_flags: ParserFlags;
    choices?: string[] | null;
    minimum?: number | null;
    maximum?: number | null;
}
export interface MemeParams {
    min_images: number;
    max_images: number;
    min_texts: number;
    max_texts: number;
    default_texts: string[];
    options: MemeOption[];
}
export interface MemeShortcut {
    pattern: string;
    humanized: string | null;
    names: string[];
    texts: string[];
    options: Record<string, any>;
}
export interface MemeInfo {
    key: string;
    params: MemeParams;
    keywords: string[];
    shortcuts: MemeShortcut[];
    tags: string[];
    date_created: string;
    date_modified: string;
}
export interface UploadImageByUrlRequest {
    type: 'url';
    url?: string;
    headers?: Record<string, string>;
}
export interface UploadImageByPathRequest {
    type: 'path';
    path?: string;
}
export interface UploadImageByDataRequest {
    type: 'data';
    data?: string;
}
export type UploadImageRequest = UploadImageByUrlRequest | UploadImageByPathRequest | UploadImageByDataRequest;
export interface MemeImage {
    name: string;
    id: string;
}
export interface RenderMemeRequest {
    images: MemeImage[];
    texts: string[];
    options: Record<string, any>;
}
export interface MemeProperties {
    disabled?: boolean;
    hot?: boolean;
    new?: boolean;
}
export type MemeListSortBy = 'key' | 'keywords' | 'keywords_pinyin' | 'date_created' | 'date_modified';
export declare const memeListSortByVals: ["key", "keywords", "keywords_pinyin", "date_created", "date_modified"];
export interface RenderMemeListRequest {
    meme_properties?: Record<string, MemeProperties>;
    exclude_memes?: string[];
    sort_by?: MemeListSortBy;
    sort_reverse?: boolean;
    text_template?: string;
    add_category_icon: boolean;
}
export type MemeStatisticsType = 'meme_count' | 'time_count';
export interface RenderStatisticsRequest {
    title: string;
    statistics_type: MemeStatisticsType;
    data: [string, number][];
}
export declare const errorCodeDesc: {
    410: string;
    420: string;
    510: string;
    520: string;
    530: string;
    540: string;
    550: string;
    551: string;
    560: string;
    570: string;
};
export type PossibleMemeErrorCode = keyof typeof errorCodeDesc;
export declare const possibleMemeErrorCodes: PossibleMemeErrorCode[];
export interface BaseMemeErrorResponse<C extends PossibleMemeErrorCode, D extends Record<string, any> = {}> {
    code: C;
    message: string;
    data: D;
}
export interface MemeCommonErrorData {
    error: string;
}
export interface MemePathErrorData {
    path: string;
}
export interface MemeNumberMismatchData {
    min: number;
    max: number;
    actual: number;
}
export interface MemeTextErrorData {
    text: string;
}
export interface MemeFeedbackErrorData {
    feedback: string;
}
export interface RequestErrorResponse extends BaseMemeErrorResponse<410, MemeCommonErrorData> {
}
export interface IOErrorResponse extends BaseMemeErrorResponse<420, MemeCommonErrorData> {
}
export interface ImageDecodeErrorResponse extends BaseMemeErrorResponse<510, MemeCommonErrorData> {
}
export interface ImageEncodeErrorResponse extends BaseMemeErrorResponse<520, MemeCommonErrorData> {
}
export interface ImageAssetMissingErrorResponse extends BaseMemeErrorResponse<530, MemePathErrorData> {
}
export interface DeserializeErrorResponse extends BaseMemeErrorResponse<540, MemeCommonErrorData> {
}
export interface ImageNumberMismatchErrorResponse extends BaseMemeErrorResponse<550, MemeNumberMismatchData> {
}
export interface TextNumberMismatchErrorResponse extends BaseMemeErrorResponse<551, MemeNumberMismatchData> {
}
export interface TextOverLengthErrorResponse extends BaseMemeErrorResponse<560, MemeTextErrorData> {
}
export interface MemeFeedbackErrorResponse extends BaseMemeErrorResponse<570, MemeFeedbackErrorData> {
}
export type MemeErrorResponse = RequestErrorResponse | IOErrorResponse | ImageDecodeErrorResponse | ImageEncodeErrorResponse | ImageAssetMissingErrorResponse | DeserializeErrorResponse | ImageNumberMismatchErrorResponse | TextNumberMismatchErrorResponse | TextOverLengthErrorResponse | MemeFeedbackErrorResponse;
export declare namespace ImgOps {
    interface RotateRequestExtra {
        degrees?: number | null;
    }
    interface ResizeRequestExtra {
        width?: number | null;
        height?: number | null;
    }
    interface CropRequestExtra {
        left?: number | null;
        top?: number | null;
        right?: number | null;
        bottom?: number | null;
    }
    interface GifMergeRequestExtra {
        duration?: number | null;
    }
    interface GifChangeDurationRequestExtra {
        duration?: number | null;
    }
    interface InspectResponse {
        width: number;
        height: number;
        is_multi_frame: boolean;
        frame_count: number | null;
        average_duration: number | null;
    }
}
