import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent"; import type { LeetCodeClient } from "./leetcode/client.js"; import type { CapabilityManifest } from "./types.js"; export interface LeetCodeClientFactoryContext { cwd: string; hasUI: boolean; } export type LeetCodeClientFactory = (context: LeetCodeClientFactoryContext) => LeetCodeClient | Promise; export interface LeetCodeToolsRuntimeOptions { createClient?: LeetCodeClientFactory; /** Override durable run/submit state storage for embedded SDK hosts. */ storageDirectory?: string; } export type LeetCodeToolsRegistrationResult = { status: "registered" | "already_registered"; names: readonly string[]; } | { status: "collision"; names: readonly string[]; } | { status: "failed"; names: readonly string[]; }; export type LeetCodeToolsActivationResult = { status: "active"; descriptor: CapabilityManifest; } | { status: "failed" | "stale"; }; export type LeetCodeToolsSessionContext = Pick; export interface LeetCodeToolsRuntimeController { registerTools(): LeetCodeToolsRegistrationResult; activate(context: LeetCodeToolsSessionContext): Promise; deactivate(): Promise; } /** * Creates a Tools runtime whose native tool registration and Gateway provider * activation are deliberately separate. Pi packages embedding Tools can first * negotiate ownership of the lc_* namespace, then activate only the provider * they own for the current session. */ export declare function createLeetCodeToolsRuntime(pi: ExtensionAPI, options?: LeetCodeToolsRuntimeOptions): LeetCodeToolsRuntimeController; //# sourceMappingURL=embedded.d.ts.map