/** * Fly Machines (flaps) API contract — the endpoint set the `flyApply` applier * (./fly-apply.ts) depends on, and the mudflaps counterpart of the hand-authored * Sprites contract (./sprites-contract.ts, #808 T3). * * Unlike Sprites, Machines *does* ship a machine-readable OpenAPI that the fly * resource surface drift-checks against (docs.machines.dev, the rolling-upgrade * path #813). This contract serves a different fidelity axis: it pins the exact * endpoints flyApply calls so the docker-gated coverage test can prove the pinned * mudflaps emulator serves them all. mudflaps carries roadmap endpoints that * answer 501 (currently machines/{id}/signal, /exec, /ps) — flyApply must never * depend on one; if it ever does, the coverage test fails instead of the applier * silently passing against a fake that can't model the call. * * Param names match ./fly-apply.ts's URL builders (`{app}`, `{id}`); the coverage * check normalizes param names before comparing, since mudflaps spells volume * ids `{vol}` and cert hostnames `{hostname}`. */ /** One flaps endpoint the flyApply applier calls. */ export interface MachinesEndpoint { method: "GET" | "POST" | "PUT" | "DELETE"; /** Path template under the flaps base, e.g. `/v1/apps/{app}/machines/{id}`. */ path: string; /** The applier operation that calls it. */ op: string; } /** * The flaps endpoints ./fly-apply.ts depends on. Keep in sync with the applier — * the unit test asserts every path segment appears in fly-apply.ts. */ export declare const MACHINES_CONTRACT: readonly MachinesEndpoint[]; /** Normalize a `METHOD path` key: collapse every `{param}` to `{}` so param names match. */ export declare function normalizeEndpoint(method: string, path: string): string; /** The contract as a set of normalized `METHOD path` keys. */ export declare function contractKeys(): Set; //# sourceMappingURL=machines-contract.d.ts.map