mcpay
Version:
SDK and CLI for MCPay functionality - MCP servers with payment capabilities
51 lines • 2.24 kB
TypeScript
import type { StreamableHTTPClientTransportOptions } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
import type { Account } from "viem";
import { evm } from "x402/types";
import { type PaymentRequirementsSelector } from "../x402";
/**
* Configuration options for payment handling in the PaymentTransport.
*/
export interface PaymentTransportOptions extends StreamableHTTPClientTransportOptions {
/**
* The maximum allowed payment amount in base units (defaults to 0.1 USDC)
*/
maxPaymentValue?: bigint;
/**
* A function that selects the payment requirements from the response
*/
paymentRequirementsSelector?: PaymentRequirementsSelector;
}
/**
* PaymentTransport extends StreamableHTTPClientTransport to handle 402 Payment Required responses
* by automatically creating and sending payment headers using the x402 payment protocol.
*
* This implementation uses the x402-fetch library to automatically handle payments.
*/
export declare class PaymentTransport extends StreamableHTTPClientTransport {
private _walletClient;
private _maxPaymentValue;
private _paymentRequirementsSelector;
private _paymentUrl;
private _customRequestInit?;
private _paymentFetch;
constructor(url: URL, walletClient: typeof evm.SignerWallet | Account, opts: PaymentTransportOptions);
/**
* Override the send method to use our payment-enabled fetch
*/
private _overrideSendMethod;
/**
* Extract payment requirements from an error message
*/
private _extractPaymentRequirementsFromError;
/**
* Handle a 402 Payment Required response by creating and sending a payment header
*/
private _handlePaymentRequired;
}
/**
* Creates a PaymentTransport instance that automatically handles 402 Payment Required responses
* by creating and sending payment headers using the x402 payment protocol.
*/
export declare function createPaymentTransport(url: URL, walletClient: typeof evm.SignerWallet | Account, options?: Omit<PaymentTransportOptions, 'walletClient'>): PaymentTransport;
//# sourceMappingURL=payment-http-transport.d.ts.map