import type { SogniChatMessage } from '../runtime/chatTypes.js'; import type { ToolDefinition } from '../tools/definitions/types.js'; import { type TimeSignature } from '../media/musicSettings.js'; import { type PromptLimitViolation } from './promptLimits.js'; export interface LyricsGenerationResult { lyrics: string; tempo: number | null; key: string | null; timeSignature: TimeSignature | null; duration: number | null; caption: string | null; } export type MusicCompositionTarget = 'ace' | 'music3'; export interface MusicCompositionOptions { model?: MusicCompositionTarget; targetDurationSeconds?: number; } export declare const LYRICS_MAX_TOKENS = 2048; export declare const LYRICS_COMPOSITION_TOOL: ToolDefinition; export declare const INSTRUMENTAL_COMPOSITION_TOOL: ToolDefinition; export declare function buildLyricsMessages(prompt: string, language: string, musicPrompt: string, randomTheme?: string, options?: MusicCompositionOptions): SogniChatMessage[]; export declare function buildInstrumentalMessages(prompt: string, musicPrompt: string, randomTheme?: string, options?: MusicCompositionOptions): SogniChatMessage[]; export declare function parseToolCallResult(args: Record): LyricsGenerationResult; export declare function checkMusicCompositionLimits(result: Pick, options?: MusicCompositionOptions): PromptLimitViolation[]; export declare function buildMusicCompositionLengthRepairMessage(violations: readonly PromptLimitViolation[], options?: MusicCompositionOptions): SogniChatMessage; //# sourceMappingURL=musicComposition.d.ts.map