import type { PortableTool } from "../portable-tool.js";
export declare const MUSIC_GENERATE_TOOL_NAME: "music_generate";
export interface MusicGenerateToolParams {
    prompt: string;
    purpose?: string;
    style?: string;
    lyrics?: string;
    duration?: number;
    is_instrumental?: boolean;
    cover_audio_url?: string;
    audio_format?: string;
}
export declare const MUSIC_GENERATE_TOOL_SCHEMA: {
    readonly type: "object";
    readonly properties: {
        readonly prompt: {
            readonly type: "string";
            readonly description: string;
        };
        readonly purpose: {
            readonly type: "string";
            readonly description: "Intended use: 'background-music', 'ringtone', 'short-video-bgm', 'full-song', 'notification-sound', etc.";
        };
        readonly style: {
            readonly type: "string";
            readonly description: "Musical style/genre: 'lo-fi', 'pop', 'rock', 'jazz', 'classical', 'electronic', 'ambient', etc.";
        };
        readonly lyrics: {
            readonly type: "string";
            readonly description: "Optional lyrics for vocal music. Structure with [verse], [chorus], [bridge] tags if desired.";
        };
        readonly duration: {
            readonly type: "number";
            readonly description: "Duration in seconds (5-300). Infer from purpose: ringtone 15-30s, BGM 30-60s, full song 120-180s.";
        };
        readonly is_instrumental: {
            readonly type: "boolean";
            readonly description: "Set true for pure instrumental music without vocals. Defaults to true when no lyrics are provided.";
        };
        readonly cover_audio_url: {
            readonly type: "string";
            readonly description: string;
        };
        readonly audio_format: {
            readonly type: "string";
            readonly enum: readonly ["mp3", "wav", "flac"];
            readonly description: "Output audio format. Defaults to mp3.";
        };
    };
    readonly required: readonly ["prompt"];
};
export interface MusicGenerateResult {
    mediaUrls: string[];
    model?: string;
    durationMs?: number;
}
/** Deps injected by the host runtime for music generation. */
export interface MusicGenerateToolDeps {
    /**
     * Generate music via the configured backend.
     * The host handles model selection, failover, and storage.
     */
    generateMusic(params: {
        prompt: string;
        purpose?: string;
        style?: string;
        lyrics?: string;
        duration?: number;
        isInstrumental?: boolean;
        audioUrl?: string;
        audioFormat?: string;
    }): Promise<MusicGenerateResult>;
    /**
     * Optional: auto-generate lyrics from a prompt (MiniMax Lyrics Generation API).
     * When provided, the tool will auto-call this when no lyrics are supplied
     * and the song is not marked as instrumental.
     */
    generateLyrics?: (prompt: string) => Promise<string>;
}
export declare function createMusicGenerateTool(deps: MusicGenerateToolDeps): PortableTool<MusicGenerateToolParams>;
