import { ServerOptions } from "@modelcontextprotocol/sdk/server/index.js";
import { McpServer, RegisteredTool, ToolCallback } from "@modelcontextprotocol/sdk/server/mcp.js";
import { Implementation, ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";
import "websocket-polyfill";
import { ZodRawShape } from "zod";
import { ChargeCallback } from "./callbacks.js";
import { IStorage } from "./storage/storage.js";
export declare class PaidMcpServer extends McpServer {
    private _wallet;
    private _storage;
    constructor(serverInfo: Implementation, 
    /**
     * @property nwcUrl the connection secret for your wallet - ideally receive-only
     * @property storage configure storage for paid, unused tool access (default: in-memory)
     */
    paidArgs: {
        nwcUrl: string;
        storage?: IStorage;
    }, options?: ServerOptions);
    /**
     * Registers a paid tool with a config object, charge callback and tool callback.
     *
     * @param charge configure how much to charge based on the request
     */
    registerPaidTool<InputArgs extends ZodRawShape, OutputArgs extends ZodRawShape>(name: string, config: {
        title?: string;
        description?: string;
        inputSchema?: InputArgs;
        outputSchema?: OutputArgs;
        annotations?: ToolAnnotations;
    }, charge: ChargeCallback<InputArgs>, cb: ToolCallback<InputArgs>): RegisteredTool;
}
