export type StudioGoal = 'create-video' | 'creator-demo' | 'copy-reference' | 'presenter-video' | 'music-video' | 'ugc-campaign' | 'existing-project' | 'review-regenerate' | 'publish-deliver' | 'brand-campaign' | 'character-video'; export type StudioRiskLevel = 'low' | 'medium' | 'high'; export type StudioExecutionPolicy = 'dry-run-first' | 'plan-first' | 'approval-gated'; export type StudioCreatorPlatform = 'generic' | 'youtube-shorts' | 'tiktok' | 'instagram-reels'; export type StudioAspectRatio = '16:9' | '9:16' | '1:1'; export type StudioSourceMode = 'original-ai' | 'stock-assisted' | 'local-media'; export type StudioAudioMode = 'none' | 'narration' | 'music' | 'narration-and-music'; export type StudioExecutionIntent = 'plan' | 'render' | 'publish-package'; export interface StudioCreatorContract { platform: StudioCreatorPlatform; aspectRatio: StudioAspectRatio; durationSeconds: number; sourceMode: StudioSourceMode; audioMode: StudioAudioMode; executionIntent: StudioExecutionIntent; } export interface StudioInputRequirement { name: string; required: boolean; provided: boolean; description: string; value?: string | number | boolean; } export interface StudioCredentialRequirement { id: string; requiredForStepId: string; envVars: string[]; missingEnvVars: string[]; satisfied: boolean; requiredWhen: StudioExecutionIntent[]; description: string; } export interface StudioSpendRequirement { stepId: string; category: 'provider-render' | 'hosted-audio' | 'hosted-qc' | 'external-publish' | 'local-assembly'; anticipated: boolean; requiresConfirmation: boolean; estimatedUsd: number | null; description: string; } export interface StudioApprovalRequirement { type: 'storyboard' | 'review' | 'publish'; requiredBeforeStepId: string; status: 'pending' | 'satisfied' | 'not-required'; description: string; } export interface StudioOutputArtifact { stepId: string; kind: string; path: string; description: string; } export interface StudioCommandTemplate { id: string; title: string; primary: string; when: string; produces: string[]; credentialRequirements?: Array>; spendRequirement?: StudioSpendRequirement; approvalRequirement?: StudioApprovalRequirement; outputArtifacts?: StudioOutputArtifact[]; } export interface StudioRecipe { id: StudioGoal; title: string; goal: string; useWhen: string[]; requiredInputs: string[]; optionalInputs: string[]; commands: StudioCommandTemplate[]; riskLevel: StudioRiskLevel; executionPolicy: StudioExecutionPolicy; } export interface StudioProjectContext { projectExists: boolean; readinessReady?: boolean; readinessNextAction?: string; nextActionCount?: number; } export interface StudioPlanInput { goal?: StudioGoal; project?: string; title?: string; intent?: string; input?: string; client?: string; durationSeconds?: number; platform?: StudioCreatorPlatform; aspectRatio?: StudioAspectRatio; sourceMode?: StudioSourceMode; audioMode?: StudioAudioMode; executionIntent?: StudioExecutionIntent; dryRun: boolean; root: string; env?: Readonly>; projectContext?: StudioProjectContext; } export interface StudioPlanStep { id: string; title: string; command: string; reason: string; produces: string[]; requiresApproval: boolean; } export interface StudioPlan { schemaVersion: 1; dryRun: boolean; goal: StudioGoal; title: string; summary: string; missingInputs: string[]; warnings: string[]; creator?: StudioCreatorContract; inputRequirements?: StudioInputRequirement[]; credentialRequirements?: StudioCredentialRequirement[]; spendRequirements?: StudioSpendRequirement[]; approvalRequirements?: StudioApprovalRequirement[]; outputArtifacts?: StudioOutputArtifact[]; steps: StudioPlanStep[]; nextAction: string; } //# sourceMappingURL=types.d.ts.map