import type { CallToolRequest, CallToolResult, ListToolsResult } from "@modelcontextprotocol/sdk/types.js";
import type { FacilitatorConfig, Network, Price } from "x402/types";
import type { Hook, RequestExtra, ListToolsRequestWithContext } from "../hooks.js";
export type RecipientWithTestnet = {
    address: string;
    isTestnet?: boolean;
};
export type X402ProxyConfig = {
    recipient: Partial<Record<Network, string>> | Partial<Record<"evm" | "svm", RecipientWithTestnet>>;
    facilitator: FacilitatorConfig;
    version?: number;
    prices: Record<string, Price>;
};
export declare class X402MonetizationHook implements Hook {
    name: string;
    private readonly cfg;
    private readonly verify;
    private readonly settle;
    private readonly x402Version;
    constructor(cfg: X402ProxyConfig);
    private normalizeRecipients;
    private buildRequirements;
    private paymentRequired;
    processCallToolRequest(req: CallToolRequest, extra: RequestExtra): Promise<{
        resultType: "continue";
        request: {
            params: {
                [x: string]: unknown;
                name: string;
                _meta?: {
                    [x: string]: unknown;
                    progressToken?: string | number | undefined;
                } | undefined;
                arguments?: {
                    [x: string]: unknown;
                } | undefined;
            };
            method: "tools/call";
        };
        response?: undefined;
    } | {
        resultType: "respond";
        response: {
            [x: string]: unknown;
            content: ({
                [x: string]: unknown;
                type: "text";
                text: string;
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
            } | {
                [x: string]: unknown;
                type: "image";
                data: string;
                mimeType: string;
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
            } | {
                [x: string]: unknown;
                type: "audio";
                data: string;
                mimeType: string;
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
            } | {
                [x: string]: unknown;
                type: "resource_link";
                name: string;
                uri: string;
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
                mimeType?: string | undefined;
                title?: string | undefined;
                description?: string | undefined;
                icons?: {
                    [x: string]: unknown;
                    src: string;
                    mimeType?: string | undefined;
                    sizes?: string | undefined;
                }[] | undefined;
            } | {
                [x: string]: unknown;
                type: "resource";
                resource: {
                    [x: string]: unknown;
                    text: string;
                    uri: string;
                    _meta?: {
                        [x: string]: unknown;
                    } | undefined;
                    mimeType?: string | undefined;
                } | {
                    [x: string]: unknown;
                    uri: string;
                    blob: string;
                    _meta?: {
                        [x: string]: unknown;
                    } | undefined;
                    mimeType?: string | undefined;
                };
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
            })[];
            _meta?: {
                [x: string]: unknown;
            } | undefined;
            structuredContent?: {
                [x: string]: unknown;
            } | undefined;
            isError?: boolean | undefined;
        };
        request?: undefined;
    }>;
    processCallToolResult(res: CallToolResult, original: CallToolRequest, extra: RequestExtra): Promise<{
        resultType: "continue";
        response: {
            [x: string]: unknown;
            content: ({
                [x: string]: unknown;
                type: "text";
                text: string;
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
            } | {
                [x: string]: unknown;
                type: "image";
                data: string;
                mimeType: string;
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
            } | {
                [x: string]: unknown;
                type: "audio";
                data: string;
                mimeType: string;
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
            } | {
                [x: string]: unknown;
                type: "resource_link";
                name: string;
                uri: string;
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
                mimeType?: string | undefined;
                title?: string | undefined;
                description?: string | undefined;
                icons?: {
                    [x: string]: unknown;
                    src: string;
                    mimeType?: string | undefined;
                    sizes?: string | undefined;
                }[] | undefined;
            } | {
                [x: string]: unknown;
                type: "resource";
                resource: {
                    [x: string]: unknown;
                    text: string;
                    uri: string;
                    _meta?: {
                        [x: string]: unknown;
                    } | undefined;
                    mimeType?: string | undefined;
                } | {
                    [x: string]: unknown;
                    uri: string;
                    blob: string;
                    _meta?: {
                        [x: string]: unknown;
                    } | undefined;
                    mimeType?: string | undefined;
                };
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
            })[];
            _meta?: {
                [x: string]: unknown;
            } | undefined;
            structuredContent?: {
                [x: string]: unknown;
            } | undefined;
            isError?: boolean | undefined;
        };
    }>;
    processListToolsResult(result: ListToolsResult, originalRequest: ListToolsRequestWithContext, extra: RequestExtra): Promise<{
        resultType: "continue";
        response: {
            [x: string]: unknown;
            tools: {
                [x: string]: unknown;
                name: string;
                inputSchema: {
                    [x: string]: unknown;
                    type: "object";
                    properties?: {
                        [x: string]: unknown;
                    } | undefined;
                    required?: string[] | undefined;
                };
                _meta?: {
                    [x: string]: unknown;
                } | undefined;
                title?: string | undefined;
                description?: string | undefined;
                icons?: {
                    [x: string]: unknown;
                    src: string;
                    mimeType?: string | undefined;
                    sizes?: string | undefined;
                }[] | undefined;
                outputSchema?: {
                    [x: string]: unknown;
                    type: "object";
                    properties?: {
                        [x: string]: unknown;
                    } | undefined;
                    required?: string[] | undefined;
                } | undefined;
                annotations?: {
                    [x: string]: unknown;
                    title?: string | undefined;
                    readOnlyHint?: boolean | undefined;
                    destructiveHint?: boolean | undefined;
                    idempotentHint?: boolean | undefined;
                    openWorldHint?: boolean | undefined;
                } | undefined;
            }[];
            _meta?: {
                [x: string]: unknown;
            } | undefined;
            nextCursor?: string | undefined;
        };
    }>;
}
//# sourceMappingURL=x402-hook.d.ts.map