/** * The three QoS lanes carried on the one agentic channel, in STRICT priority * order: control/facts > interactive > bulk. * * The ordering is the contract: a bulk-output storm (relay chunks) must never * head-of-line-block a heartbeat or a blackboard write. The scheduler that * enforces this lives in S5; this module owns the canonical lane set, their * wire codes, and the priority comparison every scheduler derives from. */ export declare const QOS_LANES: readonly ["control", "interactive", "bulk"]; export type QosLane = (typeof QOS_LANES)[number]; export declare function isQosLane(value: unknown): value is QosLane; /** * On-wire lane codes. The numeric value is also the priority rank: a LOWER * code is HIGHER priority (control=0 outranks bulk=2). Do not renumber. */ export declare const LANE_CODES: { readonly control: 0; readonly interactive: 1; readonly bulk: 2; }; export declare function laneForCode(code: number): QosLane | undefined; /** Priority rank of a lane; lower is dispatched first. */ export declare function lanePriority(lane: QosLane): number; /** * Canonical scheduler ordering derived from the lane priorities: control before * interactive before bulk, ties broken by ascending `seq` so a single lane * drains in emission order. Returns <0 when `a` should be dispatched before `b`. */ export declare function compareFrameOrder(a: { readonly lane: QosLane; readonly seq: number; }, b: { readonly lane: QosLane; readonly seq: number; }): number;