/** * Graph-native stream gap recovery (#133 interim slice). * * The discrete/continuous law is the replay discriminator: only discrete * crossings are replayable graph events; continuous transients must NOT replay. * Recovery paths type-refuse continuous cells — widening the SSE replay payload * with signals is intentionally uncompilable. * * @module */ import type { StateCell, StateCellKind } from './state-cell.js'; import type { SignalSource } from './signal.js'; /** Only discrete/replayable cells may enter graph-native recovery paths (#133). */ export type ReplayableRecoveryCell = StateCell & { readonly replayable: true; readonly kind: 'discrete'; }; /** Narrow a {@link StateCell} to a replayable recovery entry, or `undefined`. */ export declare const asReplayableRecoveryCell: (cell: StateCell) => ReplayableRecoveryCell | undefined; /** * Classify a canonical {@link SignalSource} by the discrete/continuous replay law * (ADR-0035 / ROADMAP Epic 9). */ export declare function signalSourceKind(source: SignalSource): StateCellKind; /** * Classify an SSE signal frame payload (often ad-hoc, not a full {@link SignalSource}). */ export declare function signalPayloadKind(payload: unknown): StateCellKind; /** Whether a replay patch entry is morphable HTML (not a signal frame). */ export declare function isReplayHtmlPatch(patch: unknown): boolean; /** True when the replay array carries signal frames that need snapshot supplement. */ export declare const replayDroppedSignals: (patches: readonly unknown[]) => boolean; /** Extract replayable discrete signal payloads from a snapshot `signals` field. */ export declare function filterDiscreteSnapshotSignals(signals: unknown): readonly unknown[]; /** * Validate the snapshot `signals` field before graph-native recovery applies HTML. * Returns an error message when the field is missing or not an object/array. */ export declare function validateSnapshotSignalsField(signals: unknown): string | null; //# sourceMappingURL=stream-recovery.d.ts.map