import type { Config } from '../../../config/schema.js';
import type { ImageProviderUiMetadata } from './image-provider-ui.js';
import type { ImageGenerationProviderCapabilities, ImageGenerationRequest, ImageGenerationResult } from './types.js';
/** Lifecycle context for {@link ImageGenerationProvider#isConfigured}. */
export interface ImageGenerationProviderConfiguredContext {
    cfg?: Config;
    agentDir?: string;
}
export interface ImageGenerationProvider {
    /** Lower-case provider id (registry key). */
    id: string;
    /** Optional aliases — alternate ids that resolve to this provider. */
    aliases?: string[];
    label?: string;
    defaultModel?: string;
    models?: string[];
    /** Provider capability map. */
    capabilities?: ImageGenerationProviderCapabilities;
    /**
     * Synchronous configuration check (Step 2 — was async in Step 1).
     * MUST NOT touch keychain or trigger OS prompts.
     */
    isConfigured?: (ctx: ImageGenerationProviderConfiguredContext) => boolean;
    /** Gateway console presets (regions / base URLs); defined by each bundled extension. */
    ui?: ImageProviderUiMetadata;
    generateImage(req: ImageGenerationRequest): Promise<ImageGenerationResult>;
}
export declare function registerImageGenerationProvider(provider: ImageGenerationProvider): void;
/**
 * Resolve a provider by id or alias.
 *
 * `cfg` is honoured to skip providers disabled via `cfg.extensions[<id>].enabled = false`.
 */
export declare function getImageGenerationProvider(providerId: string, cfg?: Config): ImageGenerationProvider | undefined;
export declare function listImageGenerationProviders(cfg?: Config): ImageGenerationProvider[];
export interface ImageGenerationProviderSummary {
    id: string;
    label?: string;
    defaultModel?: string;
    models: string[];
    aliases?: string[];
    capabilities?: ImageGenerationProviderCapabilities;
    ui?: ImageProviderUiMetadata;
}
export declare function listImageGenerationProvidersSummary(cfg?: Config): ImageGenerationProviderSummary[];
export declare function clearImageGenerationRegistryForTests(): void;
