import { Client, type ClientOptions } from '@modelcontextprotocol/sdk/client/index.js';
import { type Implementation } from '@modelcontextprotocol/sdk/types.js';
import type { IStorageInterface, IWalletProvider, ILoggerFactory } from '../shared/interfaces';
import { PaymentRequiredRequest, PaymentRequiredResponse, PaymentResultNotification } from '../shared/schemas';
export interface X402MCPClientOptions extends Implementation, ClientOptions {
    wallet: IWalletProvider | string;
    logFactory?: ILoggerFactory;
    auditStorage?: IStorageInterface;
    guardrails?: {
        maxPaymentPerCall?: number;
        whitelistedServers?: string[];
    };
}
export interface NotificationHandler {
    handleNotification(notification: any): Promise<void>;
}
export declare class X402MCPClient extends Client implements NotificationHandler {
    private walletProvider;
    private guardrailsService?;
    private auditStorage?;
    private logger;
    constructor(options: X402MCPClientOptions);
    connect(transport: any): Promise<void>;
    private trackRequest;
    private markRequestCompleted;
    handlePaymentRequired(request: PaymentRequiredRequest): Promise<PaymentRequiredResponse>;
    handleNotification(notification: PaymentResultNotification): Promise<void>;
}
