import { InputAsset } from '../../types/node';
import type { AssetMentionMapping } from '../../utils';

export interface GenerationSettings {
    resolution: string;
    aspectRatio: string;
    duration: string;
    count: number;
    model: string;
    inspiration: boolean;
    styleId?: string;
    shotType?: 'single' | 'multi';
    enableAudio?: boolean;
    cameraControl?: string;
    voice?: string;
    musicPrompt?: string;
    lyricsModel?: string;
    musicModel?: string;
    musicTarget?: 'lyrics' | 'music';
    musicGenerateLyrics?: boolean;
    musicGenerateMusic?: boolean;
}

export type GenerationType = 'video' | 'image' | 'text' | 'audio' | 'music';

export interface InteractionInputProps {
  onGenerate?: (data: {
    type: GenerationType;
    prompt: string;
    settings: GenerationSettings;
    inputAssets?: InputAsset[];
    /** prompt 中使用 @别名 引用到的素材映射信息 */
    assetMappings?: AssetMentionMapping[];
  }) => Promise<void>;
}

export interface Role {
  id: string;
  name: string;
  avatar: string;
}
