import type { ActivationDecisionRecord } from './activation-control-types.js'; export interface PromotionEvidenceSnapshot { snapshotId: string; snapshotDigest: string; artifactDigest: string; lineageRefs: string[]; hostRuntimeVersion: string; safetyGateResults: { checkId: string; status: 'passed' | 'failed'; reasonCode?: string; }[]; shadowSummary: { observed: number | null; matched: number | null; wouldBlock: number | null; wouldAllow: number | null; requireApproval: number | null; autoCorrect: number | null; errors: number | null; neutralControl: number | null; firstObservedAt: string | null; lastObservedAt: string | null; }; configurationVersion: string; redaction: { version: string; rawParametersStored: false; }; createdAt: string; } export interface PromotionFailedCheck { checkId: string; reasonCode: string; } export interface PromotionReadinessResult { status: 'ready' | 'evidence_insufficient' | 'blocked' | 'unavailable'; evaluationId: string; artifactId: string; artifactDigest: string; evidenceSnapshot: PromotionEvidenceSnapshot; failedChecks: PromotionFailedCheck[]; } export interface OwnerPromotionActor { principal: ActivationDecisionRecord['principal']; authentication: ActivationDecisionRecord['authentication']; operator?: ActivationDecisionRecord['operator']; } export interface OwnerPromotionRequest { activationId: string; expectedArtifactId: string; expectedArtifactDigest: string; expectedControlVersion: number; idempotencyKey: string; reasonCode: string; note?: string; confirmed: boolean; dryRun?: boolean; } export interface PromotionCommitInput { decision: ActivationDecisionRecord; evidenceSnapshot: PromotionEvidenceSnapshot; readinessEvaluationId: string; evidenceSnapshotDigest: string; expectedControlVersion: number; idempotencyKey: string; } export type OwnerPromotionResult = { ok: true; decision: 'promoted'; activationId: string; decisionId: string; promotedAt: string; } | { ok: true; decision: 'would_promote'; activationId: string; readinessEvaluationId: string; evidenceSnapshotDigest: string; } | { ok: false; reasonCode: string; summary: string; failedChecks: PromotionFailedCheck[]; nextAction: string; }; export interface RuleCodeOwnerDecisionServiceDeps { ownerLiveDecisionEnabled(): boolean; safetyControlsEnabled(): boolean; evaluateReadiness(input: OwnerPromotionRequest): Promise; commitPromotion(input: PromotionCommitInput): Promise<{ activationId: string; decisionId: string; promotedAt: string; }>; newDecisionId(): string; now(): string; } export declare class RuleCodeOwnerDecisionService { private readonly deps; constructor(deps: RuleCodeOwnerDecisionServiceDeps); promote(request: OwnerPromotionRequest, actor: OwnerPromotionActor): Promise; } //# sourceMappingURL=rulecode-owner-decision-service.d.ts.map