export declare const FIGMA_SNAPSHOT_SCHEMA_VERSION: 1;
/** A reference to one rendered screen image written as a binary side-file. */
export interface FigmaSnapshotImageRef {
    readonly mimeType: "image/png";
    /** Path RELATIVE to the per-run side-file subdir. */
    readonly relativePath: string;
    readonly sha256: string;
    readonly byteLength: number;
}
export type FigmaSnapshotSkipReason = "render-url-missing" | "render-fetch-failed" | "render-empty" | "render-oversized";
export interface FigmaSnapshotSkippedScreenRow {
    readonly screenId: string;
    readonly reason: FigmaSnapshotSkipReason;
}
export interface FigmaSnapshotScreenRow {
    readonly screenId: string;
    /** Opaque serialised Screen-IR (#752). Design content — kept, not redacted away. */
    readonly irJson: unknown;
    readonly image: FigmaSnapshotImageRef;
    readonly integrityHash: string;
}
/**
 * A raw inter-screen transition carried for the navigation/flow graph (#811). OPTIONAL and additive:
 * a record without `links` (e.g. an older snapshot) is still valid and the navigation derivation
 * degrades to zero nav items. NOT part of any integrity hash — `links` is non-identity design
 * metadata, so adding it does not change the drift hash (#735). Node ids + trigger are design content
 * (already redaction-safe); no token, secret, or url ever reaches this shape.
 */
export interface FigmaSnapshotLinkRow {
    readonly sourceNodeId: string;
    readonly trigger: string;
    readonly targetNodeId: string;
}
/** Token-free provenance carried for audit. `fetchedAt` is audit-only and NOT in any hash. */
export interface FigmaSnapshotProvenanceRow {
    readonly fileKey: string;
    readonly nodeId: string;
    readonly version: string | undefined;
    readonly fetchedAt: string;
}
export interface FigmaSnapshotRedactionSummary {
    readonly totalStringsScanned: number;
    readonly stringsRedacted: number;
    readonly patternsMatched: Readonly<Record<string, number>>;
}
export interface FigmaSnapshotRecord {
    readonly figmaSnapshotSchemaVersion: typeof FIGMA_SNAPSHOT_SCHEMA_VERSION;
    readonly runId: string;
    readonly provenance: FigmaSnapshotProvenanceRow;
    readonly screens: readonly FigmaSnapshotScreenRow[];
    readonly skippedScreens: readonly FigmaSnapshotSkippedScreenRow[];
    /** Raw inter-screen transitions for the navigation/flow graph (#811). Optional + additive. */
    readonly links?: readonly FigmaSnapshotLinkRow[];
    /**
     * The deterministic design-tokens artifact (#752) — colours, typography, spacing, radius — kept as
     * an opaque serialised value (like {@link FigmaSnapshotScreenRow.irJson}) so design-to-code (#755)
     * can consume the tokens from the STORED snapshot without re-deriving them (the structural style
     * fields they come from are pruned out of the lean per-screen IR). OPTIONAL + additive: a record
     * without `tokens` (an older snapshot) is still valid and code-gen emits an empty token table. NOT
     * part of any integrity hash — design tokens are non-identity design metadata, so adding them does
     * not change the drift hash (#735). Design content (no token/secret/url ever reaches this shape).
     */
    readonly tokens?: unknown;
    readonly integrityHash: string;
    readonly redactionSummary: FigmaSnapshotRedactionSummary;
}
export interface FigmaSnapshotValidationResult {
    readonly ok: boolean;
    readonly reason: string | undefined;
}
export declare function validateFigmaSnapshotRecord(value: unknown): FigmaSnapshotValidationResult;
//# sourceMappingURL=schema.d.ts.map