import type { SealMetricsClient } from "../client.js"; export interface SetupState { provisioned: boolean; accountId?: string; pixelVerified: boolean; } export interface SetupContext { client: SealMetricsClient; baseUrl: string; provisionKey: string; /** install_source attribution (RF-3205). */ installSource: string; /** Project root if the client exposes one (editors); undefined in Desktop chat. */ cwd?: string; state: SetupState; /** * Called after a successful provision_site so the server adopts the api_key and * enables the ~47 read-only tools in the same session (RF-3202b). The api_key is * passed here but NEVER returned to the model (VAL-3201). */ onProvisioned: (apiKey: string, accountId: string) => void; /** Poll tuning (tests pass small values). Defaults: 2s interval, 25s timeout. */ pollDefaults?: { intervalMs?: number; timeoutMs?: number; }; /** Injectable clock/sleep for the instrumentation verifier (tests). */ now?: () => number; sleep?: (ms: number) => Promise; } /** Setup tool shape (like ToolDef but the handler closes over the SetupContext). */ export interface SetupToolDef { name: string; description: string; inputSchema: { type: "object"; properties: Record; required?: string[]; }; annotations: { title: string; readOnlyHint: boolean; openWorldHint?: boolean; }; handler: (args: Record) => Promise; } /** Build the five (RF-3203) setup tools bound to a context. */ export declare function createSetupTools(ctx: SetupContext): SetupToolDef[]; //# sourceMappingURL=setup.d.ts.map