import type { ServerOptions, ToolDefinition, ToolHandler, HandleResult, Prompt, PromptHandler, Resource, ResourceHandler, ResourceTemplate, Transport, SDKTransport, JSONRPCNotification } from "./types.js"; import type { TypedSchema } from "./schema.js"; export interface Server { tool(name: string, description: string, inputSchema: TypedSchema, handler: ToolHandler, outputSchema?: TypedSchema): Server; registerTool(definition: Omit, "handler">, handler: ToolHandler): Server; prompt(definition: Prompt, handler: PromptHandler): Server; resource(definition: Resource, handler: ResourceHandler): Server; resourceTemplate(definition: ResourceTemplate, handler: ResourceHandler): Server; method(name: string, handler: CustomMethodHandler): Server; onNotification(listener: (notification: JSONRPCNotification) => void): () => void; removeTool(name: string): boolean; removePrompt(name: string): boolean; removeResource(uri: string): boolean; removeResourceTemplate(uriTemplate: string): boolean; notifyToolsChanged(): Promise; notifyPromptsChanged(): Promise; notifyResourcesChanged(): Promise; notifyResourceUpdated(uri: string): Promise; createMessageSession(listener?: (notification: JSONRPCNotification) => void | Promise): MessageSession; handleMessage(method: string, params?: Record): Promise; listen(): Promise; connect(transport: Transport): Promise; connectSDK(transport: SDKTransport): Promise; } export interface MessageSessionContext { readonly signal: AbortSignal; notify(method: string, params?: Record): Promise; } export type CustomMethodHandler = (params: Record | undefined, session: MessageSessionContext) => unknown | Promise; export type MessageHandler = (method: string, params?: Record) => Promise; export interface MessageSession { handleMessage: MessageHandler; close(): void; } export declare function createServer(options: ServerOptions): Server;