import { createSdkMcpServer, tool as sdkTool } from '@anthropic-ai/claude-agent-sdk'; import type { CallToolResult } from '@modelcontextprotocol/sdk/types'; import { type Armorer, type ArmorerTool, type ToolResult } from 'armorer'; export type ClaudeAgentSdkTool = ReturnType; export type ClaudeAgentSdkServer = ReturnType; export type ClaudeAgentSdkToolConfig = { name?: string; description?: string; schema?: Record; }; export type ClaudeAgentSdkToolOptions = { toolConfig?: (tool: ArmorerTool) => ClaudeAgentSdkToolConfig; formatResult?: (result: ToolResult) => CallToolResult; }; export type CreateClaudeAgentSdkServerOptions = ClaudeAgentSdkToolOptions & { name?: string; version?: string; }; export type ClaudeAgentSdkServerResult = { sdkServer: ClaudeAgentSdkServer; tools: ClaudeAgentSdkTool[]; toolNames: string[]; mutatingToolNames: string[]; dangerousToolNames: string[]; }; export type ClaudeToolGateOptions = { registry: Armorer | ArmorerTool | ArmorerTool[]; readOnly?: boolean; allowMutation?: boolean; allowDangerous?: boolean; builtin?: { readOnly?: string[]; mutating?: string[]; dangerous?: string[]; }; allowUnknown?: boolean; toolConfig?: (tool: ArmorerTool) => ClaudeAgentSdkToolConfig; messages?: { mutating?: string; dangerous?: string; unknown?: (toolName: string) => string; }; }; export type ClaudeToolGateDecision = { behavior: 'allow' | 'deny'; message?: string; }; export declare function toClaudeAgentSdkTools(input: Armorer | ArmorerTool | ArmorerTool[], options?: ClaudeAgentSdkToolOptions): ClaudeAgentSdkTool[]; export declare function createClaudeAgentSdkServer(input: Armorer | ArmorerTool | ArmorerTool[], options?: CreateClaudeAgentSdkServerOptions): ClaudeAgentSdkServerResult; export declare function createClaudeToolGate(options: ClaudeToolGateOptions): (toolName: string) => Promise;