import type { CinemaSha256 } from './cinema-types.js'; export type CinemaQueueTaskKind = | 'image-generate' | 'image-repair' | 'video-generate' | 'audio-generate' | 'visual-qc' | 'identity-qc' | 'continuity-qc' | 'editorial-qc' | 'post-process' | 'assemble'; export type CinemaQueueTaskStatus = | 'awaiting-quote' | 'blocked' | 'ready' | 'waiting-lane' | 'leased' | 'submitting' | 'reconciling' | 'submitted' | 'polling' | 'downloading' | 'qc' | 'awaiting-review' | 'retry-ready' | 'dead-letter' | 'succeeded' | 'failed' | 'cancelled'; export interface CinemaQueuePayload { artifactIds: string[]; parameters: Record; } export interface CinemaQueueLaneOwnership { laneId: string; limit: number | null; ticketId: string | null; ticketState: 'none' | 'queued' | 'held'; position: number | null; etaSeconds: number | null; } export interface CinemaQueueLease { leaseId: string; workerId: string; acquiredAt: string; expiresAt: string; } export interface CinemaQueueProviderExecution { submissionKey: CinemaSha256; providerJobId: string | null; submittedAt: string | null; lastObservedAt: string; providerStatus: string; providerStatusEnvelope: Record; providerStatusHash: CinemaSha256; reconciliation: { required: boolean; reason: string | null; attempts: number; }; download: { temporaryPath: string | null; finalPath: string | null; contentHash: CinemaSha256 | null; byteLength: number | null; completedAt: string | null; }; } export interface CinemaQueueMoney { currency: string; amount: number; } export interface CinemaQueueTask { taskId: string; kind: CinemaQueueTaskKind; executionHash: CinemaSha256; payloadHash: CinemaSha256; payload: CinemaQueuePayload; status: CinemaQueueTaskStatus; dependencies: string[]; routeId: string; shotId?: string; attemptId?: string; lane: CinemaQueueLaneOwnership | null; lease: CinemaQueueLease | null; execution: CinemaQueueProviderExecution | null; createdAt: string; updatedAt: string; estimatedCost: CinemaQueueMoney; actualCost: CinemaQueueMoney; authorizationRequirement: 'none' | 'exact-quote'; spendAuthorizationId: string | null; evidenceIds: string[]; failure: { code: string; message: string; retryable: boolean; } | null; } export interface CinemaProductionQueueArtifact { schemaVersion: 1; projectSlug: string; generatedAt: string; tasks: CinemaQueueTask[]; }