export interface GeminiImageRequest {
    prompt: string;
    model?: 'gemini-3.0-pro' | 'gemini-3.1-flash';
    aspect_ratio?: 'landscape' | 'portrait' | 'square';
    seed?: number;
}
export interface GeminiImageVariationRequest {
    prompt: string;
    image: string;
    model?: 'gemini-3.0-pro' | 'gemini-3.1-flash';
    mime_type?: string;
    aspect_ratio?: 'landscape' | 'portrait' | 'square';
    seed?: number;
}
export declare class GeminiClient {
    private readonly apiKey;
    private readonly initialBackoffMs;
    constructor(apiKey: string, options?: {
        initialBackoffMs?: number;
    });
    /**
     * Creates a text-to-image job and polls until completion.
     * Returns the image URL.
     */
    generateAndWait(request: GeminiImageRequest): Promise<string>;
    /**
     * Generates an image from prompt + optional reference images (KIE-compatible interface).
     * If reference image URLs are provided, uses the variation endpoint with the first reference.
     * Maps KIE aspect ratios to Gemini format.
     */
    generateFromKIERequest(params: {
        prompt: string;
        aspectRatio?: string;
        model?: string;
        referenceImageUrls?: string[];
    }): Promise<string>;
    /**
     * Creates an image variation job and polls until completion.
     */
    generateVariationAndWait(request: GeminiImageVariationRequest): Promise<string>;
    /**
     * Downloads an image from URL and returns base64 data + mime type.
     */
    private downloadImageAsBase64;
    private createImageJob;
    private pollImageJob;
    private sendRequest;
}
export declare function createGeminiClient(apiKey: string): GeminiClient;
//# sourceMappingURL=gemini-client.d.ts.map