import type { QualityIntelligenceFigma } from "@oscharko-dev/keiko-quality-intelligence";
import type { FigmaProvenance } from "./figmaConnector.js";
type ScreenIr = QualityIntelligenceFigma.ScreenIr;
/** The rendered image for one screen — raw bytes plus their content hash (tamper-evidence). */
export interface FigmaRenderedImage {
    readonly mimeType: "image/png";
    readonly bytes: Uint8Array;
    readonly byteLength: number;
    readonly sha256: string;
}
/** One assembled screen: the structural IR plus its render. */
export interface FigmaSnapshotScreen {
    readonly screenId: string;
    readonly ir: ScreenIr;
    readonly image: FigmaRenderedImage;
    /** sha256 over the canonical {screenId, ir, imageSha256} body — the per-screen drift identity. */
    readonly integrityHash: string;
}
/** Why a detected screen produced no render and was excluded from `screens` (partial-render). */
export type FigmaSkippedScreenReason = "render-url-missing" | "render-fetch-failed" | "render-empty" | "render-oversized";
export interface FigmaSkippedScreen {
    readonly screenId: string;
    readonly reason: FigmaSkippedScreenReason;
}
/**
 * The immutable Figma Snapshot value. `integrityHash` is DETERMINISTIC for drift detection
 * (#735): it is keyed on the pinned Figma `version` + the sorted per-screen identities, and
 * deliberately EXCLUDES the wall-clock `fetchedAt` so two snapshots of the same unchanged design
 * at different times hash identically. `provenance.fetchedAt` is retained for audit only.
 */
export interface FigmaSnapshot {
    readonly snapshotSchemaVersion: 1;
    readonly provenance: FigmaProvenance;
    readonly screens: readonly FigmaSnapshotScreen[];
    readonly skippedScreens: readonly FigmaSkippedScreen[];
    /**
     * Raw inter-screen transitions carried from the Screen-IR (#752) for the navigation/flow graph
     * (#811). OPTIONAL and additive — a constructor that omits it (e.g. an older builder or a test
     * fixture) yields a valid snapshot, and the navigation derivation degrades to zero nav items. NOT
     * part of `integrityHash` — non-identity design metadata, so it never affects drift (#735).
     * Downstream persistence stores it on the snapshot record additively.
     */
    readonly links?: readonly QualityIntelligenceFigma.InterScreenLink[];
    readonly integrityHash: string;
}
export {};
//# sourceMappingURL=figmaSnapshotTypes.d.ts.map