/** * SDK adapter: turn X402 wallet configuration into a `PaymentHandler` * compatible with `@acedatacloud/sdk`. * * Usage: * * import { AceDataCloud } from '@acedatacloud/sdk'; * import { createX402PaymentHandler } from '@acedatacloud/x402-client'; * * const client = new AceDataCloud({ * paymentHandler: createX402PaymentHandler({ * network: 'base', * evmProvider: window.ethereum, * evmAddress: '0x...', * }), * }); * * // Normal SDK calls work — no Bearer token needed. * await client.openai.chat.completions.create({ ... }); */ import type { EVMProvider, PaymentRequirement, SolanaWalletAdapter } from './types.js'; /** Options for `createX402PaymentHandler`. */ export interface X402PaymentHandlerOptions { /** Preferred payment network. */ network: 'solana' | 'base' | 'skale'; /** Solana wallet adapter (required if network=solana). */ solanaWallet?: SolanaWalletAdapter; /** EVM EIP-1193 provider (required if network=base/skale). */ evmProvider?: EVMProvider; /** EVM account address (required if network=base/skale). */ evmAddress?: string; /** * When the server offers multiple schemes for the chosen network, prefer * this one. Use `"upto"` for metered chat APIs (Permit2-based, settles for * the actual usage) and `"exact"` for fixed-price endpoints. Falls back to * the first available accept entry when the preferred scheme is absent. */ preferScheme?: 'exact' | 'upto'; } /** Minimal shape of the SDK's PaymentHandler context. Duplicated here * so this package does not need a dependency on `@acedatacloud/sdk`. */ interface SdkPaymentHandlerContext { url: string; method: string; body?: unknown; accepts: PaymentRequirement[]; } interface SdkPaymentHandlerResult { headers: Record; } /** * Build a `PaymentHandler` function that `@acedatacloud/sdk` can invoke * when the API returns `402 Payment Required`. */ export declare function createX402PaymentHandler(options: X402PaymentHandlerOptions): (ctx: SdkPaymentHandlerContext) => Promise; export {};