interface StudioIntegrationConnection {
    status: string;
    providerId: string;
    connectorId: string;
}
type GenerationType = 'image' | 'video' | 'speech' | 'avatar' | 'transcription';
type GenerationStatus = 'pending' | 'running' | 'succeeded' | 'failed';
type MediaModelStatus = 'available' | 'limited' | 'unavailable';
interface Generation {
    id: string;
    type: string;
    prompt: string;
    result: string | null;
    model: string | null;
    cost: number | null;
    createdAt: Date | null;
    metadata: Record<string, unknown> | null;
}
interface MediaModelOption {
    id: string;
    name: string;
    provider?: string;
    type: GenerationType;
    status: MediaModelStatus;
    reason?: string;
}
interface MediaModelCatalogResponse {
    defaults: Record<GenerationType, string>;
    models: Record<GenerationType, MediaModelOption[]>;
    error?: string;
}
interface PublishPackage {
    caption: string;
    description: string;
    mentions: string[];
    destinations: string[];
    cadence: string;
    workflowDraft: boolean;
    evalContract: {
        artifactType: string;
        deterministicChecks: string[];
    };
}
interface PublishDestination {
    id: string;
    label: string;
    providerIds: string[];
    fields: string;
}
declare const GENERATION_TYPES: readonly GenerationType[];
declare function isGenerationType(value: string): value is GenerationType;
declare const DESTINATIONS: PublishDestination[];
declare const CADENCES: string[];
declare const MIN_IMAGE_COUNT = 1;
declare const MAX_IMAGE_COUNT = 4;
declare function relativeTime(date: Date | null): string;
declare function outputPathFor(type: GenerationType): string;
declare function generationVaultPath(generation: Generation): string | null;
declare function buildPublishPackage({ caption, postDescription, mentions, cadence, destinations, }: {
    caption: string;
    postDescription: string;
    mentions: string;
    cadence: string;
    destinations: string[];
}): PublishPackage | null;
declare function isPublishPackage(value: unknown): value is {
    caption?: string;
    description?: string;
    mentions?: string[];
    destinations?: string[];
    cadence?: string;
};
declare function isDestinationConnected(destination: PublishDestination, connections: StudioIntegrationConnection[]): boolean;
declare function selectedModelsWithDefaults(current: Partial<Record<GenerationType, string>>, catalog: MediaModelCatalogResponse): Partial<Record<GenerationType, string>>;
declare function preferredModelId(type: GenerationType, catalog: MediaModelCatalogResponse | null): string | undefined;
declare function modelMessage(model: MediaModelOption | undefined, loading: boolean, count: number): string | null;
interface GenerationRequestFields {
    workspaceId: string;
    clientRequestId: string;
    type: GenerationType;
    model: string;
    prompt: string;
    negativePrompt: string;
    outputPath: string;
    publishPackage: PublishPackage | null;
    image: {
        size: string;
        quality: string;
        count: number;
    };
    video: {
        duration: string;
        resolution: string;
        aspectRatio: string;
        referenceImageUrl: string;
    };
    speech: {
        voice: string;
    };
    avatar: {
        audioUrl: string;
        imageUrl: string;
        avatarId: string;
    };
    transcription: {
        audioUrl: string;
        language: string;
        responseFormat: string;
        temperature: string;
    };
}
declare function buildGenerationRequestBody(fields: GenerationRequestFields): Record<string, unknown>;
declare function generationStatus(generation: Generation): GenerationStatus;
declare function generationError(generation: Generation): string | null;
declare function generationMergeKey(generation: Generation): string | null;
declare function mergeLiveGeneration(current: Generation[], generation: Generation): Generation[];
declare function mergeLoaderAndLive(loader: Generation[], live: Generation[]): Generation[];
declare function isLocalGeneration(generation: Generation): boolean;
declare function latestBatchOf(generations: Generation[]): Generation[];
declare function userSafeGenerationMessage(message?: string): string;
declare function optimisticGeneration({ type, prompt, model, clientRequestId, outputIndex, outputCount, }: {
    type: GenerationType;
    prompt: string;
    model?: string;
    clientRequestId: string;
    outputIndex?: number;
    outputCount?: number;
}): Generation;
declare function failedOptimisticGeneration(generation: Generation): Generation;
declare function normalizeImageCount(value: unknown): number;

export { CADENCES, DESTINATIONS, GENERATION_TYPES, type Generation, type GenerationRequestFields, type GenerationStatus, type GenerationType, MAX_IMAGE_COUNT, MIN_IMAGE_COUNT, type MediaModelCatalogResponse, type MediaModelOption, type MediaModelStatus, type PublishDestination, type PublishPackage, type StudioIntegrationConnection, buildGenerationRequestBody, buildPublishPackage, failedOptimisticGeneration, generationError, generationMergeKey, generationStatus, generationVaultPath, isDestinationConnected, isGenerationType, isLocalGeneration, isPublishPackage, latestBatchOf, mergeLiveGeneration, mergeLoaderAndLive, modelMessage, normalizeImageCount, optimisticGeneration, outputPathFor, preferredModelId, relativeTime, selectedModelsWithDefaults, userSafeGenerationMessage };
