import type { EventType } from "./archive-db.js"; interface BaseFields { workspace: string; orgSlug: string; /** Override timestamp for tests (ISO string). */ now?: string; } export interface RouteHitEvent extends BaseFields { message: string; agent: string; team: string; channel: "slash" | "keyword" | "freq" | "explicit"; matched: string; } export interface RouteMissEvent extends BaseFields { message: string; } export interface AuthorTurnEvent extends BaseFields { userId: string; state: string; turn: number; question?: string; answer?: string; } export interface SpawnDecisionEvent extends BaseFields { chosenAgent: string; rationale: string; candidates?: string[]; } export declare function recordRouteHit(event: RouteHitEvent): void; export declare function recordRouteMiss(event: RouteMissEvent): void; export declare function recordAuthorTurn(event: AuthorTurnEvent): void; export declare function recordSpawnDecision(event: SpawnDecisionEvent): void; /** Path the sink writes to — exposed for tests + archive-rotate ledger. */ export declare function getSinkPath(workspace: string, orgSlug: string): string; /** Sentinel for callers that need to validate event_type strings. */ export declare const ROUTE_EVENT_TYPES: ReadonlyArray; export {};