import { Context, h, Session } from 'koishi';
import { ImageConfig, ImageEditOptions, ImageGenerationOptions, ImageGenerationResponse, ImageVariationOptions } from '../types';
export declare abstract class ImageAdapter<T extends keyof ImageAdapterType = keyof ImageAdapterType> {
    ctx: Context;
    abstract type: T;
    private modelCache;
    private readonly CACHE_DURATION;
    constructor(ctx: Context);
    abstract generateImage(config: ImageConfig<T>, options: ImageGenerationOptions, session?: Session): Promise<ImageGenerationResponse>;
    abstract editImage(config: ImageConfig<T>, options: ImageEditOptions, session?: Session): Promise<ImageGenerationResponse>;
    abstract createVariation(config: ImageConfig<T>, options: ImageVariationOptions, session?: Session): Promise<ImageGenerationResponse>;
    protected abstract _getModels(config: ImageConfig<T>): Promise<string[]>;
    getModels(config: ImageConfig<T>): Promise<string[]>;
    protected abstract getDefaultModels(): string[];
    supportsModel(config: ImageConfig<T>, model: string): Promise<boolean>;
    clearModelCache(config?: ImageConfig<T>): void;
    createImageElements(response: ImageGenerationResponse): Promise<h[]>;
}
export interface ImageAdapterType {
}
