import type { CinemaSha256 } from './cinema-types.js'; export type CinemaReviewDecisionKind = 'note' | 'pass' | 'reject' | 'redesign'; export interface CinemaReviewDecision { decisionId: string; attemptId: string; shotId: string; kind: CinemaReviewDecisionKind; reviewerId: string; decidedAt: string; reason: string; timeSeconds: number | null; changedVariable: string | null; evidenceIds: string[]; storyPurposeVerified: boolean; contentHash: CinemaSha256; } export interface CinemaReviewLedgerArtifact { schemaVersion: 1; projectSlug: string; generatedAt: string; decisions: CinemaReviewDecision[]; } export interface CinemaReviewValidationIssue { code: string; path: string; message: string; } export interface CinemaReviewValidation { ok: boolean; issues: CinemaReviewValidationIssue[]; } export type CinemaReviewRole = 'reviewer' | 'editor' | 'director' | 'producer'; export interface CinemaReviewCommand { decisionId: string; projectSlug: string; attemptId: string; shotId: string; kind: CinemaReviewDecisionKind; authorizationToken: string; reason: string; timeSeconds: number | null; changedVariable: string | null; evidenceIds: string[]; storyPurposeVerified: boolean; decidedAt: string; } export interface CinemaVerifiedReviewAuthority { projectSlug: string; actorId: string; roles: CinemaReviewRole[]; evidenceId: string; verifiedAt: string; validUntil: string; } export type CinemaReviewAuthorityVerifier = (request: { projectSlug: string; attemptId: string; kind: CinemaReviewDecisionKind; authorizationToken: string; }) => Promise;