/**
 * PostHog MCP Analytics (`@posthog/mcp`) — `$mcp_tool_call` etc. for the MCP
 * Analytics product, on top of our own `mcp_tool_*` events (telemetry.ts).
 *
 * FastMCP builds a fresh low-level SDK `Server` per session (stdio: one; HTTP: one
 * per MCP session). We instrument it in `FastMCPSession.connect`, BEFORE the
 * transport delivers anything. FastMCP's own `connect` event is too late: it fires
 * only after FastMCP has polled for client capabilities and listed roots, by which
 * point `initialize`, `tools/list` and early `tools/call`s have already been
 * served uninstrumented. The SDK also wraps `setRequestHandler`, so the tool
 * handlers FastMCP re-registers on `toolsListChanged` stay instrumented.
 *
 * It reuses the telemetry client, so the same opt-outs apply (DO_NOT_TRACK,
 * EXTENSHI_TELEMETRY, config `telemetry: false`) and flushTelemetry() drains it.
 *
 * Per-connection consent (hosted connector): the consent screen lets a user
 * decline analytics, recorded as `telemetry: false` on the session's auth (see
 * tools/extenshi-mcp-server/src/identity.ts; tools.ts honours it for our own
 * events). FastMCP keeps a session's auth private, but mcp-proxy hands every
 * validated auth to the public `updateAuth` before it handles a request on an
 * existing session, so we record the choice there. With `perSessionConsent`,
 * events are sent only once a session's auth has said yes — fail closed, so the
 * `initialize` that opens a session (before any updateAuth) is never sent.
 *
 * Configured to keep telemetry.ts's promise — no raw user input, no file paths:
 *   - tool arguments, results and agent intent are dropped (beforeSend);
 *   - error MESSAGES are dropped too: tool errors echo arguments (store ids,
 *     artifact paths), so only `$mcp_is_error` and `$mcp_error_type` remain;
 *   - nothing is injected into tool schemas or results (context, llm_model and
 *     conversation_id parameters are all off), so the tool surface is unchanged;
 *   - `$exception` siblings are off — captureError() already reports those.
 */
interface Options {
    surface: string;
    /** Send a session's events only after its auth has consented (hosted connector). */
    perSessionConsent?: boolean;
}
/** Call once per process, before `server.start()`. */
export declare function instrumentMcpAnalytics(opts: Options): void;
export {};
//# sourceMappingURL=mcp-analytics.d.ts.map