/** Provider-neutral guest operation client. Authority and IPC belong to the embedder. * No credentials, endpoint discovery, provider SDK, or automatic retry is provided. */ export type SkillOperationJson = null | boolean | number | string | readonly SkillOperationJson[] | { readonly [key: string]: SkillOperationJson; }; export declare const SKILL_OPERATION_LIMITS: Readonly<{ requestBytes: 65536; resultBytes: 1048576; depth: 32; nodes: 16384; rememberedRequests: 256; rememberedBytes: 1048576; }>; export type SkillOperationRefusal = "NOT_ALLOWED" | "APPROVAL_REQUIRED" | "BUDGET_EXHAUSTED" | "EXPIRED" | "CANCELLED" | "UNAVAILABLE" | "INVALID_INPUT"; export interface SkillOperationRequest { readonly contractVersion: 1; readonly requestId: string; readonly operation: string; readonly input: { readonly [key: string]: SkillOperationJson; }; } interface OperationIdentity { readonly contractVersion: 1; readonly requestId: string; } export type SkillOperationResult = OperationIdentity & ({ readonly status: "not-executed" | "pending" | "unknown"; } | { readonly status: "succeeded"; readonly output: SkillOperationJson; } | { readonly status: "refused"; readonly code: SkillOperationRefusal; }); /** Implementations must authenticate the captured run/attempt separately. A * not-executed response is authoritative proof, never a guess from transport loss. */ export interface SkillOperationTransport { invoke(request: SkillOperationRequest, options: { signal: AbortSignal; }): Promise; get(requestId: string, options: { signal: AbortSignal; }): Promise; } export type SkillOperationClientErrorCode = "INVALID_REQUEST" | "REQUEST_CONFLICT" | "REQUEST_CAPACITY" | "ABORTED" | "UNKNOWN_OUTCOME" | "INVALID_RESPONSE" | "INVALID_CONFIGURATION"; export declare class SkillOperationClientError extends Error { readonly code: SkillOperationClientErrorCode; readonly outcome: "not-invoked" | "unknown"; constructor(code: SkillOperationClientErrorCode, outcome: "not-invoked" | "unknown"); } export interface SkillOperationClient { invoke(request: SkillOperationRequest, options?: { signal?: AbortSignal; }): Promise; get(requestId: string, options?: { signal?: AbortSignal; }): Promise; } /** One client belongs to one captured authority scope. Remembered identities * are bounded and never evicted. This is local misuse protection, not durable * deduplication: the server must bind request IDs and payloads atomically. * Each explicit call invokes transport once; uncertainty requires explicit get. */ export declare function createSkillOperationClient(transport: SkillOperationTransport, options?: { timeoutMs?: number; }): SkillOperationClient; export {};