UNPKG

mcpay

Version:

SDK and CLI for MCPay functionality - MCP servers with payment capabilities

272 lines 11.4 kB
import { Account, Address, Chain, Client, Hex, LocalAccount, PublicActions, RpcSchema, Transport, WalletActions } from "viem"; import { type PaymentRequirements as BasePaymentRequirements, type Network } from "x402/types"; import { z } from "zod"; export type SignerWallet<chain extends Chain = Chain, transport extends Transport = Transport, account extends Account = Account> = Client<transport, chain, account, RpcSchema, PublicActions<transport, chain, account> & WalletActions<chain, account>>; export declare const authorizationTypes: { TransferWithAuthorization: { name: string; type: string; }[]; }; export declare const authorizationPrimaryType = "TransferWithAuthorization"; export declare const NetworkSchema: z.ZodEnum<["base-sepolia", "base", "avalanche-fuji", "avalanche", "iotex", "sei-testnet"]>; export declare const SupportedEVMNetworks: SupportedNetwork[]; export declare const EvmNetworkToChainId: Map<"base-sepolia" | "base" | "avalanche-fuji" | "avalanche" | "iotex" | "sei-testnet", number>; export declare const ChainIdToNetwork: Record<number, Network>; export declare const schemes: readonly ["exact"]; export declare const ExactEvmPayloadAuthorizationSchema: z.ZodObject<{ from: z.ZodString; to: z.ZodString; value: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>; validAfter: z.ZodEffects<z.ZodString, string, string>; validBefore: z.ZodEffects<z.ZodString, string, string>; nonce: z.ZodString; }, "strip", z.ZodTypeAny, { from: string; nonce: string; to: string; value: string; validAfter: string; validBefore: string; }, { from: string; nonce: string; to: string; value: string; validAfter: string; validBefore: string; }>; export type ExactEvmPayloadAuthorization = z.infer<typeof ExactEvmPayloadAuthorizationSchema>; export declare const ExactEvmPayloadSchema: z.ZodObject<{ signature: z.ZodUnion<[z.ZodString, z.ZodString]>; authorization: z.ZodObject<{ from: z.ZodString; to: z.ZodString; value: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>; validAfter: z.ZodEffects<z.ZodString, string, string>; validBefore: z.ZodEffects<z.ZodString, string, string>; nonce: z.ZodString; }, "strip", z.ZodTypeAny, { from: string; nonce: string; to: string; value: string; validAfter: string; validBefore: string; }, { from: string; nonce: string; to: string; value: string; validAfter: string; validBefore: string; }>; }, "strip", z.ZodTypeAny, { authorization: { from: string; nonce: string; to: string; value: string; validAfter: string; validBefore: string; }; signature: string; }, { authorization: { from: string; nonce: string; to: string; value: string; validAfter: string; validBefore: string; }; signature: string; }>; export type ExactEvmPayload = z.infer<typeof ExactEvmPayloadSchema>; export declare const PaymentPayloadSchema: z.ZodObject<{ x402Version: z.ZodEffects<z.ZodNumber, number, number>; scheme: z.ZodEnum<["exact"]>; network: z.ZodEnum<["base-sepolia", "base", "avalanche-fuji", "avalanche", "iotex", "sei-testnet"]>; payload: z.ZodObject<{ signature: z.ZodUnion<[z.ZodString, z.ZodString]>; authorization: z.ZodObject<{ from: z.ZodString; to: z.ZodString; value: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>; validAfter: z.ZodEffects<z.ZodString, string, string>; validBefore: z.ZodEffects<z.ZodString, string, string>; nonce: z.ZodString; }, "strip", z.ZodTypeAny, { from: string; nonce: string; to: string; value: string; validAfter: string; validBefore: string; }, { from: string; nonce: string; to: string; value: string; validAfter: string; validBefore: string; }>; }, "strip", z.ZodTypeAny, { authorization: { from: string; nonce: string; to: string; value: string; validAfter: string; validBefore: string; }; signature: string; }, { authorization: { from: string; nonce: string; to: string; value: string; validAfter: string; validBefore: string; }; signature: string; }>; }, "strip", z.ZodTypeAny, { scheme: "exact"; x402Version: number; network: "base-sepolia" | "base" | "avalanche-fuji" | "avalanche" | "iotex" | "sei-testnet"; payload: { authorization: { from: string; nonce: string; to: string; value: string; validAfter: string; validBefore: string; }; signature: string; }; }, { scheme: "exact"; x402Version: number; network: "base-sepolia" | "base" | "avalanche-fuji" | "avalanche" | "iotex" | "sei-testnet"; payload: { authorization: { from: string; nonce: string; to: string; value: string; validAfter: string; validBefore: string; }; signature: string; }; }>; export type PaymentPayload = z.infer<typeof PaymentPayloadSchema>; export type UnsignedPaymentPayload = Omit<PaymentPayload, "payload"> & { payload: Omit<ExactEvmPayload, "signature"> & { signature: undefined; }; }; export declare function isSignerWallet<TChain extends Chain = Chain, TTransport extends Transport = Transport, TAccount extends Account = Account>(wallet: SignerWallet<TChain, TTransport, TAccount> | LocalAccount): wallet is SignerWallet<TChain, TTransport, TAccount>; export declare function isAccount<TChain extends Chain = Chain, TTransport extends Transport = Transport, TAccount extends Account = Account>(wallet: SignerWallet<TChain, TTransport, TAccount> | LocalAccount): wallet is LocalAccount; export declare function createNonce(): Hex; export declare function preparePaymentHeader(from: Address, x402Version: number, paymentRequirements: ExtendedPaymentRequirements): UnsignedPaymentPayload; export declare function createPayment<transport extends Transport, chain extends Chain>(client: SignerWallet<chain, transport> | LocalAccount, x402Version: number, paymentRequirements: ExtendedPaymentRequirements): Promise<PaymentPayload>; export declare function signAuthorization<transport extends Transport, chain extends Chain>(walletClient: SignerWallet<chain, transport> | LocalAccount, { from, to, value, validAfter, validBefore, nonce }: ExactEvmPayloadAuthorization, { asset, network, extra }: ExtendedPaymentRequirements): Promise<{ signature: Hex; }>; /** * Encodes a string to base64 format * * @param data - The string to be encoded to base64 * @returns The base64 encoded string */ export declare function safeBase64Encode(data: string): string; /** * Decodes a base64 string back to its original format * * @param data - The base64 encoded string to be decoded * @returns The decoded string in UTF-8 format */ export declare function safeBase64Decode(data: string): string; export declare function encodePayment(payment: PaymentPayload): string; export declare function createPaymentHeaderExactEVM(client: SignerWallet | LocalAccount, x402Version: number, paymentRequirements: ExtendedPaymentRequirements): Promise<string>; export declare function signPaymentHeader<transport extends Transport, chain extends Chain>(client: SignerWallet<chain, transport> | LocalAccount, paymentRequirements: ExtendedPaymentRequirements, unsignedPaymentHeader: UnsignedPaymentPayload): Promise<PaymentPayload>; export declare function createPaymentHeader(client: SignerWallet | LocalAccount, x402Version: number, paymentRequirements: ExtendedPaymentRequirements): Promise<string>; /** * Gets the default asset (USDC) for the given network * * @param network - The network to get the default asset for * @returns The default asset */ export declare function getDefaultAsset(network: SupportedNetwork): { address: `0x${string}`; decimals: number; eip712: { name: string; version: string; }; }; export declare function getUsdcAddressForChain(chainId: number): Address; export declare function getNetworkId(network: SupportedNetwork): number; export declare const config: Record<string, ChainConfig>; export type ChainConfig = { usdcAddress: Address; usdcName: string; }; export declare const SupportedNetworkSchema: z.ZodEnum<["base-sepolia", "base", "avalanche-fuji", "avalanche", "iotex", "sei-testnet"]>; export type SupportedNetwork = z.infer<typeof SupportedNetworkSchema>; export declare const ExtendedPaymentRequirementsSchema: z.ZodObject<{ scheme: z.ZodEnum<["exact"]>; network: z.ZodEnum<["base-sepolia", "base", "avalanche-fuji", "avalanche", "iotex", "sei-testnet"]>; maxAmountRequired: z.ZodString; resource: z.ZodString; description: z.ZodString; mimeType: z.ZodString; outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; payTo: z.ZodString; maxTimeoutSeconds: z.ZodNumber; asset: z.ZodString; extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; }, "strip", z.ZodTypeAny, { scheme: "exact"; network: "base-sepolia" | "base" | "avalanche-fuji" | "avalanche" | "iotex" | "sei-testnet"; maxAmountRequired: string; resource: string; description: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; asset: string; outputSchema?: Record<string, any> | undefined; extra?: Record<string, any> | undefined; }, { scheme: "exact"; network: "base-sepolia" | "base" | "avalanche-fuji" | "avalanche" | "iotex" | "sei-testnet"; maxAmountRequired: string; resource: string; description: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; asset: string; outputSchema?: Record<string, any> | undefined; extra?: Record<string, any> | undefined; }>; export type ExtendedPaymentRequirements = z.infer<typeof ExtendedPaymentRequirementsSchema>; export type SupportedPaymentRequirements = Omit<BasePaymentRequirements, 'network'> & { network: SupportedNetwork; }; export declare function selectPaymentRequirements(paymentRequirements: ExtendedPaymentRequirements[], network?: Network, scheme?: "exact"): ExtendedPaymentRequirements; /** * Selector for payment requirements. * * @param paymentRequirements - The payment requirements to select from. * @param network - The network to check against. If not provided, the network will not be checked. * @param scheme - The scheme to check against. If not provided, the scheme will not be checked. * @returns The payment requirement that is the most appropriate for the user. */ export type PaymentRequirementsSelector = (paymentRequirements: ExtendedPaymentRequirements[], network?: Network, scheme?: "exact") => ExtendedPaymentRequirements; //# sourceMappingURL=index.d.ts.map