import type { RouteContext, RouteResult } from "../routes.js";
import { type UiHandlerDeps } from "../deps.js";
import { type FigmaConnectorMetrics, type FigmaScopeCoverage } from "./figma/index.js";
export interface FigmaSnapshotSummary {
    readonly runId: string;
    readonly fileKey: string;
    readonly nodeId: string;
    readonly version: string | undefined;
    readonly fetchedAt: string;
    /** Total screens included in the snapshot. */
    readonly screenCount: number;
    /** Screens that could not be rendered (partial build). */
    readonly skippedCount: number;
    /**
     * Human-readable reduction hint, e.g. "1 screen from 1 Figma node" or
     * "3 screens from 1 section (2 skipped)".
     */
    readonly reductionHint: string;
    /** Integrity hash over the snapshot content — deterministic for drift detection (#735). */
    readonly integrityHash: string;
    /**
     * Deep-fetch coverage telemetry (#837) — present on a freshly-built snapshot (POST response).
     * Lets the UI honestly report how much of a huge instance-heavy board was deep-fetched vs
     * truncated by the bounded per-screen budgets. Build-time only; never persisted in the snapshot.
     */
    readonly coverage?: FigmaScopeCoverage;
    /**
     * Operational metrics (#760) — present on a freshly-built snapshot (POST response): reduction
     * ratio, screen/render counts, design-token count, navigation-graph size (screens + transitions),
     * a11y-finding count, and the deterministic-vs-model augmentation share. All NUMBERS — never any
     * board content, screen name, token, or board id. Build-time only; not persisted in the snapshot.
     */
    readonly metrics?: FigmaConnectorMetrics;
    /**
     * Per-screen summary for the UI gallery. IR display names + image metadata only.
     * PNG bytes are NOT returned — the client shows a placeholder pending a future
     * screen-image route (/{runId}/screens/:index).
     */
    readonly screens: readonly FigmaScreenSummary[];
}
export interface FigmaScreenSummary {
    readonly screenId: string;
    /** Display name derived from the IR (ir.name). */
    readonly name: string;
    /** A brief structural description (field count, control count) for the gallery card. */
    readonly irSummary: string;
    /** Relative path of the side-file (informational). */
    readonly imageRelativePath: string;
    /** sha256 of the rendered PNG. */
    readonly imageSha256: string;
    /** Byte size of the rendered PNG. */
    readonly imageByteLength: number;
}
export declare function handleFigmaTriggerSnapshot(ctx: RouteContext, deps: UiHandlerDeps): Promise<RouteResult>;
export declare function handleFigmaRevokeToken(ctx: RouteContext, deps: UiHandlerDeps): RouteResult;
export declare function handleFigmaLoadSnapshot(ctx: RouteContext, deps: UiHandlerDeps): RouteResult;
//# sourceMappingURL=figmaSnapshotRoutes.d.ts.map