/** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
export type MediaProviderCapability = 'metadata' | 'understand' | 'transform' | 'generate' | 'attachment-store';
export type MediaProviderState = 'healthy' | 'degraded' | 'disabled' | 'unconfigured';
export interface MediaArtifact {
    readonly id?: string;
    readonly artifactId?: string;
    readonly mimeType: string;
    readonly dataBase64?: string;
    readonly uri?: string;
    readonly filename?: string;
    readonly sizeBytes?: number;
    readonly sha256?: string;
    readonly metadata: Record<string, unknown>;
}
export interface MediaProviderStatus {
    readonly id: string;
    readonly label: string;
    readonly state: MediaProviderState;
    readonly capabilities: readonly MediaProviderCapability[];
    readonly configured: boolean;
    readonly detail?: string;
    readonly metadata: Record<string, unknown>;
}
export interface MediaAnalysisRequest {
    readonly artifact: MediaArtifact;
    readonly prompt?: string;
    readonly modelId?: string;
    readonly metadata?: Record<string, unknown>;
}
export interface MediaAnalysisResult {
    readonly providerId: string;
    readonly description?: string;
    readonly labels?: readonly string[];
    readonly text?: string;
    readonly metadata: Record<string, unknown>;
}
export interface MediaTransformRequest {
    readonly artifact: MediaArtifact;
    readonly operation: string;
    readonly outputMimeType?: string;
    readonly options?: Record<string, unknown>;
    readonly metadata?: Record<string, unknown>;
}
export interface MediaTransformResult {
    readonly providerId: string;
    readonly artifact: MediaArtifact;
    readonly metadata: Record<string, unknown>;
}
export interface MediaGenerationRequest {
    readonly prompt: string;
    readonly outputMimeType?: string;
    readonly modelId?: string;
    readonly options?: Record<string, unknown>;
    readonly metadata?: Record<string, unknown>;
}
export interface MediaGenerationResult {
    readonly providerId: string;
    readonly artifacts: readonly MediaArtifact[];
    readonly metadata: Record<string, unknown>;
}
export interface MediaProvider {
    readonly id: string;
    readonly label: string;
    readonly capabilities: readonly MediaProviderCapability[];
    status?(): Promise<MediaProviderStatus> | MediaProviderStatus;
    analyze?(request: MediaAnalysisRequest): Promise<MediaAnalysisResult>;
    transform?(request: MediaTransformRequest): Promise<MediaTransformResult>;
    generate?(request: MediaGenerationRequest): Promise<MediaGenerationResult>;
}
export interface MediaProviderDescriptor {
    readonly id: string;
    readonly label: string;
    readonly capabilities: readonly MediaProviderCapability[];
}
export declare class MediaProviderRegistry {
    private readonly providers;
    register(provider: MediaProvider, options?: {
        readonly replace?: boolean;
    }): () => void;
    unregister(id: string): boolean;
    get(id: string): MediaProvider | null;
    list(): MediaProviderDescriptor[];
    findProvider(capability: MediaProviderCapability, providerId?: string): MediaProvider | null;
    status(): Promise<MediaProviderStatus[]>;
}
//# sourceMappingURL=provider-registry.d.ts.map