import type { AuthProfileStore } from "../agents/auth-profiles/types.js"; import type { OpenClawConfig } from "../config/types.openclaw.js"; import type { MediaNormalizationEntry } from "../media-generation/normalization.types.js"; export type MusicGenerationOutputFormat = "mp3" | "wav"; export type GeneratedMusicAsset = { buffer: Buffer; mimeType: string; fileName?: string; metadata?: Record; }; export type MusicGenerationSourceImage = { url?: string; buffer?: Buffer; mimeType?: string; fileName?: string; metadata?: Record; }; type MusicGenerationProviderConfiguredContext = { cfg?: OpenClawConfig; agentDir?: string; }; export type MusicGenerationRequest = { provider: string; model: string; prompt: string; cfg: OpenClawConfig; agentDir?: string; authStore?: AuthProfileStore; timeoutMs?: number; lyrics?: string; instrumental?: boolean; durationSeconds?: number; format?: MusicGenerationOutputFormat; inputImages?: MusicGenerationSourceImage[]; }; export type MusicGenerationResult = { tracks: GeneratedMusicAsset[]; model?: string; lyrics?: string[]; metadata?: Record; }; export type MusicGenerationIgnoredOverride = { key: "lyrics" | "instrumental" | "durationSeconds" | "format"; value: string | boolean | number; }; export type MusicGenerationMode = "generate" | "edit"; export type MusicGenerationModeCapabilities = { maxTracks?: number; maxDurationSeconds?: number; supportsLyrics?: boolean; supportsInstrumental?: boolean; supportsDuration?: boolean; supportsFormat?: boolean; supportedFormats?: readonly MusicGenerationOutputFormat[]; supportedFormatsByModel?: Readonly>; }; export type MusicGenerationEditCapabilities = MusicGenerationModeCapabilities & { enabled: boolean; maxInputImages?: number; }; export type MusicGenerationProviderCapabilities = MusicGenerationModeCapabilities & { maxInputImages?: number; generate?: MusicGenerationModeCapabilities; edit?: MusicGenerationEditCapabilities; }; export type MusicGenerationNormalization = { durationSeconds?: MediaNormalizationEntry; }; export type MusicGenerationProvider = { id: string; aliases?: string[]; label?: string; defaultModel?: string; models?: string[]; capabilities: MusicGenerationProviderCapabilities; isConfigured?: (ctx: MusicGenerationProviderConfiguredContext) => boolean; generateMusic: (req: MusicGenerationRequest) => Promise; }; export {};