import { MaterialItemWithMetadata } from "@/components/waterfall";

// 模板列表 list
export interface NodeTemplates {
    id: string;
    node_template_id: string
    name: string;
    description: string;
    model: string;
    prompt: string;
    created_at: string;
    updated_at: string;
    current_version_id: number;
    version: number;
    is_current_version: boolean
}

//模板详情
export interface NodeTemplateDetail extends NodeTemplates {
    material_infos: MaterialItemWithMetadata[]
    example_material_ids: string[]
    available_model_names: string[]
}

// 更新模板
export interface UpdateNodeTemplate {
    example_material_ids: string[];
}

export interface Shot {
    camera_direction: string;
    camera_movement: string;
    clip_id: number;
    composition: string;
    music_description: string;
    perspective: string;
    scene_name: string;
    scene_sequence: number;
    shot_description: string;
    shot_duration: string;
    shot_name: string;
    shot_sequence: number;
    shot_sizes: string;
    sound_effect: string;
    transition_in: string;
    voice_over: string;
}
// 图片的debug
interface CaptionResult {
    video_shots?: Shot[];
    caption_result: {
        common: {
            background: string;
        };
        daily_life: {
            activity: string;
            atmosphere: string;
            extra_elements: string;
            people_presence: string;
            scene: string;
        };
        person: {
            person_count: string;
            person_details: Array<{
                action: string;
                age: string;
                expression: string;
                gender: string;
                mood: string;
            }>;
            person_identity: string;
            scene: string;
        };
    };
}
export interface PhotosDebug {
    id: string,
    state: string,
    name: string,
    context: {
        input: Object,
        outputs: CaptionResult,
        metadata: Object,
    }

}

// prompt需要传参
export interface PromptParams {
    name: string,
    value_type: string,
    required: boolean,
    description: string
}

// input output
export interface InputOutput {
    is_async: boolean,
    name: string,
    context: {
        metadata: {},
        outputs: { raw_output?: JSON, metadata?: {} },
        inputs: {
            material_id: string,
            prompt: string
            model_name: string
        }
    }
}
