Voice / frontend /src /types.ts
Thang6822
Deploy OmniVoice Docker Space
342571f
Raw
History Blame Contribute Delete
2.93 kB
export type RuntimeMode = 'production' | 'internal' | 'self_hosted';
export type FeatureId =
| 'playground'
| 'audio_studio'
| 'video_studio'
| 'post_production'
| 'audio_export'
| 'video_export';
export interface CapabilityBanner {
tone: string;
title: string;
message: string;
}
export interface CapabilitySnapshot {
runtime_mode: RuntimeMode;
license: {
state: 'not_configured' | 'valid' | 'invalid' | 'dev_override';
source: string;
};
features: Record<FeatureId, boolean>;
ui: {
show_runtime_help: boolean;
banner: CapabilityBanner | null;
};
}
export interface AudioSpeakerProfile {
speaker_id: string;
display_name: string;
mode: 'instruct' | 'clone';
instruct: string;
ref_audio_filename?: string | null;
ref_text?: string | null;
}
export interface AudioLine {
id: string;
speaker: string;
text: string;
render_filename?: string | null;
render_duration_seconds?: number | null;
render_updated_at?: number | null;
}
export interface AudioMixdown {
id: string;
filename: string;
format: 'wav' | 'mp3';
duration_seconds: number;
created_at: number;
}
export interface AudioProject {
id: string;
name: string;
gap_ms: number;
lines: AudioLine[];
speaker_profiles: Record<string, AudioSpeakerProfile>;
mixdowns: AudioMixdown[];
created_at: number;
updated_at: number;
}
export interface ProjectSummary {
id: string;
name: string;
updated_at: number;
}
export interface VideoAsset {
id: string;
filename: string;
original_name: string;
media_type: string;
uploaded_at: number;
}
export interface VideoScene {
id: string;
title: string;
text: string;
visual_prompt: string;
asset_id?: string | null;
duration_seconds: number;
}
export interface VideoPreview {
id: string;
filename: string;
duration_seconds: number;
created_at: number;
}
export interface VideoProject {
id: string;
name: string;
aspect_ratio: '9:16' | '16:9';
width: number;
height: number;
scenes: VideoScene[];
assets: VideoAsset[];
previews: VideoPreview[];
created_at: number;
updated_at: number;
}
export interface TimelineItem {
id: string;
title: string;
source_video_project_id?: string | null;
asset_filename?: string | null;
duration_seconds: number;
}
export interface PostPreview {
id: string;
filename: string;
created_at: number;
duration_seconds: number;
}
export interface PostExport {
id: string;
filename: string;
created_at: number;
duration_seconds: number;
}
export interface PostProject {
id: string;
name: string;
aspect_ratio: '9:16' | '16:9';
width: number;
height: number;
source_video_project_id?: string | null;
source_audio_project_id?: string | null;
audio_mixdown_filename?: string | null;
timeline: TimelineItem[];
previews: PostPreview[];
exports: PostExport[];
created_at: number;
updated_at: number;
}