import { z } from "zod";
import type { ExactDecisionScope } from "../../../schema/src/decisions/scope.js";
import type { Finding } from "../../../schema/src/records/finding.js";
import type { ReportData } from "../build/types.js";
import type { ReviewDraft, StagedDecisionEntry } from "./types.js";
export declare const PROMOTION_REQUEST_VERSION: "promotion-request/v1";
export declare const PROMOTION_REQUESTS_RELATIVE_DIR: ".invariantum/promotion-requests";
export declare const promotionPreviewSchema: z.ZodObject<{
    promotable: z.ZodBoolean;
    autoDerived: z.ZodBoolean;
    contractId: z.ZodOptional<z.ZodString>;
    contractVersion: z.ZodOptional<z.ZodString>;
    oracleRef: z.ZodOptional<z.ZodObject<{
        kind: z.ZodLiteral<"detector">;
        detector: z.ZodObject<{
            id: z.ZodString;
            version: z.ZodString;
        }, z.core.$strict>;
    }, z.core.$strict>>;
    calibrationEvidenceRef: z.ZodOptional<z.ZodObject<{
        relativePath: z.ZodString;
        contentHash: z.ZodString;
    }, z.core.$strict>>;
    nextRunBlockingEffect: z.ZodOptional<z.ZodString>;
    reasonNotPromotable: z.ZodOptional<z.ZodString>;
}, z.core.$strict>;
export type PromotionPreview = z.infer<typeof promotionPreviewSchema>;
export declare const promotionRequestSchema: z.ZodObject<{
    schemaVersion: z.ZodLiteral<"promotion-request/v1">;
    findingId: z.ZodString;
    evidenceFingerprint: z.ZodString;
    stagedAt: z.ZodString;
    autoDerived: z.ZodLiteral<true>;
    draftContract: z.ZodType<{
        version: string;
        applicableScope: {
            kind: "exact";
            detector: {
                id: string;
                version: string;
            };
            target: {
                kind: "exact";
                canonicalTarget: string;
            };
            context: {
                kind: "api" | "cli" | "worker" | "stream" | "filesystem" | "package" | "deployment" | "browser";
                dimensions: {
                    key: string;
                    value: string;
                }[];
            };
            contractVersion: {
                id: string;
                version: string;
            } | null;
        } | {
            kind: "reviewed-policy";
            policyId: string;
            detector: {
                id: string;
                version: string;
            };
            target: {
                kind: "glob";
                canonicalGlob: string;
            } | {
                kind: "exact";
                canonicalTarget: string;
            };
            context: {
                kinds: ("api" | "cli" | "worker" | "stream" | "filesystem" | "package" | "deployment" | "browser")[];
                dimensions: {
                    key: string;
                    operator: "equals" | "one-of";
                    values: string[];
                }[];
            };
            contractVersion: {
                id: string;
                version: string;
            } | null;
            justification: string;
            expiresAt: string;
        };
        schemaVersion: "contract/v1";
        id: string;
        kind: "confirmed" | "inferred";
        status: "draft" | "active" | "superseded";
        provenance: {
            sourceDecisionId?: string | undefined;
            evidenceFingerprint?: string | undefined;
            derivedFrom?: string | undefined;
        };
        oracleRef: {
            kind: "detector";
            detector: {
                id: string;
                version: string;
            };
        };
        calibrationEvidenceRef: {
            relativePath: string;
            contentHash: string;
        };
        reviewer: string;
        effectiveAt: string;
        supersessionHistory: {
            contractId: string;
            contractVersion: string;
            reason?: string | undefined;
        }[];
    }, unknown, z.core.$ZodTypeInternals<{
        version: string;
        applicableScope: {
            kind: "exact";
            detector: {
                id: string;
                version: string;
            };
            target: {
                kind: "exact";
                canonicalTarget: string;
            };
            context: {
                kind: "api" | "cli" | "worker" | "stream" | "filesystem" | "package" | "deployment" | "browser";
                dimensions: {
                    key: string;
                    value: string;
                }[];
            };
            contractVersion: {
                id: string;
                version: string;
            } | null;
        } | {
            kind: "reviewed-policy";
            policyId: string;
            detector: {
                id: string;
                version: string;
            };
            target: {
                kind: "glob";
                canonicalGlob: string;
            } | {
                kind: "exact";
                canonicalTarget: string;
            };
            context: {
                kinds: ("api" | "cli" | "worker" | "stream" | "filesystem" | "package" | "deployment" | "browser")[];
                dimensions: {
                    key: string;
                    operator: "equals" | "one-of";
                    values: string[];
                }[];
            };
            contractVersion: {
                id: string;
                version: string;
            } | null;
            justification: string;
            expiresAt: string;
        };
        schemaVersion: "contract/v1";
        id: string;
        kind: "confirmed" | "inferred";
        status: "draft" | "active" | "superseded";
        provenance: {
            sourceDecisionId?: string | undefined;
            evidenceFingerprint?: string | undefined;
            derivedFrom?: string | undefined;
        };
        oracleRef: {
            kind: "detector";
            detector: {
                id: string;
                version: string;
            };
        };
        calibrationEvidenceRef: {
            relativePath: string;
            contentHash: string;
        };
        reviewer: string;
        effectiveAt: string;
        supersessionHistory: {
            contractId: string;
            contractVersion: string;
            reason?: string | undefined;
        }[];
    }, unknown>>;
    decisionRef: z.ZodObject<{
        id: z.ZodString;
        scope: z.ZodCustom<{
            kind: "exact";
            detector: {
                id: string;
                version: string;
            };
            target: {
                kind: "exact";
                canonicalTarget: string;
            };
            context: {
                kind: "api" | "cli" | "worker" | "stream" | "filesystem" | "package" | "deployment" | "browser";
                dimensions: {
                    key: string;
                    value: string;
                }[];
            };
            contractVersion: {
                id: string;
                version: string;
            } | null;
        }, {
            kind: "exact";
            detector: {
                id: string;
                version: string;
            };
            target: {
                kind: "exact";
                canonicalTarget: string;
            };
            context: {
                kind: "api" | "cli" | "worker" | "stream" | "filesystem" | "package" | "deployment" | "browser";
                dimensions: {
                    key: string;
                    value: string;
                }[];
            };
            contractVersion: {
                id: string;
                version: string;
            } | null;
        }>;
        reason: z.ZodOptional<z.ZodString>;
        decidedAt: z.ZodString;
    }, z.core.$strict>;
    orchestratorCommand: z.ZodLiteral<"promote-contract">;
}, z.core.$strict>;
export type PromotionRequest = z.infer<typeof promotionRequestSchema>;
export declare class PromotionError extends Error {
    readonly code: string;
    constructor(code: string, message: string);
}
export declare function buildPromotionPreviewFromStaged(staged: StagedDecisionEntry, finding: Finding): PromotionPreview;
export declare function buildPromotionPreview(reportDir: string, reportData: ReportData, findingId: string): Promise<PromotionPreview>;
export declare function promotionRequestPath(reportDir: string, findingId: string): string;
export declare function loadPromotionRequest(reportDir: string, findingId: string): Promise<PromotionRequest>;
export declare function stagePromotionRequest(reportDir: string, reportData: ReportData, findingId: string): Promise<ReviewDraft>;
export declare function buildPromotionPreviewsForDraft(reportData: ReportData, draft: ReviewDraft): Record<string, PromotionPreview>;
export declare function defaultExactScopeForFinding(finding: Finding): ExactDecisionScope;
//# sourceMappingURL=promotion.d.ts.map