/**
 * Surface performance domain state — tracks render performance,
 * frame rates, and input responsiveness metrics across host UIs.
 */
/** Render budget status. */
export type RenderBudgetStatus = 'ok' | 'warning' | 'critical';
/** A single render cycle record. */
export interface RenderCycleRecord {
    /** Sequential render cycle ID. */
    cycleId: number;
    /** Epoch ms when the render was requested. */
    requestedAt: number;
    /** Epoch ms when the render completed. */
    completedAt: number;
    /** Render duration in ms. */
    durationMs: number;
    /** Whether the render exceeded the budget. */
    overBudget: boolean;
}
/** Input latency sample. */
export interface InputLatencySample {
    /** Epoch ms when the key event was received. */
    keyEventAt: number;
    /** Epoch ms when the UI responded to the input. */
    respondedAt: number;
    /** Latency in ms. */
    latencyMs: number;
}
/**
 * SurfacePerfDomainState — host-surface render and input performance metrics.
 */
export interface SurfacePerfDomainState {
    /** Monotonic revision counter; increments on every mutation. */
    revision: number;
    /** Timestamp of last mutation (Date.now()). */
    lastUpdatedAt: number;
    /** Subsystem that triggered the last mutation. */
    source: string;
    /** Total render cycles since session start. */
    totalRenderCycles: number;
    /** Moving average render duration in ms (last 20 cycles). */
    avgRenderMs: number;
    /** Maximum render duration observed. */
    maxRenderMs: number;
    /** Number of render cycles that exceeded budget. */
    overBudgetCount: number;
    /** Current render budget status. */
    budgetStatus: RenderBudgetStatus;
    /** Target render budget in ms (default: 16ms for ~60fps). */
    targetBudgetMs: number;
    /** Ring buffer of recent render cycles. */
    recentCycles: RenderCycleRecord[];
    /** Maximum number of render cycles to keep. */
    maxCycleBuffer: number;
    /** Moving average input response latency in ms. */
    avgInputLatencyMs: number;
    /** Maximum observed input latency in ms. */
    maxInputLatencyMs: number;
    /** Ring buffer of recent input latency samples. */
    recentInputLatency: InputLatencySample[];
    /** Bun process heap usage in bytes (polled). */
    heapUsedBytes: number;
    /** Bun process RSS in bytes. */
    rssBytes: number;
    /** Epoch ms of the last memory sample. */
    lastMemorySampleAt?: number;
}
/**
 * Returns the default initial state for the surface performance domain.
 */
export declare function createInitialSurfacePerfState(): SurfacePerfDomainState;
//# sourceMappingURL=surface-perf.d.ts.map