import type { InterruptResult, ResumeFn } from "../../runtime/interruptResolution.js"; import type { ServeAddress } from "./serveUrl.js"; export type ServeFunctionManifest = { name: string; description?: string; parameters: string[]; destructive?: boolean; idempotent?: boolean; interruptEffects: string[]; }; export type ServeNodeManifest = { name: string; parameters: string[]; interruptEffects: string[]; }; export type ServeManifest = { functions: ServeFunctionManifest[]; nodes: ServeNodeManifest[]; }; /** Any serve request that did not produce a usable result. */ export declare class ServeRequestError extends Error { } export type ServeClient = { /** GET /list, validated. */ fetchManifest(): Promise; /** POST /node/:name — a final value or a pause, as an InterruptResult. */ invokeNode(name: string, args: Record): Promise; /** POST /function/:name — one-shot, never pauses. */ invokeFunction(name: string, args: Record): Promise; /** POST /resume — the shape the shared interrupt driver expects. */ resume: ResumeFn; }; export declare function createServeClient(address: ServeAddress, apiKey: string): ServeClient;