import { type RouteEntry } from "./shared.js"; /** Constant-time string equality via WebCrypto, matching the webhook HMAC path (which leans on crypto.subtle.verify for the same guarantee). HMACs both inputs under a random per-process key so the digests are equal-length 32-byte values regardless of input length — equal digests iff equal inputs (SHA-256 collision resistance) — and the byte compare leaks neither length nor content through timing. Replaces the `===` bearer compare, a classic timing oracle. */ export declare function timingSafeEqual(a: string, b: string): Promise; /** External-event ingress. Mounted with the automations subsystem, and absent without it — a delivery to a deployment that does not run automations is a 404 rather than a door that accepts the event and drops it. */ export declare const webhookRoutes: RouteEntry[]; /** THE firing door, and the only wake endpoint there is. Matches on the RAW path ahead of any segment decoding, exactly like the old chain. It lives here rather than with the webhook door because it also drives the hosted session sweep, which every deployment needs. (The v1 run-token apps proxy mount died with execution-v2 Wave 1.5; the box callback surface at /box/ is its replacement.) Three wakers knock on it and none of them holds a schedule: the host's own cron, the dev ticker, and Vendo Cloud's heartbeat. The ENGINE decides what is due, and its claim is atomic — so the door is idempotent, and a duplicate knock honestly answers `{ fired: 0 }`. */ export declare const systemRoutes: RouteEntry[]; /** The `vendo sync` blast-radius probe, mounted ONLY in a development composition (wireRoutesFor) — a deployment that did not opt in has no such route and answers the ordinary 404. It used to sit in systemRoutes and refuse per-request on `environment("NODE_ENV") === "production"`, which failed OPEN twice over: `environment()` answers undefined for an unset NODE_ENV and on any runtime without a `process` global (edge, Workers). Either one served this to an anonymous caller — and the answer is not scoped to a principal, it reads the deployment's whole vendo_apps and vendo_grants collections, so it was cross-subject enumeration. Absence of configuration has to mean closed; `deps.development` is the flag that already means that, and it is decided at boot rather than per request. */ export declare const syncImpactRoutes: RouteEntry[]; /** The decoded first segment matches only /orgs and /orgs/* (any depth, any method), never a lookalike like /organizations; the rest wildcard also covers a trailing-slash `/orgs/`. */ export declare const orgsRoutes: RouteEntry[]; export declare const activityRoutes: RouteEntry[]; export declare const statusRoutes: RouteEntry[];