/** Browser-safe generation fields, validation and channel ownership. */ export declare const DEFAULT_IMAGE_BATCH_CONCURRENCY = 5; export declare const DEFAULT_GPU_API_BASE_URL = ""; export declare const DEFAULT_VOICE_BATCH_CONCURRENCY = 2; export declare const DEFAULT_VOICE_DESIGN_MODEL = "mimo-v2.5-tts-voicedesign"; export declare const DEFAULT_VOICE_DESIGN_BASE_URL = "https://api.xiaomimimo.com/v1"; export declare const DEFAULT_VOICE_REFERENCE_TEXT = "\u4F60\u597D\uFF0C\u6211\u4F1A\u7528\u81EA\u7136\u3001\u6E05\u6670\u7684\u58F0\u97F3\u8BB2\u597D\u6BCF\u4E00\u4E2A\u6545\u4E8B\u3002\u8BA9\u6211\u4EEC\u4E00\u8D77\u5F00\u59CB\u4ECA\u5929\u7684\u5947\u5999\u65C5\u7A0B\u5427\u3002"; export interface CrocoGenerationSettings { imageBatchConcurrency: number; gpuApiBaseUrl: string; characterApiUrl: string; voiceBatchConcurrency: number; voiceDesignModel: string; voiceDesignBaseUrl: string; voiceReferenceText: string; } export type GenerationField = keyof CrocoGenerationSettings; export declare const CHANNELS: readonly [{ readonly id: "gpu"; readonly credential: "GPU_API_TOKEN"; readonly fields: readonly ["gpuApiBaseUrl"]; }, { readonly id: "mimo"; readonly credential: "MIMO_API_KEY"; readonly fields: readonly ["voiceDesignBaseUrl", "voiceDesignModel", "voiceBatchConcurrency", "voiceReferenceText"]; }, { readonly id: "runware"; readonly credential: "RUNWARE_API_KEY"; readonly fields: readonly []; }, { readonly id: "characters"; readonly credential: "CROCO_CHARACTERS_API_TOKEN"; readonly fields: readonly ["characterApiUrl"]; }, { readonly id: "image-batch"; readonly credential: null; readonly fields: readonly ["imageBatchConcurrency"]; }]; export type Channel = typeof CHANNELS[number]; export type ChannelId = Channel["id"]; export interface ChannelStatus { configured: boolean; keyConfigured: boolean; writable: boolean; } /** A settings response contains non-secret fields and credential metadata only. */ export interface ChannelSnapshot { generation: CrocoGenerationSettings; channels: Record; } /** Normalize the HTTPS endpoint without accepting embedded credentials. */ export declare function normalizeGpuApiBaseUrl(value: unknown): string; /** Normalize a public character catalog URL without token-bearing URL fields. */ export declare function normalizeCharacterApiUrl(value: unknown): string; /** Validate only explicitly submitted non-secret fields before any write. */ export declare function normalizeGenerationPatch(payload: Record): Partial; /** Select and validate every field owned by one channel; credentials never enter settings. */ export declare function channelPatch(channel: Channel, input: Record): Partial; /** Check saved fields and saved credential status, without contacting a generation service. */ export declare function channelConfigured(channel: Channel, generation: CrocoGenerationSettings, keyConfigured: boolean): boolean;