@devlab.group/agent-commerce 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +17 -13
  2. package/dist/ap2.d.ts +6 -5
  3. package/dist/ap2.js +3 -3
  4. package/dist/{authorization-CMkIuAkO.d.ts → authorization-DjAecwuW.d.ts} +1 -1
  5. package/dist/{chunk-XVU46YAH.js → chunk-4OEXK3YG.js} +4 -4
  6. package/dist/{chunk-XVU46YAH.js.map → chunk-4OEXK3YG.js.map} +1 -1
  7. package/dist/{chunk-4ZSE5DCH.js → chunk-6WACRJVT.js} +3 -3
  8. package/dist/{chunk-4ZSE5DCH.js.map → chunk-6WACRJVT.js.map} +1 -1
  9. package/dist/{chunk-Q5TII32R.js → chunk-AITMDXKW.js} +3 -3
  10. package/dist/{chunk-Q5TII32R.js.map → chunk-AITMDXKW.js.map} +1 -1
  11. package/dist/{chunk-TNS7U5Q4.js → chunk-WUIAUAA7.js} +200 -8
  12. package/dist/chunk-WUIAUAA7.js.map +1 -0
  13. package/dist/cli/{ap2-GINAXBFV.js → ap2-QDHPRSTF.js} +3 -3
  14. package/dist/cli/{ap2-GINAXBFV.js.map → ap2-QDHPRSTF.js.map} +1 -1
  15. package/dist/cli/{chunk-BR7CMJOE.js → chunk-AZDWFVDW.js} +200 -8
  16. package/dist/cli/chunk-AZDWFVDW.js.map +1 -0
  17. package/dist/cli/{chunk-KABFUZ6L.js → chunk-DCMW67JM.js} +4 -4
  18. package/dist/cli/{chunk-KABFUZ6L.js.map → chunk-DCMW67JM.js.map} +1 -1
  19. package/dist/cli/{chunk-55N55KL4.js → chunk-G2JEY7MB.js} +22 -6
  20. package/dist/cli/chunk-G2JEY7MB.js.map +1 -0
  21. package/dist/cli/{chunk-2LN5PO5I.js → chunk-PIMFPCNZ.js} +3 -2
  22. package/dist/cli/chunk-PIMFPCNZ.js.map +1 -0
  23. package/dist/cli/chunk-UXB65XCS.js +8 -0
  24. package/dist/cli/{chunk-DYHVNKRB.js.map → chunk-UXB65XCS.js.map} +1 -1
  25. package/dist/cli/{chunk-KTV52MCU.js → chunk-WYOGIANL.js} +3 -3
  26. package/dist/cli/{chunk-KTV52MCU.js.map → chunk-WYOGIANL.js.map} +1 -1
  27. package/dist/cli/{config-ZOFHJ5FB.js → config-UI4EDG4L.js} +5 -5
  28. package/dist/cli/{config-ZOFHJ5FB.js.map → config-UI4EDG4L.js.map} +1 -1
  29. package/dist/cli/index.js +87 -8
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/cli/{mcp-V3BNRUWL.js → mcp-26LJMN4N.js} +3 -3
  32. package/dist/cli/{mcp-V3BNRUWL.js.map → mcp-26LJMN4N.js.map} +1 -1
  33. package/dist/cli/{provider-BTIFALIT.js → provider-Z4OJNAYI.js} +5 -5
  34. package/dist/cli/{provider-BTIFALIT.js.map → provider-Z4OJNAYI.js.map} +1 -1
  35. package/dist/cli/{run-DS2KXUTW.js → run-TEPYJUHG.js} +23 -12
  36. package/dist/cli/run-TEPYJUHG.js.map +1 -0
  37. package/dist/cli/{x402-YTKFNWVQ.js → x402-BMVONZKA.js} +6 -6
  38. package/dist/cli/{x402-YTKFNWVQ.js.map → x402-BMVONZKA.js.map} +1 -1
  39. package/dist/{constants-nackLItD.d.ts → constants-BG22tE8S.d.ts} +2 -1
  40. package/dist/index.d.ts +19 -11
  41. package/dist/index.js +32 -7
  42. package/dist/index.js.map +1 -1
  43. package/dist/mcp.d.ts +5 -4
  44. package/dist/mcp.js +1 -1
  45. package/dist/mpp.d.ts +5 -4
  46. package/dist/mpp.js +3 -3
  47. package/dist/{networks-DTWRlj-K.d.ts → networks-DDHYJLcg.d.ts} +2 -1
  48. package/dist/{protocol-adapter-CfxU8Z2T.d.ts → protocol-adapter-C9odYl6l.d.ts} +4 -3
  49. package/dist/{runtime-7vLNYvmU.d.ts → runtime-Cl_BLVZV.d.ts} +8 -1
  50. package/dist/{types-CVw6Sf46.d.ts → types-j7MnUXYN.d.ts} +2 -1
  51. package/dist/x402.d.ts +27 -18
  52. package/dist/x402.js +4 -4
  53. package/package.json +6 -6
  54. package/dist/chunk-TNS7U5Q4.js.map +0 -1
  55. package/dist/cli/chunk-2LN5PO5I.js.map +0 -1
  56. package/dist/cli/chunk-55N55KL4.js.map +0 -1
  57. package/dist/cli/chunk-BR7CMJOE.js.map +0 -1
  58. package/dist/cli/chunk-DYHVNKRB.js +0 -8
  59. package/dist/cli/index.d.ts +0 -1
  60. package/dist/cli/run-DS2KXUTW.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/payments/x402/provider/constants.ts","../../src/payments/x402/amount.ts","../../src/payments/x402/provider/fee-payer.ts","../../src/payments/x402/provider/health.ts","../../src/payments/x402/chain.ts","../../src/payments/x402/facilitator.ts","../../src/payments/x402/local-facilitator.ts","../../src/payments/x402/provider/reasons.ts","../../src/payments/x402/provider/offers.ts","../../src/payments/x402/payload.ts","../../src/payments/x402/provider/requirement.ts","../../src/payments/x402/provider/transfer.ts","../../src/payments/x402/provider/settle.ts","../../src/payments/x402/provider/verify.ts","../../src/payments/x402/provider/index.ts"],"names":["offer","index","from","nonce","isAddress","x402ExactPermit2ProxyAddress","getAddress"],"mappings":"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","file":"chunk-BR7CMJOE.js","sourcesContent":["// Protocol constants shared by the x402 provider's modules\nimport type { IdGenerator } from '../../../core';\n\nexport const X402_VERSION = 2;\nexport const X402_PROTOCOL_VERSION = String(X402_VERSION);\nexport const DEFAULT_MAX_TIMEOUT_SECONDS = 60;\nexport const DEFAULT_MIME_TYPE = 'application/json';\nexport const HEALTH_TIMEOUT_MS = 4_000;\n\n/** Prefixed random UUIDs, shared with the MPP rail */\nexport const DEFAULT_IDS: IdGenerator = {\n next: (prefix?: string) => `${prefix ? `${prefix}_` : ''}${crypto.randomUUID()}`,\n};\n","/**\n * Exact conversion from display amounts (\"0.01\" USDC) to the integer base\n * units x402 and EIP-3009 carry (\"10000\" at 6 decimals).\n *\n * It never goes through a JS `number`, which cannot represent most decimal\n * fractions. viem's `parseUnits` is not used either: it silently rounds excess\n * fractional digits, and \"0.0000001\" against a 6-decimal asset is a\n * configuration bug that must be refused, not rounded. The reverse direction\n * is viem's `formatUnits`, which is exact.\n */\nimport { CommerceError } from '../../core';\n\nconst DECIMAL_STRING_PATTERN = /^\\d+(?:\\.\\d+)?$/;\n\n/**\n * Parses a canonical decimal display amount (e.g. \"0.01\") into base units\n * for an asset with the given number of decimals, without floating point.\n *\n * Throws `CommerceError('PAYMENT_INVALID')` if the string is not a plain\n * non-negative decimal, or if it carries more fractional digits than the\n * asset supports.\n */\nexport function parseCanonicalAmount(amount: string, decimals: number): bigint {\n if (!Number.isInteger(decimals) || decimals < 0) {\n throw new CommerceError('INTERNAL_ERROR', `Invalid asset decimals: ${decimals}`);\n }\n if (!DECIMAL_STRING_PATTERN.test(amount)) {\n throw new CommerceError(\n 'PAYMENT_INVALID',\n `Amount \"${amount}\" is not a valid non-negative decimal string`,\n {\n details: { amount },\n },\n );\n }\n\n const [integerPart = '0', fractionPart = ''] = amount.split('.');\n\n if (fractionPart.length > decimals) {\n throw new CommerceError(\n 'PAYMENT_INVALID',\n `Amount \"${amount}\" has more precision than the asset supports (${decimals} decimals)`,\n { details: { amount, assetDecimals: decimals } },\n );\n }\n\n const paddedFraction = fractionPart.padEnd(decimals, '0');\n const combined = `${integerPart}${paddedFraction}`;\n return BigInt(combined);\n}\n","// The Solana fee payer an offer names, read from the facilitator's `/supported`\nimport type { SupportedResponse } from '@x402/core/types';\nimport { CommerceError } from '../../../core';\nimport { normalizeAddress } from '../addresses';\nimport type { FacilitatorBinding } from '../facilitator';\nimport { X402_VERSION } from './constants';\nimport type { ProviderContext, SvmOffer } from './types';\n\n// How long a `/supported` snapshot names the Solana fee payer of new offers\nconst SUPPORTED_TTL_MS = 60_000;\n\n/** Returns the fee payer lookup, with its `/supported` snapshot, for one provider */\nexport function createSvmFeePayerSource(\n ctx: ProviderContext,\n): (offer: SvmOffer) => Promise<string> {\n const { clock, remoteBinding } = ctx;\n\n // A Solana offer carries the fee payer the facilitator names in `/supported`.\n // A snapshot lasts SUPPORTED_TTL_MS, and a refresh keeps the previous fee\n // payer while the facilitator still lists it, so a challenge and the retry\n // that pays it agree.\n let supportedSnapshot:\n | { readonly at: number; readonly response: Promise<SupportedResponse> }\n | undefined;\n const feePayers = new Map<string, string>();\n\n function currentSupported(): Promise<SupportedResponse> {\n const now = clock.monotonicMs();\n if (supportedSnapshot && now - supportedSnapshot.at < SUPPORTED_TTL_MS) {\n return supportedSnapshot.response;\n }\n const remote = remoteBinding as Extract<FacilitatorBinding, { kind: 'remote' }>;\n const response = remote.supported();\n const snapshot = { at: now, response };\n supportedSnapshot = snapshot;\n // A failed fetch is not kept; the next challenge asks again\n response.catch(() => {\n if (supportedSnapshot === snapshot) supportedSnapshot = undefined;\n });\n return response;\n }\n\n async function svmFeePayer(offer: SvmOffer): Promise<string> {\n let supported: SupportedResponse;\n try {\n supported = await currentSupported();\n } catch (cause) {\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n `x402 provider: facilitator ${offer.binding.describe} did not answer /supported, which names the Solana fee payer`,\n { cause },\n );\n }\n const listed = supported.kinds.find(\n (kind) =>\n kind.x402Version === X402_VERSION &&\n kind.scheme === 'exact' &&\n kind.network === offer.network,\n )?.extra?.['feePayer'];\n const previous = feePayers.get(offer.network);\n const stillSigns =\n previous !== undefined &&\n (previous === listed || Object.values(supported.signers).some((s) => s.includes(previous)));\n const feePayer = stillSigns ? previous : listed;\n if (typeof feePayer !== 'string' || normalizeAddress(offer.profile, feePayer) === undefined) {\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n `x402 provider: facilitator ${offer.binding.describe} names no Solana fee payer for ${offer.network}`,\n );\n }\n feePayers.set(offer.network, feePayer);\n return feePayer;\n }\n\n return svmFeePayer;\n}\n","// Readiness: each offer's chain, asset and facilitator support, cached briefly\n\nimport type { SupportedKind } from '@x402/core/types';\nimport { PERMIT2_ADDRESS, x402ExactPermit2ProxyAddress } from '@x402/evm';\nimport { erc20Abi } from 'viem';\nimport { type AdapterHealth, CommerceError } from '../../../core';\nimport { redactedErrorText } from '../../../core/errors';\nimport { isRecord } from '../../../core/is-record';\nimport { normalizeAddress } from '../addresses';\nimport type { createLocalPublicClient } from '../chain';\nimport type { FacilitatorBinding } from '../facilitator';\nimport { describeDeploymentMode } from '../networks';\nimport { x402OfferName } from '../options';\nimport { HEALTH_TIMEOUT_MS, X402_VERSION } from './constants';\nimport type { NearOffer, Offer, ProviderContext, SvmOffer } from './types';\n\n/** Builds the provider's `health`, which probes every offer and caches the result */\nexport function createHealthCheck(ctx: ProviderContext): () => Promise<AdapterHealth> {\n const { offers, clock, deploymentMode, remoteBinding, svm, near } = ctx;\n\n // One offer's chain, asset and facilitator support. `kinds` fetches the\n // remote facilitator's `/supported` once per probe, shared by every offer.\n async function offerHealth(\n offer: Offer,\n kinds: () => Promise<readonly SupportedKind[]>,\n ): Promise<{ readonly status: 'pass' | 'fail'; readonly detail: string }> {\n if (offer.family === 'svm') return svmOfferHealth(offer, kinds);\n if (offer.family === 'near') return nearOfferHealth(offer, kinds);\n const { profile, rpcOrigin, healthClient, binding } = offer;\n const chainId = await healthClient.getChainId();\n if (chainId !== profile.chainId) {\n return {\n status: 'fail',\n detail: `RPC at ${rpcOrigin} reports chain id ${chainId}, expected ${profile.chainId} (${profile.displayName})`,\n };\n }\n\n const code = await healthClient.getCode({ address: offer.asset });\n if (!code || code === '0x') {\n return {\n status: 'fail',\n detail: `No contract code found at configured asset address ${offer.asset}`,\n };\n }\n // Decimals scale signed amounts; verify them on-chain, as for Solana and NEAR\n const decimals = await healthClient.readContract({\n address: offer.asset,\n abi: erc20Abi,\n functionName: 'decimals',\n });\n if (decimals !== offer.assetDecimals) {\n return {\n status: 'fail',\n detail: `Token ${offer.asset} has ${decimals} decimals, configured ${offer.assetDecimals}`,\n };\n }\n // Permit2 offers settle through two contracts the merchant does not deploy\n if (offer.method === 'permit2') {\n for (const [name, address] of PERMIT2_CONTRACTS) {\n const deployed = await healthClient.getCode({ address });\n if (!deployed || deployed === '0x') {\n return {\n status: 'fail',\n detail: `No ${name} contract code found at ${address} on ${profile.displayName}`,\n };\n }\n }\n }\n const contracts = `asset ${offer.asset}${offer.method === 'permit2' ? ', Permit2 and its x402 proxy' : ''}`;\n\n if (binding.kind === 'remote') {\n // Reachable is not enough: a facilitator that does not carry our\n // scheme on our network fails every payment after the buyer has signed\n const supportsUs = (await kinds()).some(\n (kind) =>\n kind.x402Version === X402_VERSION &&\n kind.scheme === 'exact' &&\n kind.network === offer.network,\n );\n if (!supportsUs) {\n return {\n status: 'fail',\n detail:\n `Facilitator ${binding.describe} does not advertise x402 v${X402_VERSION} scheme=exact ` +\n `on ${offer.network} (${profile.displayName}); no payment on this deployment can settle`,\n };\n }\n return {\n status: 'pass',\n detail:\n `${describeDeploymentMode(deploymentMode)}: RPC ${rpcOrigin} reachable, chain id ` +\n `${profile.chainId} (${profile.displayName}), ${contracts} have code, ` +\n `facilitator ${binding.describe} supports exact/${offer.network}`,\n };\n }\n\n // An RPC reports whatever chain id it was started with, so the id cannot\n // prove this is a dev chain. An Anvil-only RPC method must answer before\n // a local facilitator counts as healthy.\n const isAnvil = await probeIsAnvilNode(healthClient);\n if (!isAnvil) {\n return {\n status: 'fail',\n detail:\n `RPC at ${rpcOrigin} reports chain id ${profile.chainId} but does not answer ` +\n '\"anvil_nodeInfo\", so it does not look like a local Anvil dev node. Refusing to treat it ' +\n 'as safe for a local-facilitator dev key.',\n };\n }\n\n return {\n status: 'pass',\n detail:\n `${describeDeploymentMode(deploymentMode)}: RPC ${rpcOrigin} reachable, chain id ` +\n `${profile.chainId}, ${contracts} have code, confirmed Anvil dev node`,\n };\n }\n\n // A Solana offer's cluster, mint and fee payer. The CAIP-2 reference is the\n // start of the genesis hash, so the RPC proves which cluster it serves.\n async function svmOfferHealth(\n offer: SvmOffer,\n kinds: () => Promise<readonly SupportedKind[]>,\n ): Promise<{ readonly status: 'pass' | 'fail'; readonly detail: string }> {\n const { profile, rpcOrigin, binding } = offer;\n // A missing Solana peer fails readiness, not the first paid request\n const svmModule = await svm();\n const genesis = await jsonRpc(offer.rpcUrl, 'getGenesisHash', []);\n const cluster = typeof genesis === 'string' ? `solana:${genesis.slice(0, 32)}` : undefined;\n if (cluster !== offer.network) {\n return {\n status: 'fail',\n detail: `RPC at ${rpcOrigin} serves ${cluster ?? 'an unknown cluster'}, expected ${offer.network} (${profile.displayName})`,\n };\n }\n const mint = await jsonRpc(offer.rpcUrl, 'getAccountInfo', [\n offer.asset,\n { encoding: 'base64' },\n ]);\n const mintInfo = readMint(mint);\n if (mintInfo === undefined) {\n return {\n status: 'fail',\n detail: `No initialized token mint found at configured asset address ${offer.asset}`,\n };\n }\n const { decimals, tokenProgram } = mintInfo;\n if (decimals !== offer.assetDecimals) {\n return {\n status: 'fail',\n detail: `Mint ${offer.asset} has ${decimals} decimals, configured ${offer.assetDecimals}`,\n };\n }\n // Without the payee's token account every payment fails the facilitator's\n // simulation, after the buyer signed\n const payeeAccount = await svmModule.associatedTokenAccount(\n offer.payTo,\n offer.asset,\n tokenProgram,\n );\n const account = await jsonRpc(offer.rpcUrl, 'getAccountInfo', [\n payeeAccount,\n { encoding: 'base64' },\n ]);\n const accountValue = isRecord(account) ? account['value'] : undefined;\n if (!isRecord(accountValue) || accountValue['owner'] !== tokenProgram) {\n return {\n status: 'fail',\n detail: `payTo ${offer.payTo} has no token account for mint ${offer.asset}; create its associated token account (${payeeAccount}) before taking payments`,\n };\n }\n const feePayer = (await kinds()).find(\n (kind) =>\n kind.x402Version === X402_VERSION &&\n kind.scheme === 'exact' &&\n kind.network === offer.network,\n )?.extra?.['feePayer'];\n if (typeof feePayer !== 'string' || normalizeAddress(profile, feePayer) === undefined) {\n return {\n status: 'fail',\n detail:\n `Facilitator ${binding.describe} does not advertise x402 v${X402_VERSION} scheme=exact ` +\n `on ${offer.network} (${profile.displayName}) with a fee payer; no payment on this deployment can settle`,\n };\n }\n return {\n status: 'pass',\n detail:\n `${describeDeploymentMode(deploymentMode)}: RPC ${rpcOrigin} serves ${profile.displayName}, ` +\n `mint ${offer.asset} has ${decimals} decimals and a token account for ${offer.payTo}, ` +\n `facilitator ${binding.describe} supports ` +\n `exact/${offer.network} with fee payer ${feePayer}`,\n };\n }\n\n // A NEAR offer's chain, token and merchant registration. The RPC's `status`\n // names the chain it serves; an account suffix such as `.testnet` proves nothing.\n async function nearOfferHealth(\n offer: NearOffer,\n kinds: () => Promise<readonly SupportedKind[]>,\n ): Promise<{ readonly status: 'pass' | 'fail'; readonly detail: string }> {\n const { profile, rpcOrigin, binding, rpcUrl } = offer;\n // A missing NEAR peer fails readiness, not the first paid request\n await near();\n const status = await jsonRpc(rpcUrl, 'status', []);\n const chainId = isRecord(status) ? status['chain_id'] : undefined;\n const expected = offer.network.slice('near:'.length);\n if (chainId !== expected) {\n return {\n status: 'fail',\n detail: `RPC at ${rpcOrigin} serves chain ${String(chainId ?? 'unknown')}, expected ${expected} (${profile.displayName})`,\n };\n }\n const token = await jsonRpc(rpcUrl, 'query', {\n request_type: 'view_account',\n finality: 'final',\n account_id: offer.asset,\n });\n if (!isRecord(token) || token['code_hash'] === NEAR_EMPTY_CODE_HASH) {\n return {\n status: 'fail',\n detail: `No contract code found at configured asset account ${offer.asset}`,\n };\n }\n const metadata = await nearView(rpcUrl, offer.asset, 'ft_metadata', {});\n const decimals = isRecord(metadata) ? metadata['decimals'] : undefined;\n if (decimals !== offer.assetDecimals) {\n return {\n status: 'fail',\n detail: `Token ${offer.asset} has ${String(decimals)} decimals, configured ${offer.assetDecimals}`,\n };\n }\n // An unregistered recipient makes every transfer fail after the relayer\n // paid for it. A token without NEP-145 storage management needs none.\n let registered = true;\n try {\n registered =\n (await nearView(rpcUrl, offer.asset, 'storage_balance_of', {\n account_id: offer.payTo,\n })) !== null;\n } catch (err) {\n if (!/MethodNotFound|MethodResolveError/i.test(redactedErrorText(err))) throw err;\n }\n if (!registered) {\n return {\n status: 'fail',\n detail: `payTo ${offer.payTo} has no storage registered with token ${offer.asset}; register it (NEP-145 storage_deposit) before taking payments`,\n };\n }\n const listed = (await kinds()).some(\n (kind) =>\n kind.x402Version === X402_VERSION &&\n kind.scheme === 'exact' &&\n kind.network === offer.network,\n );\n if (!listed) {\n return {\n status: 'fail',\n detail:\n `Facilitator ${binding.describe} does not advertise x402 v${X402_VERSION} scheme=exact ` +\n `on ${offer.network} (${profile.displayName}); no payment on this deployment can settle`,\n };\n }\n return {\n status: 'pass',\n detail:\n `${describeDeploymentMode(deploymentMode)}: RPC ${rpcOrigin} serves ${expected}, ` +\n `token ${offer.asset} has ${decimals} decimals and storage for ${offer.payTo}, ` +\n `facilitator ${binding.describe} supports exact/${offer.network}`,\n };\n }\n\n // Check all offers and report each status; any failure fails readiness.\n // Challenges retain the complete offer list.\n async function computeHealth(): Promise<AdapterHealth> {\n const startedAt = clock.monotonicMs();\n const checkedAt = clock.nowIso();\n let supported: Promise<readonly SupportedKind[]> | undefined;\n const kinds = () => {\n supported ??= (remoteBinding as Extract<FacilitatorBinding, { kind: 'remote' }>)\n .supported()\n .then((response) => response.kinds);\n return supported;\n };\n\n const results = await Promise.all(\n offers.map((offer) =>\n offerHealth(offer, kinds).catch((err: unknown) => ({\n status: 'fail' as const,\n detail: `x402 health check failed: ${redactedErrorText(err)}`,\n })),\n ),\n );\n const failed = results.some((result) => result.status === 'fail');\n const details = offers.flatMap((offer, index) => {\n const result = results[index] as (typeof results)[number];\n if (failed && result.status !== 'fail') return [];\n return [offers.length === 1 ? result.detail : `${x402OfferName(offer)}: ${result.detail}`];\n });\n return {\n status: failed ? 'fail' : 'pass',\n detail: details.join('; '),\n components: offers.map((offer, index) => ({\n name: x402OfferName(offer),\n status: (results[index] as (typeof results)[number]).status,\n })),\n checkedAt,\n durationMs: clock.monotonicMs() - startedAt,\n };\n }\n\n // A probe makes several upstream calls, and `/ready` is unauthenticated.\n // A short TTL plus one shared in-flight probe keeps upstream volume independent\n // of request volume, for library callers as well as the gateway, whose\n // readiness probe adds its own cache on top. Pass and fail share the TTL: a\n // shorter one for fail would bring the load back during an RPC outage,\n // exactly when each call is slowest.\n const HEALTH_CACHE_MS = 5_000;\n let cachedHealth: { at: number; value: AdapterHealth } | undefined;\n let inFlightHealth: Promise<AdapterHealth> | undefined;\n\n async function health(): Promise<AdapterHealth> {\n const now = clock.monotonicMs();\n if (cachedHealth && now - cachedHealth.at < HEALTH_CACHE_MS) {\n return cachedHealth.value;\n }\n if (inFlightHealth) return inFlightHealth;\n\n inFlightHealth = computeHealth()\n .then((value) => {\n cachedHealth = { at: clock.monotonicMs(), value };\n return value;\n })\n .finally(() => {\n inFlightHealth = undefined;\n });\n return inFlightHealth;\n }\n\n return health;\n}\n\nconst PERMIT2_CONTRACTS = [\n ['Permit2', PERMIT2_ADDRESS],\n ['x402 exact Permit2 proxy', x402ExactPermit2ProxyAddress],\n] as const;\n\nconst TOKEN_PROGRAMS: ReadonlySet<string> = new Set([\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n]);\n\n// The decimals and owning token program of an initialized SPL Token or\n// Token-2022 mint, from a base64 `getAccountInfo` result: byte 44 holds the\n// decimals, byte 45 the initialized flag\nfunction readMint(\n result: unknown,\n): { readonly decimals: number; readonly tokenProgram: string } | undefined {\n const value = isRecord(result) ? result['value'] : undefined;\n if (!isRecord(value)) return undefined;\n const owner = value['owner'];\n if (typeof owner !== 'string' || !TOKEN_PROGRAMS.has(owner)) return undefined;\n const data = value['data'];\n if (!Array.isArray(data) || typeof data[0] !== 'string') return undefined;\n const bytes = Buffer.from(data[0], 'base64');\n const decimals = bytes[44];\n return bytes.length >= 82 && bytes[45] === 1 && decimals !== undefined\n ? { decimals, tokenProgram: owner }\n : undefined;\n}\n\n// One JSON-RPC call for health(), bounded like the EVM client's\nasync function jsonRpc(rpcUrl: string, method: string, params: unknown): Promise<unknown> {\n const response = await fetch(rpcUrl, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ jsonrpc: '2.0', id: 1, method, params }),\n signal: AbortSignal.timeout(HEALTH_TIMEOUT_MS),\n });\n const body = (await response.json()) as { result?: unknown; error?: unknown };\n if (body.error !== undefined) {\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n `RPC ${method} failed: ${JSON.stringify(body.error)}`,\n );\n }\n return body.result;\n}\n\n// A NEAR contract view call at final finality, its result parsed as JSON\nasync function nearView(\n rpcUrl: string,\n accountId: string,\n method: string,\n args: Record<string, unknown>,\n): Promise<unknown> {\n const result = await jsonRpc(rpcUrl, 'query', {\n request_type: 'call_function',\n finality: 'final',\n account_id: accountId,\n method_name: method,\n args_base64: Buffer.from(JSON.stringify(args)).toString('base64'),\n });\n const bytes = isRecord(result) ? result['result'] : undefined;\n if (!Array.isArray(bytes)) {\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n `NEAR view ${method} returned no result`,\n );\n }\n return JSON.parse(Buffer.from(bytes as number[]).toString('utf8'));\n}\n\n// The code hash of an account without a contract\nconst NEAR_EMPTY_CODE_HASH = '11111111111111111111111111111111';\n\n/**\n * True only when the RPC answers Anvil's own `anvil_nodeInfo` method. A public\n * node, Base Sepolia included, answers \"method not found\". Never throws.\n */\nasync function probeIsAnvilNode(\n client: ReturnType<typeof createLocalPublicClient>,\n): Promise<boolean> {\n // Anvil-only method, absent from viem's typed PublicRpcSchema, hence the cast\n const request = client.request as unknown as (args: {\n method: string;\n params: unknown[];\n }) => Promise<unknown>;\n try {\n await request({ method: 'anvil_nodeInfo', params: [] });\n return true;\n } catch {\n return false;\n }\n}\n","/**\n * viem clients for the x402 provider, built on the configured `rpcUrl`. The\n * SDK uses the client it is handed, so the provider's chain calls reach no\n * other RPC.\n *\n * `createLocalPublicClient` backs health checks on the configured network.\n * `createLocalFacilitatorClient` handles settlement and defaults to the local\n * chain ID, the only network the gateway's in-process facilitator serves.\n * Deployment tools and test facilitators can pass another chain ID.\n */\nimport {\n type Account,\n type Chain,\n type Client,\n createPublicClient,\n createWalletClient,\n http,\n type PublicActions,\n type PublicClient,\n publicActions,\n type Transport,\n type WalletActions,\n} from 'viem';\nimport { privateKeyToAccount } from 'viem/accounts';\nimport { LOCAL_CHAIN_ID } from './networks';\n\n/** A wallet client that can also read chain state, matching x402's `SignerWallet` */\nexport type LocalFacilitatorClient = Client<\n Transport,\n Chain,\n Account,\n undefined,\n PublicActions<Transport, Chain, Account> & WalletActions<Chain, Account>\n>;\n\n/** CAIP-2 identifier the local dev chain is advertised under */\nexport const LOCAL_NETWORK = `eip155:${LOCAL_CHAIN_ID}`;\n\n/**\n * Chain id carried by a CAIP-2 `eip155` network identifier, or `undefined` for\n * anything else. A caller must never fall back to a default chain id, because\n * the chain id is part of the EIP-712 domain the buyer signed.\n */\nexport function chainIdFromCaip2(network: string): number | undefined {\n const match = /^eip155:(\\d+)$/.exec(network);\n if (!match?.[1]) return undefined;\n const chainId = Number(match[1]);\n return Number.isSafeInteger(chainId) && chainId > 0 ? chainId : undefined;\n}\n\n// `chainId` defaults to the local dev chain; callers on another chain pass its id\nfunction buildLocalChain(rpcUrl: string, chainId: number = LOCAL_CHAIN_ID): Chain {\n return {\n id: chainId,\n name: 'agent-commerce-local',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: {\n default: { http: [rpcUrl] },\n },\n } satisfies Chain;\n}\n\n/**\n * A read-only viem `PublicClient`.\n *\n * `timeoutMs` goes to viem's `http()` transport, which aborts the underlying\n * `fetch` when it expires rather than only abandoning the wait. Omit it to keep\n * viem's default of 10s.\n */\nexport function createLocalPublicClient(\n rpcUrl: string,\n timeoutMs?: number,\n chainId?: number,\n): PublicClient {\n return createPublicClient({\n chain: buildLocalChain(rpcUrl, chainId),\n transport: http(rpcUrl, timeoutMs !== undefined ? { timeout: timeoutMs } : undefined),\n });\n}\n\n/**\n * A viem `WalletClient` extended with public actions, for the local\n * facilitator signer only: the SDK's settlement both writes and reads through\n * it.\n *\n * LOCAL DEVELOPMENT ONLY. The key behind it pays gas on the dev chain. It is\n * usually an Anvil well-known key, and must never be a merchant, buyer or\n * production key.\n */\nexport function createLocalFacilitatorClient(\n rpcUrl: string,\n signerPrivateKey: `0x${string}`,\n chainId?: number,\n): LocalFacilitatorClient {\n const chain = buildLocalChain(rpcUrl, chainId);\n const account = privateKeyToAccount(signerPrivateKey);\n return createWalletClient({\n account,\n chain,\n transport: http(rpcUrl),\n }).extend(publicActions);\n}\n","/**\n * Shared facilitator interface and remote HTTP binding. The in-process EVM\n * binding lives in `local-facilitator.ts` to keep EVM peers out of this module.\n * `@x402/core` loads statically; `@coinbase/x402` loads only for `auth.type: cdp`.\n * Both bindings use the SDK to verify authorizations and broadcast transfers.\n *\n * Each verify or settle call gets a session with its own `transportFailed()`\n * flag, isolating concurrent payments' transport failures.\n */\nimport { HTTPFacilitatorClient } from '@x402/core/http';\nimport {\n type Network,\n type PaymentPayload,\n type PaymentRequirements,\n SettleError,\n type SettleResponse,\n type SupportedResponse,\n VerifyError,\n type VerifyResponse,\n} from '@x402/core/types';\nimport { CommerceError } from '../../core';\nimport type { FacilitatorAuth } from './guardrails';\n\n/** One verify or one settle, with its own transport-failure flag */\nexport interface FacilitatorSession {\n verify(payload: PaymentPayload, requirements: PaymentRequirements): Promise<VerifyResponse>;\n settle(payload: PaymentPayload, requirements: PaymentRequirements): Promise<SettleResponse>;\n /**\n * True when the call produced no verdict: the local binding sets it when an\n * RPC call to the chain fails in transport, the remote binding on every\n * throw other than a 400 refusal of a verify or a settle.\n *\n * The SDK's `exact`/EVM scheme reports its own RPC errors as ordinary\n * verification failures: an unreachable node comes back as\n * `invalid_exact_evm_signature`. Without this flag the buyer would be told\n * their signature is bad for a payment nothing checked.\n */\n transportFailed(): boolean;\n}\n\ninterface BindingBase {\n /** Human-readable, never a credential */\n readonly describe: string;\n open(): FacilitatorSession;\n}\n\nexport type FacilitatorBinding =\n | (BindingBase & { readonly kind: 'local' })\n | (BindingBase & {\n readonly kind: 'remote';\n /**\n * SDK-parsed `/supported` response, including kinds and their `extra`\n * (such as Solana's fee payer), extensions and signers. health() reads\n * it, and so does a Solana challenge, which names the fee payer\n */\n supported(): Promise<SupportedResponse>;\n });\n\n/** Bounds each receipt wait of the in-process facilitator, and each verify or settle request to a remote one */\nexport const SETTLEMENT_CONFIRMATION_TIMEOUT_MS = 60_000;\n/**\n * Bounds a remote `/supported` read, retries included. Readiness and every\n * Solana challenge wait on it, and the SDK retries a 429 for up to 30 s a time.\n */\nexport const SUPPORTED_TIMEOUT_MS = 10_000;\n\nexport interface RemoteFacilitatorOptions {\n readonly url: string;\n readonly auth: FacilitatorAuth;\n}\n\n// The SDK's path-keyed auth-header shape. A flat object throws inside it\ntype AuthHeaderFactory = () => Promise<Record<string, Record<string, string>>>;\n\n/**\n * CDP needs a fresh JWT per request over method, host and path, which a static\n * header cannot express. The optional peer `@coinbase/x402` does the signing.\n * It is imported dynamically, so only `auth.type: cdp` pulls in the CDP SDK and\n * its Solana, axios and JOSE dependencies.\n *\n * The import starts at construction, so a missing peer fails the health check\n * before any payment needs it. A payment that arrives first fails as\n * `PAYMENT_PROVIDER_UNAVAILABLE`, never as a rejection blamed on the buyer.\n */\nfunction cdpAuthHeaders(apiKeyId: string, apiKeySecret: string): AuthHeaderFactory {\n const loading = import('@coinbase/x402').then(\n (mod) => mod.createCdpAuthHeaders(apiKeyId, apiKeySecret),\n (cause: unknown) => {\n throw new CommerceError(\n 'CONFIG_INVALID',\n 'x402 provider: facilitator.auth.type is \"cdp\", which needs the optional peer ' +\n '\"@coinbase/x402\". Install it (npm install @coinbase/x402), or use a facilitator ' +\n 'that accepts a static token with auth.type \"bearer\".',\n { cause },\n );\n },\n );\n // Nothing awaits this before the first call, so without a handler a failed\n // import would be an unhandled rejection at startup\n loading.catch(() => {});\n\n return async () => {\n const create = await loading;\n if (!create) {\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n 'x402 provider: @coinbase/x402 returned no auth-header factory',\n );\n }\n return (await create()) as Record<string, Record<string, string>>;\n };\n}\n\n/**\n * A 400 from `/verify` whose body names an `invalidReason` is the facilitator\n * refusing the payment, so it returns as an invalid verdict. The SDK throws it\n * as a `VerifyError`, which keeps the status and reason but not `isValid`.\n * A 400 without a reason and every other status, 401, 403, 429 and 5xx\n * included, are rethrown as \"no verdict\".\n */\nfunction verdictFromVerifyError(err: unknown): VerifyResponse {\n if (\n err instanceof VerifyError &&\n err.statusCode === 400 &&\n typeof err.invalidReason === 'string'\n ) {\n return {\n isValid: false,\n invalidReason: err.invalidReason,\n ...(err.payer !== undefined ? { payer: err.payer } : {}),\n };\n }\n throw err;\n}\n\n/**\n * Treat a remote 400 as a refusal only when it names a reason and no\n * transaction. A transaction may have broadcast; other errors have no\n * verdict. `SettleError` does not retain the response's `success`.\n */\nfunction verdictFromSettleError(err: unknown, network: Network): SettleResponse {\n if (\n err instanceof SettleError &&\n err.statusCode === 400 &&\n typeof err.errorReason === 'string' &&\n err.errorReason !== '' &&\n !err.transaction\n ) {\n return {\n success: false,\n errorReason: err.errorReason,\n transaction: '',\n network: err.network ?? network,\n ...(err.payer !== undefined ? { payer: err.payer } : {}),\n };\n }\n throw err;\n}\n\n/**\n * An HTTP facilitator. The SDK client produces the auth headers per request;\n * this module never logs them, and they appear neither in `/.well-known` nor\n * in `describe`.\n */\nexport function createRemoteFacilitatorBinding(\n options: RemoteFacilitatorOptions,\n): FacilitatorBinding {\n const auth = options.auth;\n let createAuthHeaders: AuthHeaderFactory | undefined;\n if (auth.type === 'bearer') {\n createAuthHeaders = async () => {\n // Path-keyed, as the SDK requires (see `AuthHeaderFactory`)\n const headers = { Authorization: `Bearer ${auth.token}` };\n return { verify: headers, settle: headers, supported: headers };\n };\n } else if (auth.type === 'cdp') {\n createAuthHeaders = cdpAuthHeaders(auth.apiKeyId, auth.apiKeySecret);\n }\n\n const client = new HTTPFacilitatorClient({\n url: options.url,\n timeoutMs: SETTLEMENT_CONFIRMATION_TIMEOUT_MS,\n ...(createAuthHeaders ? { createAuthHeaders } : {}),\n });\n const supportedClient = new HTTPFacilitatorClient({\n url: options.url,\n timeoutMs: SUPPORTED_TIMEOUT_MS,\n ...(createAuthHeaders ? { createAuthHeaders } : {}),\n });\n\n return {\n kind: 'remote',\n describe: `remote ${new URL(options.url).origin} (auth=${auth.type})`,\n open(): FacilitatorSession {\n let failed = false;\n const watch = async <T>(call: () => Promise<T>): Promise<T> => {\n try {\n return await call();\n } catch (err) {\n // After known 400 refusals, a throw gives no verdict. It may be\n // transport or authentication failure; settlement may have broadcast.\n // Do not record it as a payer refusal.\n failed = true;\n throw err;\n }\n };\n return {\n verify: (payload, requirements) =>\n watch(() => client.verify(payload, requirements).catch(verdictFromVerifyError)),\n settle: (payload, requirements) =>\n watch(() =>\n client\n .settle(payload, requirements)\n .catch((err: unknown) => verdictFromSettleError(err, requirements.network)),\n ),\n transportFailed: () => failed,\n };\n },\n supported: () => withDeadline(supportedClient.getSupported(), SUPPORTED_TIMEOUT_MS),\n };\n}\n\n// The SDK bounds each attempt but not its retry waits. `Promise.race` keeps\n// a handler on the abandoned call, so its later rejection is not unhandled.\nfunction withDeadline<T>(call: Promise<T>, ms: number): Promise<T> {\n let timer: NodeJS.Timeout | undefined;\n const deadline = new Promise<never>((_, reject) => {\n timer = setTimeout(\n () =>\n reject(\n new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n `x402 provider: facilitator /supported did not answer within ${ms / 1000} s`,\n ),\n ),\n ms,\n );\n timer.unref();\n });\n return Promise.race([call, deadline]).finally(() => clearTimeout(timer));\n}\n","/**\n * In-process `x402Facilitator` using viem through `@x402/evm`.\n * EVM imports stay here so the remote binding can load without them.\n */\nimport { x402Facilitator } from '@x402/core/facilitator';\nimport type { Network } from '@x402/core/types';\nimport { toFacilitatorEvmSigner } from '@x402/evm';\nimport { registerExactEvmScheme } from '@x402/evm/exact/facilitator';\nimport type { LocalFacilitatorClient } from './chain';\nimport {\n type FacilitatorBinding,\n type FacilitatorSession,\n SETTLEMENT_CONFIRMATION_TIMEOUT_MS,\n} from './facilitator';\n\n/**\n * Registers `exact`/EVM for one network, so a payload naming another chain\n * finds no matching scheme\n */\nexport function createLocalFacilitatorBinding(\n client: LocalFacilitatorClient,\n network: string,\n isTransportError: (err: unknown) => boolean,\n): FacilitatorBinding {\n const build = (): { facilitator: x402Facilitator; failed: () => boolean } => {\n let failed = false;\n const watch = <T>(promise: Promise<T>): Promise<T> =>\n promise.catch((err: unknown) => {\n if (isTransportError(err)) failed = true;\n throw err;\n });\n\n // Watch the `FacilitatorEvmSigner` methods for transport failures and expose\n // `client.account.address` as the flat `address` the SDK expects\n const signer = {\n address: client.account.address,\n readContract: (args: Parameters<LocalFacilitatorClient['readContract']>[0]) =>\n watch(client.readContract(args)),\n verifyTypedData: (args: Parameters<LocalFacilitatorClient['verifyTypedData']>[0]) =>\n watch(client.verifyTypedData(args)),\n writeContract: (args: Parameters<LocalFacilitatorClient['writeContract']>[0]) =>\n watch(client.writeContract(args)),\n sendTransaction: (args: Parameters<LocalFacilitatorClient['sendTransaction']>[0]) =>\n watch(client.sendTransaction(args)),\n waitForTransactionReceipt: (\n args: Parameters<LocalFacilitatorClient['waitForTransactionReceipt']>[0],\n ) => watch(client.waitForTransactionReceipt(args)),\n getCode: (args: Parameters<LocalFacilitatorClient['getCode']>[0]) =>\n watch(client.getCode(args)),\n } as unknown as Parameters<typeof toFacilitatorEvmSigner>[0];\n\n // Bound receipt waits so a timeout returns `settlement_pending` with the\n // broadcast hash\n const facilitator = registerExactEvmScheme(new x402Facilitator(), {\n signer: toFacilitatorEvmSigner(signer, {\n confirmationTimeoutMs: SETTLEMENT_CONFIRMATION_TIMEOUT_MS,\n }),\n networks: network as Network,\n });\n\n return { facilitator, failed: () => failed };\n };\n\n return {\n kind: 'local',\n describe: 'local (in-process)',\n open(): FacilitatorSession {\n const { facilitator, failed } = build();\n return {\n verify: (payload, requirements) => facilitator.verify(payload, requirements),\n settle: (payload, requirements) => facilitator.settle(payload, requirements),\n transportFailed: failed,\n };\n },\n };\n}\n","/**\n * How the provider reads a facilitator's verify and settle results: which\n * reasons are verdicts, which leave the outcome unknown, and which errors mean\n * no verdict was obtained\n */\nimport {\n BaseError,\n ContractFunctionRevertedError,\n HttpRequestError,\n TimeoutError,\n WaitForTransactionReceiptTimeoutError,\n} from 'viem';\nimport { redactedErrorText } from '../../../core/errors';\n\n// `SettleResponse.errorReason` the SDK uses for \"broadcast, not confirmed\"\nexport const SETTLEMENT_PENDING_REASON = 'settlement_pending';\n/**\n * Each family's catch-all for a throw from the broadcast call, and its reason\n * for a transaction that failed on chain. Only the second carries a\n * transaction reference. A failure the SDK recognizes before the broadcast gets\n * its own reason instead. The EVM Permit2 path appends the thrown message as\n * `: <message>`. On NEAR the second is a failed inner `ft_transfer` receipt.\n */\nconst TRANSACTION_FAILED_REASONS = [\n 'invalid_exact_evm_transaction_failed',\n 'invalid_exact_svm_transaction_failed',\n 'settlement_failed',\n];\nexport const isTransactionFailedReason = (reason: string | undefined): boolean =>\n reason !== undefined &&\n TRANSACTION_FAILED_REASONS.some((known) => reason === known || reason.startsWith(`${known}:`));\n/**\n * The one failure reason per family that names a transaction and proves\n * nothing moved: a reverted EVM receipt, a Solana transaction that failed on\n * chain, or a failed inner NEAR `ft_transfer` receipt. Any other failure that\n * names a transaction may have moved funds. The EVM SDK, for one, reports a\n * mined transfer whose `Transfer` log it cannot match as a failure with the hash.\n */\nexport const ON_CHAIN_FAILURE_REASONS: Readonly<Record<'evm' | 'svm' | 'near', string>> = {\n evm: 'invalid_exact_evm_transaction_failed',\n svm: 'invalid_exact_svm_transaction_failed',\n near: 'settlement_failed',\n};\n/**\n * Solana outcomes that leave the payment unknown: the facilitator is already\n * settling the same transaction for another request, or it confirmed the\n * transaction but could not yet see the transfer\n */\nexport const UNKNOWN_OUTCOME_REASONS: ReadonlySet<string> = new Set([\n 'duplicate_settlement',\n 'post_settlement_transfer_not_confirmed',\n]);\n/**\n * Facilitator configuration and chain-read failures yield no payment verdict,\n * so they count as provider failures rather than buyer refusals. The NEAR SDK\n * returns its reasons before submission. The Solana ones compare the offer the\n * gateway sent with the facilitator's own fee payers, or with the buyer's\n * echo, which the gateway already matched.\n */\nexport const NO_VERDICT_REASONS: ReadonlySet<string> = new Set([\n 'unexpected_verify_error',\n 'invalid_exact_near_no_relayer_configured',\n 'invalid_exact_near_current_block_height_unavailable',\n 'invalid_exact_near_access_key_lookup_failed',\n 'invalid_exact_near_account_lookup_failed',\n 'invalid_exact_near_token_account_lookup_failed',\n 'invalid_exact_near_balance_check_failed',\n 'invalid_exact_near_storage_check_failed',\n 'invalid_exact_svm_payload_missing_fee_payer',\n 'invalid_exact_svm_fee_payer_not_managed_by_facilitator',\n 'invalid_exact_svm_unsupported_scheme',\n 'invalid_exact_svm_network_mismatch',\n]);\n/**\n * NEAR settle failures that are verdicts. The NEAR specification leaves the\n * reason implementation-specific and the transaction empty, even after a\n * submission, so only the SDK's verification reasons, returned before it\n * submits, and a failed inner `ft_transfer` with its hash prove nothing moved.\n */\nconst NEAR_PRE_SUBMISSION_REASONS: ReadonlySet<string> = new Set([\n 'invalid_x402_version',\n 'unsupported_scheme',\n 'invalid_network',\n 'insufficient_funds',\n 'verification_failed',\n]);\nexport const isNearVerdict = (reason: string | undefined): boolean =>\n reason !== undefined &&\n (reason === 'settlement_failed' ||\n reason.startsWith('invalid_exact_near_') ||\n NEAR_PRE_SUBMISSION_REASONS.has(reason));\n/**\n * `invalidReason`/`errorReason` are `z.string()` in the SDK schema, with no\n * length or charset bound. They reach the buyer's error, the persisted events\n * and the merchant's ledger. A remote facilitator controls these values, so\n * they are treated as untrusted input rather than diagnostic text.\n */\n// The SDKs' longest reason, a Solana compute-budget refusal, has 85 characters\nconst MAX_REASON_LENGTH = 128;\nconst REASON_SHAPE = /^[a-z0-9_.-]+$/i;\n\nexport function sanitizeReason(reason: string | undefined, fallback: string): string {\n if (reason === undefined) return fallback;\n const trimmed = reason.trim();\n if (trimmed.length === 0 || trimmed.length > MAX_REASON_LENGTH) return fallback;\n return REASON_SHAPE.test(trimmed) ? trimmed : fallback;\n}\n\n// viem wraps every failed contract call in ContractFunctionExecutionError, so\n// only the cause chain can show a revert. A revert alone does not prove nothing\n// moved, because viem also reports an RPC error on a send as one; settle()\n// relies on the SDK throwing only before the broadcast.\nexport function isOnChainRevertError(err: unknown): boolean {\n return (\n err instanceof BaseError && err.walk((e) => e instanceof ContractFunctionRevertedError) !== null\n );\n}\n\n/**\n * The `instanceof` checks cover what the pinned viem HTTP transport throws\n * (`HttpRequestError` for every fetch failure, including connection refused,\n * or `TimeoutError`) and what `waitForTransactionReceipt` throws when it stops\n * polling after a broadcast. Message matching is only a fallback for errors\n * outside those classes, such as a raw undici error, because message text can\n * change with any viem or undici upgrade.\n */\nexport function isProviderUnavailableError(err: unknown): boolean {\n if (\n err instanceof HttpRequestError ||\n err instanceof TimeoutError ||\n err instanceof WaitForTransactionReceiptTimeoutError\n ) {\n return true;\n }\n const message = redactedErrorText(err).toLowerCase();\n return (\n message.includes('econnrefused') ||\n message.includes('fetch failed') ||\n message.includes('enotfound') ||\n message.includes('etimedout') ||\n message.includes('timed out') ||\n message.includes('network error')\n );\n}\n","// Builds each offer from its options: validation, deployment guardrails and the facilitator binding\nimport type { Network } from '@x402/core/types';\nimport { isAddress } from 'viem';\nimport { CommerceError } from '../../../core';\nimport { normalizeAddress, sameAddress } from '../addresses';\nimport {\n createLocalFacilitatorClient,\n createLocalPublicClient,\n type LocalFacilitatorClient,\n} from '../chain';\nimport { assertDevKeyIsLocalOnly, assertPayToIsNotDevAddress, describeRpc } from '../dev-key-guard';\nimport { createRemoteFacilitatorBinding, type FacilitatorBinding } from '../facilitator';\nimport { resolveX402Deployment } from '../guardrails';\nimport { createLocalFacilitatorBinding } from '../local-facilitator';\nimport { type DeploymentMode, findX402Network } from '../networks';\nimport { HEALTH_TIMEOUT_MS } from './constants';\nimport { isProviderUnavailableError } from './reasons';\nimport type {\n Offer,\n X402MultiOfferProviderOptions,\n X402OfferOptions,\n X402ProviderOptions,\n} from './types';\n\n/**\n * Resolves provider and resource offers at construction, rejecting\n * misconfiguration before paid requests.\n */\nexport function resolveOffers(\n inputs: readonly X402OfferOptions[],\n options: X402ProviderOptions | X402MultiOfferProviderOptions,\n): {\n readonly offers: readonly Offer[];\n readonly resourceOffers: ReadonlyMap<string, readonly Offer[]>;\n /** Every distinct offer, the provider's first */\n readonly pool: readonly Offer[];\n readonly deploymentMode: DeploymentMode;\n readonly remoteBinding: FacilitatorBinding | undefined;\n} {\n // Share one remote binding, created after the first offer passes validation\n let remoteBinding: FacilitatorBinding | undefined;\n\n let mode: DeploymentMode | undefined;\n // An offer that several lists repeat is built, and health-checked, once\n const built = new Map<string, Offer>();\n const resolveList = (\n list: readonly X402OfferOptions[],\n field: (index: number, name: string) => string,\n ): readonly Offer[] => {\n const seen = new Set<string>();\n return list.map((input, index): Offer => {\n const at = (name: string) => field(index, name);\n // The network decides how the other fields are read. An unknown one\n // fails in `resolveX402Deployment` below.\n const known = findX402Network(input.network, options.customNetworks);\n if (known !== undefined && known.family !== 'evm') {\n const shape =\n known.family === 'svm' ? 'a Solana address (base58, 32 bytes)' : 'a NEAR account ID';\n for (const name of ['asset', 'payTo'] as const) {\n if (normalizeAddress(known, input[name]) === undefined) {\n throw new CommerceError('CONFIG_INVALID', `x402 provider: ${at(name)} is not ${shape}`);\n }\n }\n if (input.assetTransferMethod !== undefined) {\n throw new CommerceError(\n 'CONFIG_INVALID',\n `x402 provider: ${at('assetTransferMethod')} applies to EVM networks only`,\n );\n }\n } else {\n // Neither address is echoed: a swapped variable could contain a key.\n // Check mixed-case EIP-55 checksums here; config load checks only shape.\n if (!isAddress(input.asset)) {\n throw new CommerceError(\n 'CONFIG_INVALID',\n `x402 provider: ${at('asset')} is not a valid EVM address (0x and 40 hex characters; a mixed-case address needs a valid EIP-55 checksum)`,\n );\n }\n if (!isAddress(input.payTo)) {\n throw new CommerceError(\n 'CONFIG_INVALID',\n `x402 provider: ${at('payTo')} is not a valid EVM address (0x and 40 hex characters; a mixed-case address needs a valid EIP-55 checksum)`,\n );\n }\n // In every facilitator mode. `resolveX402Deployment` below also refuses\n // a dev payTo on any non-local deployment, whatever the RPC host.\n assertPayToIsNotDevAddress(input.rpcUrl, input.payTo);\n // The buyer signs the token's EIP-712 domain under EIP-3009, so the\n // requirement must name it. Permit2 has a domain of its own.\n if (\n (input.assetTransferMethod ?? 'eip3009') === 'eip3009' &&\n (!input.assetName || !input.assetVersion)\n ) {\n throw new CommerceError(\n 'CONFIG_INVALID',\n `x402 provider: an EIP-3009 offer needs ${at('assetName')} and ${at('assetVersion')}, the token's EIP-712 domain`,\n );\n }\n }\n if (!Number.isInteger(input.assetDecimals) || input.assetDecimals < 0) {\n throw new CommerceError(\n 'CONFIG_INVALID',\n `x402 provider: ${at('assetDecimals')} must be a non-negative integer`,\n );\n }\n // The chain id is signed into the buyer's EIP-712 domain, so a network it\n // cannot be resolved from fails here, never at request time\n const deployment = resolveX402Deployment({\n network: input.network,\n ...(options.customNetworks !== undefined ? { customNetworks: options.customNetworks } : {}),\n payTo: input.payTo,\n asset: input.asset,\n ...(input.assetName !== undefined ? { assetName: input.assetName } : {}),\n ...(input.assetVersion !== undefined ? { assetVersion: input.assetVersion } : {}),\n facilitator: options.facilitator,\n ...(options.allowMainnet !== undefined ? { allowMainnet: options.allowMainnet } : {}),\n ...(options.allowUnauthenticatedFacilitator !== undefined\n ? { allowUnauthenticatedFacilitator: options.allowUnauthenticatedFacilitator }\n : {}),\n // Every EVM offer names its decimals and, under EIP-3009, its domain\n allowOtherEvmToken: true,\n });\n const profile = deployment.profile;\n // Refuse offers mixing local, testnet and mainnet deployment modes\n if (mode !== undefined && deployment.mode !== mode) {\n throw new CommerceError(\n 'CONFIG_INVALID',\n `x402 provider: offers mix ${mode} and ${deployment.mode} networks; every offer must be on a ${mode} network`,\n );\n }\n mode = deployment.mode;\n // EVM addresses compare case-insensitively; Solana and NEAR exactly\n const comparable = (value: string) =>\n profile.family === 'evm' ? value.toLowerCase() : value;\n const key = `${input.network}|${comparable(input.asset)}|${comparable(input.payTo)}`;\n if (seen.has(key)) {\n throw new CommerceError(\n 'CONFIG_INVALID',\n `x402 provider: ${at('network')} repeats an earlier offer of the same asset to the same payTo on ${input.network}`,\n );\n }\n seen.add(key);\n const identity = [\n key,\n input.assetTransferMethod ?? 'eip3009',\n input.assetName,\n input.assetVersion,\n input.assetDecimals,\n input.rpcUrl,\n ].join('|');\n const existing = built.get(identity);\n if (existing !== undefined) return existing;\n\n // Construct the signer before requests can reserve replay keys, so an\n // unusable key fails provider construction.\n let binding: FacilitatorBinding;\n if (options.facilitator.mode === 'local') {\n assertDevKeyIsLocalOnly(input.rpcUrl, options.facilitator.signerPrivateKey);\n let client: LocalFacilitatorClient;\n try {\n client = createLocalFacilitatorClient(\n input.rpcUrl,\n options.facilitator.signerPrivateKey as `0x${string}`,\n );\n } catch (cause) {\n throw new CommerceError(\n 'CONFIG_INVALID',\n 'x402 provider: could not construct a local facilitator signer from ' +\n 'facilitator.signerPrivateKey. It must be a valid 32-byte hex private key.',\n { cause },\n );\n }\n binding = createLocalFacilitatorBinding(client, input.network, isProviderUnavailableError);\n } else {\n remoteBinding ??= createRemoteFacilitatorBinding({\n url: options.facilitator.url,\n auth: options.facilitator.auth,\n });\n binding = remoteBinding;\n }\n\n // health() reads the chain itself, with a timeout. Verification and\n // settlement go through the facilitator instead. Health details can reach\n // logs, so they name the RPC by origin.\n const base = {\n network: input.network as Network,\n assetDecimals: input.assetDecimals,\n rpcUrl: input.rpcUrl,\n rpcOrigin: describeRpc(input.rpcUrl),\n binding,\n };\n const offer: Offer =\n profile.family === 'svm'\n ? { ...base, family: 'svm', profile, asset: input.asset, payTo: input.payTo }\n : profile.family === 'near'\n ? { ...base, family: 'near', profile, asset: input.asset, payTo: input.payTo }\n : {\n ...base,\n family: 'evm',\n profile,\n method: input.assetTransferMethod ?? 'eip3009',\n asset: input.asset as `0x${string}`,\n assetName: input.assetName,\n assetVersion: input.assetVersion,\n payTo: input.payTo as `0x${string}`,\n healthClient: createLocalPublicClient(\n input.rpcUrl,\n HEALTH_TIMEOUT_MS,\n profile.chainId,\n ),\n };\n built.set(identity, offer);\n return offer;\n });\n };\n\n const offers = resolveList(inputs, (index, name) =>\n inputs.length === 1 ? `\"${name}\"` : `\"offers[${index}].${name}\"`,\n );\n const resourceOffers = new Map(\n Object.entries(options.resourceOffers ?? {}).map(([id, list]) => {\n if (list.length === 0) {\n throw new CommerceError('CONFIG_INVALID', `x402 provider: \"resourceOffers.${id}\" is empty`);\n }\n return [id, resolveList(list, (index, name) => `\"resourceOffers.${id}[${index}].${name}\"`)];\n }),\n );\n return {\n offers,\n resourceOffers,\n pool: [...built.values()],\n deploymentMode: mode as DeploymentMode,\n remoteBinding,\n };\n}\n\n/**\n * Uses the network's default token symbol when paying that asset; otherwise\n * uses the resource's currency, the gateway's only label for another token.\n */\nexport function offerCurrency(offer: Offer, quoted: string): string {\n const canonical = offer.profile.canonicalAsset;\n return canonical !== undefined && sameAddress(offer.profile, offer.asset, canonical.address)\n ? canonical.symbol\n : quoted;\n}\n","/**\n * Decodes and validates the base64 `PAYMENT-SIGNATURE` submission.\n *\n * A malformed payload must become a `rejected` verification, never a thrown\n * request, so this returns `undefined` on any failure. That is why it parses\n * the schema itself instead of calling the SDK's `decodePaymentSignatureHeader`,\n * which throws.\n */\nimport { PaymentPayloadV2Schema } from '@x402/core/schemas';\nimport type { PaymentPayload } from '@x402/core/types';\nimport type { ExactEIP3009Payload, ExactPermit2Payload } from '@x402/evm';\nimport { isRecord } from '../../core/is-record';\nimport { isEvmAddress } from './addresses';\n\nexport function decodePaymentSubmission(payloadBase64: string): PaymentPayload | undefined {\n const json = decodeJson(payloadBase64);\n if (json === undefined) return undefined;\n const result = PaymentPayloadV2Schema.safeParse(json);\n return result.success ? (result.data as PaymentPayload) : undefined;\n}\n\n/** Read the declared version before v2 schema validation */\nexport function declaredX402Version(payloadBase64: string): unknown {\n const json = decodeJson(payloadBase64);\n return typeof json === 'object' && json !== null\n ? (json as Record<string, unknown>)['x402Version']\n : undefined;\n}\n\n/**\n * The payload as sent to a facilitator. `resource` is optional in v2 and\n * verify() has already matched it against the offer; hosted facilitators have\n * settled payloads without it, and none has been shown to accept this\n * gateway's `resource://` URL. `extensions` is dropped because the gateway\n * advertises none, and the SDK facilitator would act on a gas-sponsoring\n * extension in a Permit2 payload.\n */\nexport function forFacilitator<T extends PaymentPayload>(\n payload: T,\n): Omit<T, 'resource' | 'extensions'> {\n const { resource: _resource, extensions: _extensions, ...rest } = payload;\n return rest;\n}\n\nfunction decodeJson(payloadBase64: string): unknown {\n try {\n return JSON.parse(Buffer.from(payloadBase64, 'base64').toString('utf8'));\n } catch {\n return undefined;\n }\n}\n\n/**\n * Narrows a decoded payload to the EIP-3009 `exact`/EVM shape.\n *\n * The SDK facilitator settles any payload carrying `permit2Authorization`\n * through Permit2, so a payload with both shapes is refused: the gateway would\n * check one authorization and the facilitator would settle the other.\n */\nexport function isExactEvmPayload(\n payload: PaymentPayload,\n): payload is PaymentPayload & { payload: ExactEIP3009Payload } {\n const inner = payload.payload;\n return (\n payload.accepted.scheme === 'exact' &&\n isRecord(inner) &&\n isRecord(inner['authorization']) &&\n !('permit2Authorization' in inner) &&\n typeof inner['signature'] === 'string'\n );\n}\n\n// A uint256 in decimal, the form the SDK client writes\nconst UINT256 = /^(0|[1-9]\\d{0,77})$/;\nconst UINT256_MAX = 2n ** 256n - 1n;\n// An EIP-3009 nonce: 32 bytes in hex\nconst BYTES32 = /^0x[0-9a-fA-F]{64}$/;\n\nconst isUint256 = (value: unknown): value is string =>\n typeof value === 'string' && UINT256.test(value) && BigInt(value) <= UINT256_MAX;\n\n/**\n * Checks an EIP-3009 authorization's fields in the forms the SDK client and\n * mppx write: addresses, decimal uint256 strings and a 32-byte hex nonce. A\n * value such as `\"0x2710\"` would otherwise reach the receipt as written.\n */\nexport function hasEip3009Fields(authorization: Readonly<Record<string, unknown>>): boolean {\n return (\n isEvmAddress(authorization['from']) &&\n isEvmAddress(authorization['to']) &&\n isUint256(authorization['value']) &&\n isUint256(authorization['validAfter']) &&\n isUint256(authorization['validBefore']) &&\n typeof authorization['nonce'] === 'string' &&\n BYTES32.test(authorization['nonce'])\n );\n}\n\n/**\n * Checks the Permit2 `exact`/EVM fields used to match the offer and derive\n * the replay key. The facilitator checks the signature and on-chain state.\n */\nexport function isExactPermit2Payload(\n payload: PaymentPayload,\n): payload is PaymentPayload & { payload: ExactPermit2Payload } {\n const inner = payload.payload;\n if (payload.accepted.scheme !== 'exact' || !isRecord(inner)) return false;\n const auth = inner['permit2Authorization'];\n if (!isRecord(auth) || 'authorization' in inner || typeof inner['signature'] !== 'string') {\n return false;\n }\n const { permitted, witness } = auth;\n return (\n isRecord(permitted) &&\n isRecord(witness) &&\n isEvmAddress(auth['from']) &&\n isEvmAddress(auth['spender']) &&\n isEvmAddress(permitted['token']) &&\n isEvmAddress(witness['to']) &&\n isUint256(permitted['amount']) &&\n isUint256(auth['nonce']) &&\n isUint256(auth['deadline']) &&\n isUint256(witness['validAfter'])\n );\n}\n","// The challenge a resource answers with, and the offer a proof selects from it\nimport type { PaymentRequired, PaymentRequirements } from '@x402/core/types';\nimport type { PaymentContext, PaymentRequirement, PaymentVerificationContext } from '../../../core';\nimport {\n REUSE_REJECTED_AUTHORIZATION_METADATA_KEY,\n SETTLE_AFTER_BACKEND_METADATA_KEY,\n} from '../../../core/execution/settlement-order';\nimport { sameAddress } from '../addresses';\nimport { parseCanonicalAmount } from '../amount';\nimport type { X402Network } from '../networks';\nimport { decodePaymentSubmission } from '../payload';\nimport { X402_DEFAULT_PAYMENT_FLOW } from '../payment-flow';\nimport { DEFAULT_MIME_TYPE, X402_PROTOCOL_VERSION, X402_VERSION } from './constants';\nimport type { ProviderContext, SvmOffer } from './types';\n\n// Requirement metadata naming the offer `selectRequirement` chose, by index\nexport const SELECTED_OFFER_KEY = 'x402.offer';\n\n// Use the selected or sole offer; multi-offer challenges require selection\nexport function offerIndexOf(requirement: PaymentRequirement): number | undefined {\n const selected = requirement.metadata?.[SELECTED_OFFER_KEY];\n if (typeof selected === 'number') return selected;\n // An empty list falls through to 'missing_payment_requirements'\n return requirement.challenge.accepts.length <= 1 ? 0 : undefined;\n}\n\n/**\n * Match echoed terms against the offer. Extra client keys and\n * `maxTimeoutSeconds` do not matter; EVM addresses ignore case, Solana's do\n * not. Compare effective payment flows so an upfront proof cannot pay a default\n * authorization offer.\n */\nexport function acceptedMatchesOffer(\n offered: PaymentRequirements,\n accepted: PaymentRequirements,\n network: X402Network | undefined,\n): boolean {\n if (!network) return false;\n const same = (a: string, b: string) => sameAddress(network, a, b);\n const offeredExtra = offered.extra ?? {};\n const acceptedExtra = accepted.extra ?? {};\n const flow = (extra: Record<string, unknown>) =>\n extra['paymentFlow'] ?? X402_DEFAULT_PAYMENT_FLOW;\n return (\n accepted.scheme === offered.scheme &&\n accepted.network === offered.network &&\n accepted.amount === offered.amount &&\n same(accepted.asset, offered.asset) &&\n same(accepted.payTo, offered.payTo) &&\n Object.entries(offeredExtra).every(([key, value]) => acceptedExtra[key] === value) &&\n flow(acceptedExtra) === flow(offeredExtra)\n );\n}\n\n/** Builds the provider's `createRequirement` and `selectRequirement` */\nexport function createRequirementBuilders(\n ctx: ProviderContext,\n svmFeePayer: (offer: SvmOffer) => Promise<string>,\n): {\n readonly createRequirement: (context: PaymentContext) => Promise<PaymentRequirement>;\n readonly selectRequirement: (context: PaymentVerificationContext) => Promise<PaymentRequirement>;\n} {\n const { options, offersFor, clock, ids, maxTimeoutSeconds } = ctx;\n\n async function createRequirement(context: PaymentContext): Promise<PaymentRequirement> {\n const offers = offersFor(context.resource.id);\n const paymentFlow =\n options.resourcePaymentFlows?.[context.resource.id] ??\n options.paymentFlow ??\n X402_DEFAULT_PAYMENT_FLOW;\n\n // x402 requires an explicit non-default flow. Omit the default\n // `authorization` flow here.\n const flow = paymentFlow === 'upfront' ? { paymentFlow } : {};\n const accepts: PaymentRequirements[] = await Promise.all(\n offers.map(async (offer) => ({\n scheme: 'exact',\n network: offer.network,\n asset: offer.asset,\n amount: parseCanonicalAmount(context.amount, offer.assetDecimals).toString(),\n payTo: offer.payTo,\n maxTimeoutSeconds,\n // EIP-3009 needs `name`/`version` for a shared EIP-712 domain without\n // a token `version()` call; Permit2 uses its own domain. EVM clients\n // sign the named `assetTransferMethod`. Solana needs the facilitator's\n // fee payer; NEAR needs no scheme-specific extra because the\n // facilitator chooses its relayer.\n extra:\n offer.family === 'svm'\n ? { feePayer: await svmFeePayer(offer), ...flow }\n : offer.family === 'near'\n ? { ...flow }\n : {\n ...(offer.assetName !== undefined ? { name: offer.assetName } : {}),\n ...(offer.assetVersion !== undefined ? { version: offer.assetVersion } : {}),\n assetTransferMethod: offer.method,\n ...flow,\n },\n })),\n );\n const single = offers.length === 1 ? offers[0] : undefined;\n\n // The v2 challenge document as sent on the wire. The HTTP adapter\n // base64-encodes it into `PAYMENT-REQUIRED` and MCP passes it through, so\n // both surfaces offer the same challenge.\n //\n // `resource.url` is outside the EIP-3009 signature. A single offer puts its\n // network and payee in it, so the buyer's echo identifies the offer. With\n // several, the URL stays the same whichever one the buyer pays.\n const resourceId = encodeURIComponent(context.resource.id);\n const envelope: PaymentRequired = {\n x402Version: X402_VERSION,\n resource: {\n url: single\n ? `resource://agent-commerce/${encodeURIComponent(single.network)}/${single.payTo}/resources/${resourceId}`\n : `resource://agent-commerce/resources/${resourceId}`,\n description: context.resource.description ?? context.resource.name,\n // The media type the merchant declares, else `application/json`; an HTTP\n // delivery carries the backend's own type when it is text and fits the body\n mimeType: options.resourceMimeTypes?.[context.resource.id] ?? DEFAULT_MIME_TYPE,\n },\n accepts,\n };\n\n const expiresAt = new Date(clock.now().getTime() + maxTimeoutSeconds * 1000).toISOString();\n\n return {\n id: ids.next('payreq'),\n requestId: context.requestId,\n resourceId: context.resource.id,\n provider: 'x402',\n amount: context.amount,\n currency: context.currency,\n // Several offers name several destinations; selection fills these in\n ...(single\n ? { destination: single.payTo, network: single.network, asset: single.asset }\n : {}),\n expiresAt,\n challenge: {\n provider: 'x402',\n version: X402_PROTOCOL_VERSION,\n accepts: accepts as unknown as Record<string, unknown>[],\n envelope: envelope as unknown as Record<string, unknown>,\n },\n metadata: {\n [SETTLE_AFTER_BACKEND_METADATA_KEY]: paymentFlow === 'authorization',\n // The SDK server keeps no record of a payload whose handler or\n // settlement failed and verifies it again; the chain spends it once\n [REUSE_REJECTED_AUTHORIZATION_METADATA_KEY]: true,\n },\n };\n }\n\n /**\n * Selects the unique offer matching `accepted`, leaving zero or multiple\n * matches unchanged for `verify()` to reject. Selection identifies the\n * claimed offer; verification still validates the proof.\n */\n async function selectRequirement(\n context: PaymentVerificationContext,\n ): Promise<PaymentRequirement> {\n const { requirement, submission } = context;\n const offered = requirement.challenge.accepts as unknown as PaymentRequirements[];\n if (offered.length < 2) return requirement;\n const offers = offersFor(requirement.resourceId);\n const payload = decodePaymentSubmission(submission.payload);\n if (!payload) return requirement;\n const matches = offered.flatMap((offer, index) =>\n acceptedMatchesOffer(offer, payload.accepted, offers[index]?.profile) ? [index] : [],\n );\n const index = matches.length === 1 ? matches[0] : undefined;\n const offer = index === undefined ? undefined : offers[index];\n if (index === undefined || !offer) return requirement;\n return {\n ...requirement,\n destination: offer.payTo,\n network: offer.network,\n asset: offer.asset,\n metadata: { ...requirement.metadata, [SELECTED_OFFER_KEY]: index },\n };\n }\n\n return { createRequirement, selectRequirement };\n}\n","// What an EVM payload authorizes: payer, payee, amount and replay key\n\nimport type { PaymentPayload } from '@x402/core/types';\nimport { x402ExactPermit2ProxyAddress } from '@x402/evm';\nimport { getAddress, isAddress } from 'viem';\nimport { hasEip3009Fields, isExactEvmPayload, isExactPermit2Payload } from '../payload';\nimport { computePermit2ReplayKey, computeReplayKey } from '../replay-key';\nimport type { EvmOffer } from './types';\n\n// What a payload authorizes, read the way the offer's method settles it\nexport interface Transfer {\n readonly from: `0x${string}`;\n readonly to: `0x${string}`;\n readonly value: string;\n readonly replayKey: string;\n readonly recipientMismatch: string;\n readonly amountMismatch: string;\n}\n\n/**\n * Reads the payer, payee, amount and replay key, or returns a refusal reason.\n * Enforces the offer's method because the SDK facilitator chooses the method\n * from the payload.\n */\nexport function readTransfer(payload: PaymentPayload, offer: EvmOffer): Transfer | string {\n // verify() refuses an `accepted.network` other than the offer's, so this\n // chain id is the one the authorization is bound to\n const { chainId } = offer.profile;\n if (offer.method === 'eip3009') {\n if (!isExactEvmPayload(payload)) return 'unsupported_scheme';\n const { authorization } = payload.payload;\n const { from, to, value, nonce } = authorization;\n if (!hasEip3009Fields(authorization) || !isAddress(from) || !isAddress(to)) {\n return 'invalid_payload';\n }\n return {\n from: getAddress(from),\n to: getAddress(to),\n value,\n replayKey: computeReplayKey({\n chainId,\n asset: getAddress(offer.asset),\n from: getAddress(from),\n nonce,\n }),\n recipientMismatch: 'invalid_exact_evm_payload_recipient_mismatch',\n amountMismatch: 'invalid_exact_evm_payload_authorization_value_mismatch',\n };\n }\n if (!isExactPermit2Payload(payload)) return 'unsupported_scheme';\n const { from, spender, permitted, witness, nonce } = payload.payload.permit2Authorization;\n // Permit2 lets the spender move the permitted tokens anywhere; only the x402\n // proxy binds the transfer to the signed witness recipient\n if (getAddress(spender) !== getAddress(x402ExactPermit2ProxyAddress)) {\n return 'invalid_permit2_spender';\n }\n if (getAddress(permitted.token) !== getAddress(offer.asset)) return 'permit2_token_mismatch';\n return {\n from: getAddress(from),\n to: getAddress(witness.to),\n value: permitted.amount,\n replayKey: computePermit2ReplayKey({ chainId, owner: getAddress(from), nonce }),\n recipientMismatch: 'invalid_permit2_recipient_mismatch',\n amountMismatch: 'permit2_amount_mismatch',\n };\n}\n","// Settles a verified proof and classifies the facilitator's answer\nimport type { PaymentRequirements, SettleResponse } from '@x402/core/types';\nimport type { PaymentResult, PaymentSettlementContext } from '../../../core';\nimport { CommerceError } from '../../../core';\nimport { redactedErrorText } from '../../../core/errors';\nimport { isTransactionReference } from '../addresses';\nimport { decodePaymentSubmission, forFacilitator } from '../payload';\nimport {\n isNearVerdict,\n isOnChainRevertError,\n isProviderUnavailableError,\n isTransactionFailedReason,\n NO_VERDICT_REASONS,\n ON_CHAIN_FAILURE_REASONS,\n SETTLEMENT_PENDING_REASON,\n sanitizeReason,\n UNKNOWN_OUTCOME_REASONS,\n} from './reasons';\nimport { offerIndexOf } from './requirement';\nimport { readTransfer } from './transfer';\nimport type { ProviderContext } from './types';\n\n/** Builds the provider's `settle`, which throws unless handed a successful verification */\nexport function createSettle(\n ctx: ProviderContext,\n): (context: PaymentSettlementContext) => Promise<PaymentResult> {\n const { offersFor, clock, logger } = ctx;\n\n async function settle(context: PaymentSettlementContext): Promise<PaymentResult> {\n const { requirement, submission, verification } = context;\n\n if (verification.status !== 'verified') {\n throw new CommerceError(\n 'PAYMENT_INVALID',\n 'x402 provider: settle() called without a successful verify()',\n );\n }\n\n const index = offerIndexOf(requirement);\n const offer = index === undefined ? undefined : offersFor(requirement.resourceId)[index];\n const requirements =\n index === undefined\n ? undefined\n : (requirement.challenge.accepts[index] as PaymentRequirements | undefined);\n if (!offer || !requirements) {\n throw new CommerceError(\n 'PAYMENT_INVALID',\n 'x402 provider: settle() found no payment requirements to settle against',\n );\n }\n\n const payload = decodePaymentSubmission(submission.payload);\n const transfer = payload && offer.family === 'evm' ? readTransfer(payload, offer) : undefined;\n if (!payload || typeof transfer === 'string') {\n throw new CommerceError(\n 'PAYMENT_INVALID',\n 'x402 provider: settle() received an undecodable payment payload',\n );\n }\n const reference = (value: string) => isTransactionReference(offer.profile, value);\n\n const rejectedSettlement = (rejectionReason: string): PaymentResult => ({\n status: 'rejected',\n provider: 'x402',\n amount: verification.amount,\n currency: verification.currency,\n ...(verification.network !== undefined ? { network: verification.network } : {}),\n ...(verification.asset !== undefined ? { asset: verification.asset } : {}),\n ...(verification.replayKey !== undefined ? { replayKey: verification.replayKey } : {}),\n rejectionReason,\n });\n\n const scope = offer.binding.open();\n let sdkResult: SettleResponse;\n try {\n sdkResult = await scope.settle(forFacilitator(payload), requirements);\n } catch (err) {\n if (isProviderUnavailableError(err) || scope.transportFailed()) {\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n `x402 provider: ${offer.binding.kind} facilitator unreachable during settle()`,\n { cause: err },\n );\n }\n // The pinned SDK returns a result for every failure from gas estimation\n // on, so a throw comes from its checks before anything is sent. A revert\n // there is a real rejection, which releases any mandate the pipeline\n // holds for the purchase. Any other throw goes back as an unavailable\n // provider, which the pipeline records as `settlement-uncertain`, never\n // as a rejection blamed on the buyer.\n if (!isOnChainRevertError(err)) {\n logger.warn(\n { err: redactedErrorText(err) },\n 'x402 settle(): settlement failed with an unclassified error; outcome unknown',\n );\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n 'x402 provider: settlement failed with an unclassified error; outcome unknown',\n { cause: err },\n );\n }\n logger.warn(\n { err: redactedErrorText(err), rejectionReason: 'transaction_reverted' },\n 'x402 settle(): settlement transaction reverted on chain',\n );\n return rejectedSettlement('transaction_reverted');\n }\n\n // verify() established the payer. The Solana scheme's settlement example\n // names the fee payer there, while x402 v2 defines the payer's wallet.\n const payer = verification.payer ?? sdkResult.payer;\n\n if (!sdkResult.success) {\n // \"Broadcast, never confirmed\" is not \"did not happen\": the transfer may\n // be on-chain, so it throws as an unavailable provider carrying the hash,\n // and the pipeline records the attempt `settlement-uncertain`, not\n // `rejected`. The SDK's catch-all without a hash is treated the same way,\n // because its throw may have followed a broadcast and viem reports an\n // RPC error on the send as a revert.\n if (isTransactionFailedReason(sdkResult.errorReason) && !reference(sdkResult.transaction)) {\n // The appended message can carry an RPC URL\n logger.warn(\n { reportedReason: redactedErrorText(sdkResult.errorReason) },\n 'x402 settle(): the broadcast failed without a transaction hash; outcome unknown',\n );\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n 'x402 provider: settlement failed with an unclassified error; outcome unknown',\n );\n }\n // These NEAR SDK checks fail before submission. Release the attempt so\n // a retry using the same access-key nonce can reserve it again.\n if (\n offer.family === 'near' &&\n NO_VERDICT_REASONS.has(sdkResult.errorReason ?? '') &&\n !sdkResult.transaction\n ) {\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n 'x402 provider: the facilitator could not check the payment before submitting it',\n {\n details: {\n settlementNotSubmitted: true,\n reason: sanitizeReason(sdkResult.errorReason, 'facilitator_unavailable'),\n },\n },\n );\n }\n // A broadcast the SDK could not confirm nor record for a retry comes\n // back as its catch-all with the transaction, and a message starting\n // `settlement_pending`\n if (\n sdkResult.errorReason === SETTLEMENT_PENDING_REASON ||\n sdkResult.errorMessage?.startsWith(SETTLEMENT_PENDING_REASON) === true ||\n UNKNOWN_OUTCOME_REASONS.has(sdkResult.errorReason ?? '') ||\n NO_VERDICT_REASONS.has(sdkResult.errorReason ?? '') ||\n scope.transportFailed()\n ) {\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n 'x402 provider: settlement was broadcast but could not be confirmed',\n {\n ...(sdkResult.transaction\n ? { details: { transactionHash: sdkResult.transaction } }\n : {}),\n },\n );\n }\n // Only the family's on-chain failure proves a named transaction moved\n // nothing. Any other reason may follow a transfer that landed.\n if (\n sdkResult.transaction &&\n sdkResult.errorReason !== ON_CHAIN_FAILURE_REASONS[offer.family]\n ) {\n logger.warn(\n { reportedReason: redactedErrorText(sdkResult.errorReason ?? '') },\n 'x402 settle(): the facilitator reported a failure with a transaction; outcome unknown',\n );\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n 'x402 provider: the facilitator reported a failed settlement with a transaction; outcome unknown',\n { details: { transactionHash: sdkResult.transaction } },\n );\n }\n // A `settlement_failed` that reaches here carries its hash\n if (offer.family === 'near' && !isNearVerdict(sdkResult.errorReason)) {\n logger.warn(\n { reportedReason: redactedErrorText(sdkResult.errorReason ?? '') },\n 'x402 settle(): NEAR facilitator failure reason is not a verdict; outcome unknown',\n );\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n 'x402 provider: settlement failed with an unclassified error; outcome unknown',\n );\n }\n if (sdkResult.errorReason !== undefined) {\n logger.debug(\n { reportedReason: redactedErrorText(sdkResult.errorReason) },\n 'x402 settle(): facilitator failure reason',\n );\n }\n return {\n ...rejectedSettlement(sanitizeReason(sdkResult.errorReason, 'settlement_failed')),\n network: sdkResult.network,\n ...(payer !== undefined ? { payer } : {}),\n // The failed transaction, which the facilitator paid for\n ...(sdkResult.transaction ? { externalReference: sdkResult.transaction } : {}),\n };\n }\n\n // A success names the offer's network and a transaction in its family's\n // form; anything else unlocks nothing, and the outcome stays unknown\n if (!reference(sdkResult.transaction) || sdkResult.network !== offer.network) {\n logger.warn(\n { network: sdkResult.network },\n 'x402 settle(): the facilitator reported a success it did not identify; outcome unknown',\n );\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n 'x402 provider: the facilitator reported a settlement without a valid transaction; outcome unknown',\n );\n }\n\n return {\n status: 'settled',\n provider: 'x402',\n externalReference: sdkResult.transaction,\n ...(payer !== undefined ? { payer } : {}),\n payee: requirements.payTo,\n amount: verification.amount,\n currency: verification.currency,\n network: sdkResult.network,\n ...(verification.asset !== undefined ? { asset: verification.asset } : {}),\n ...(verification.replayKey !== undefined ? { replayKey: verification.replayKey } : {}),\n settledAt: clock.nowIso(),\n // `amount` is the display value; x402's settlement response reports base\n // units. verify() matched an EVM authorization's value to the offer.\n metadata: {\n amountBaseUnits: transfer?.value ?? requirements.amount,\n // The resource's own price, when it names a currency other than the token\n ...(verification.currency !== requirement.currency\n ? { quote: { amount: requirement.amount, currency: requirement.currency } }\n : {}),\n },\n };\n }\n\n return settle;\n}\n","// Checks a proof against the offer it pays, then asks the facilitator for a verdict\nimport type { PaymentRequired, PaymentRequirements, VerifyResponse } from '@x402/core/types';\nimport { formatUnits, getAddress } from 'viem';\nimport type { PaymentResult, PaymentVerificationContext } from '../../../core';\nimport { CommerceError } from '../../../core';\nimport { redactedErrorText } from '../../../core/errors';\nimport { normalizeAddress, sameAddress } from '../addresses';\nimport { declaredX402Version, decodePaymentSubmission, forFacilitator } from '../payload';\nimport { X402_VERSION } from './constants';\nimport { offerCurrency } from './offers';\nimport { isProviderUnavailableError, NO_VERDICT_REASONS, sanitizeReason } from './reasons';\nimport { acceptedMatchesOffer, offerIndexOf } from './requirement';\nimport { readTransfer, type Transfer } from './transfer';\nimport type { ProviderContext } from './types';\n\n/** Builds the provider's `verify`, which never moves funds */\nexport function createVerify(\n ctx: ProviderContext,\n): (context: PaymentVerificationContext) => Promise<PaymentResult> {\n const { offersFor, clock, logger, svm, near } = ctx;\n\n /**\n * Checks a submission against the requirement this provider built, never\n * against `payload.accepted`, the copy the client echoes back. That copy\n * must itself match the offer, or the proof is refused.\n *\n * The `exact` scheme requires the authorized amount to match exactly,\n * including when the buyer offers more. Local refusals use x402 error codes\n * where available.\n */\n async function verify(context: PaymentVerificationContext): Promise<PaymentResult> {\n const { requirement, submission } = context;\n\n const rejected = (reason: string): PaymentResult => ({\n status: 'rejected',\n provider: 'x402',\n amount: requirement.amount,\n currency: requirement.currency,\n ...(requirement.network !== undefined ? { network: requirement.network } : {}),\n ...(requirement.asset !== undefined ? { asset: requirement.asset } : {}),\n rejectionReason: reason,\n });\n\n if (requirement.provider !== 'x402' || requirement.challenge.provider !== 'x402') {\n return rejected('wrong_provider');\n }\n\n // With several offers and none selected, the proof matched no single offer\n const index = offerIndexOf(requirement);\n if (index === undefined) {\n return rejected('invalid_payment_requirements');\n }\n const offer = offersFor(requirement.resourceId)[index];\n const requirements = requirement.challenge.accepts[index] as PaymentRequirements | undefined;\n if (!offer || !requirements) {\n return rejected('missing_payment_requirements');\n }\n\n // Defense in depth only: the pipeline builds a fresh requirement for every\n // request, so this rarely fires. The real expiry is the authorization's\n // own, which the facilitator checks.\n if (\n requirement.expiresAt !== undefined &&\n Date.parse(requirement.expiresAt) < clock.now().getTime()\n ) {\n return rejected('requirement_expired');\n }\n\n // This provider built the requirement, so the asset always matches in\n // normal operation. A corrupted one must still never authorize a transfer\n // of a different asset.\n if (!sameAddress(offer.profile, requirements.asset, offer.asset)) {\n return rejected('wrong_asset');\n }\n\n const payload = decodePaymentSubmission(submission.payload);\n if (!payload) {\n const version = declaredX402Version(submission.payload);\n return rejected(\n typeof version === 'number' && version !== X402_VERSION\n ? 'invalid_x402_version'\n : 'invalid_payload',\n );\n }\n if (payload.x402Version !== X402_VERSION) {\n return rejected('invalid_x402_version');\n }\n // EVM: the authorization names payer, payee and amount. Solana: the\n // facilitator reads the transaction, and the gateway takes its identity.\n // NEAR: the delegate names the transfer, checked here against the offer.\n let transfer: Transfer | undefined;\n let replayKey: string;\n let derivedPayer: string | undefined;\n if (offer.family === 'svm') {\n const identity = (await svm()).svmReplayKey(payload.payload, offer.network);\n if (typeof identity === 'string') return rejected(identity);\n replayKey = identity.replayKey;\n } else if (offer.family === 'near') {\n const inspected = (await near()).inspectNearPayload(payload.payload, {\n network: offer.network,\n asset: offer.asset,\n payTo: offer.payTo,\n amount: requirements.amount,\n });\n if (typeof inspected === 'string') return rejected(inspected);\n replayKey = inspected.replayKey;\n derivedPayer = inspected.payer;\n } else {\n const read = readTransfer(payload, offer);\n if (typeof read === 'string') return rejected(read);\n transfer = read;\n replayKey = read.replayKey;\n derivedPayer = read.from;\n }\n // Reject a different network before calling the facilitator. NEAR's\n // delegate signature itself does not bind the chain.\n if (payload.accepted.network !== offer.network) {\n return rejected('invalid_network');\n }\n // The signature omits flow and resource. Check the echoed offer;\n // `resource` is optional, but must match when present.\n const offeredUrl = (requirement.challenge.envelope as PaymentRequired | undefined)?.resource\n ?.url;\n if (\n !acceptedMatchesOffer(requirements, payload.accepted, offer.profile) ||\n (payload.resource !== undefined && payload.resource.url !== offeredUrl)\n ) {\n return rejected('invalid_payment_requirements');\n }\n let required: bigint;\n try {\n required = BigInt(requirements.amount);\n } catch {\n return rejected('invalid_payload');\n }\n if (transfer) {\n if (transfer.to !== getAddress(offer.payTo)) {\n return rejected(transfer.recipientMismatch);\n }\n let authorizedValue: bigint;\n try {\n authorizedValue = BigInt(transfer.value);\n } catch {\n return rejected('invalid_payload');\n }\n if (authorizedValue !== required) {\n return rejected(transfer.amountMismatch);\n }\n }\n\n const scope = offer.binding.open();\n let sdkResult: VerifyResponse;\n try {\n sdkResult = await scope.verify(forFacilitator(payload), requirements);\n } catch (err) {\n // A throw means no verdict was obtained, so it is never held against the\n // buyer. Only an unclassified one is logged, as it may be an SDK fault.\n if (!isProviderUnavailableError(err) && !scope.transportFailed()) {\n logger.warn({ err: redactedErrorText(err) }, 'x402 verify(): unexpected SDK error');\n }\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n `x402 provider: ${offer.binding.kind} facilitator returned no verdict during verify()`,\n { cause: err },\n );\n }\n\n if (!sdkResult.isValid) {\n // An RPC that never answered is not a payment that failed a check\n if (scope.transportFailed() || NO_VERDICT_REASONS.has(sdkResult.invalidReason ?? '')) {\n if (sdkResult.invalidReason !== undefined) {\n logger.debug(\n { reportedReason: redactedErrorText(sdkResult.invalidReason) },\n 'x402 verify(): local facilitator transport failure reason',\n );\n }\n throw new CommerceError(\n 'PAYMENT_PROVIDER_UNAVAILABLE',\n `x402 provider: ${offer.binding.kind} facilitator unreachable during verify()`,\n );\n }\n // The raw reason is logged at debug level. Only what the buyer sees and\n // the ledger records is constrained.\n if (sdkResult.invalidReason !== undefined) {\n logger.debug(\n { reportedReason: redactedErrorText(sdkResult.invalidReason) },\n 'x402 verify(): facilitator rejection reason',\n );\n }\n return rejected(sanitizeReason(sdkResult.invalidReason, 'invalid_payment'));\n }\n\n // The Solana payer is the facilitator's reading of the transaction\n const payer =\n derivedPayer ??\n (sdkResult.payer !== undefined && normalizeAddress(offer.profile, sdkResult.payer)\n ? sdkResult.payer\n : undefined);\n return {\n status: 'verified',\n provider: 'x402',\n ...(payer !== undefined ? { payer } : {}),\n payee: transfer?.to ?? offer.payTo,\n amount: formatUnits(required, offer.assetDecimals),\n currency: offerCurrency(offer, requirement.currency),\n network: payload.accepted.network,\n asset: offer.family === 'evm' ? getAddress(requirements.asset) : offer.asset,\n replayKey,\n };\n }\n\n return verify;\n}\n","/**\n * x402 payment provider: protocol v2, `exact` scheme. On EVM the buyer signs an\n * EIP-3009 `transferWithAuthorization` or a Permit2 transfer through the x402\n * exact proxy; on Solana, a token transfer whose fee the facilitator pays; on\n * NEAR, a delegated NEP-141 `ft_transfer` that the facilitator's relayer\n * submits.\n *\n * `verify()` never moves funds. `settle()` does, and throws unless it is handed\n * a successful verification. Both run through a facilitator (see\n * `../facilitator.ts`): the SDK's own `x402Facilitator` in this process, or a\n * remote HTTP facilitator.\n */\nimport type { AdapterDescriptor, PaymentProvider } from '../../../core';\nimport { CommerceError, NOOP_LOGGER, systemClock } from '../../../core';\nimport { PACKAGE_VERSION } from '../../../version';\nimport { DEFAULT_IDS, DEFAULT_MAX_TIMEOUT_SECONDS, X402_VERSION } from './constants';\nimport { createSvmFeePayerSource } from './fee-payer';\nimport { createHealthCheck } from './health';\nimport { resolveOffers } from './offers';\nimport { createRequirementBuilders } from './requirement';\nimport { createSettle } from './settle';\nimport type {\n EvmOffer,\n ProviderContext,\n X402MultiOfferProviderOptions,\n X402OfferOptions,\n X402ProviderOptions,\n} from './types';\nimport { createVerify } from './verify';\n\nexport { DEFAULT_IDS } from './constants';\nexport type { X402MultiOfferProviderOptions, X402OfferOptions, X402ProviderOptions } from './types';\n\nexport function createX402PaymentProvider(\n options: X402ProviderOptions | X402MultiOfferProviderOptions,\n): PaymentProvider {\n const inputs: readonly X402OfferOptions[] = 'offers' in options ? options.offers : [options];\n if (inputs.length === 0) {\n throw new CommerceError('CONFIG_INVALID', 'x402 provider: \"offers\" is empty');\n }\n // The NEAR facilitator refuses every payment under any other value\n if (\n options.maxTimeoutSeconds !== undefined &&\n (!Number.isInteger(options.maxTimeoutSeconds) || options.maxTimeoutSeconds <= 0)\n ) {\n throw new CommerceError(\n 'CONFIG_INVALID',\n `x402 provider: maxTimeoutSeconds must be a positive integer (got ${options.maxTimeoutSeconds})`,\n );\n }\n const {\n offers: defaultOffers,\n resourceOffers,\n pool: offers,\n deploymentMode,\n remoteBinding,\n } = resolveOffers(inputs, options);\n const offersFor = (resourceId: string) => resourceOffers.get(resourceId) ?? defaultOffers;\n const severalOffers = [defaultOffers, ...resourceOffers.values()].some((list) => list.length > 1);\n\n const clock = options.clock ?? systemClock;\n const ids = options.ids ?? DEFAULT_IDS;\n const logger = options.logger ?? NOOP_LOGGER;\n const maxTimeoutSeconds = options.maxTimeoutSeconds ?? DEFAULT_MAX_TIMEOUT_SECONDS;\n\n const evmOffers = offers.filter((offer): offer is EvmOffer => offer.family === 'evm');\n const hasSvm = offers.some((offer) => offer.family === 'svm');\n const hasNear = offers.some((offer) => offer.family === 'near');\n const descriptor: AdapterDescriptor = {\n name: 'x402',\n kind: 'payment',\n implementationVersion: PACKAGE_VERSION,\n supportedSpec: `x402/v${X402_VERSION} scheme=exact family=${[\n ...(evmOffers.length > 0 ? ['eip155'] : []),\n ...(hasSvm ? ['solana'] : []),\n ...(hasNear ? ['near'] : []),\n ].join(',')}`,\n capabilities: [\n ...(evmOffers.length > 0 ? ['exact-evm'] : []),\n ...(hasSvm ? ['exact-svm'] : []),\n ...(hasNear ? ['exact-near'] : []),\n `${options.facilitator.mode}-facilitator`,\n ...(evmOffers.some((offer) => offer.method === 'eip3009') ? ['eip-3009'] : []),\n ...(evmOffers.some((offer) => offer.method === 'permit2') ? ['permit2'] : []),\n 'caip-2',\n `mode=${deploymentMode}`,\n 'authorization-flow',\n 'upfront-flow',\n ...(severalOffers ? ['multiple-offers'] : []),\n ],\n status: 'stable',\n unsupported: [\n 'permit2 gas sponsoring extensions',\n 'upto scheme',\n 'batch-settlement scheme',\n 'auth-capture scheme',\n ],\n };\n\n // Loaded only with an offer of their family, so no deployment needs the\n // peers of a family it does not offer\n const svmModule = hasSvm\n ? loadOptionalModule(() => import('../svm'), 'Solana offers need @x402/svm and @solana/kit')\n : undefined;\n const nearModule = hasNear\n ? loadOptionalModule(() => import('../near'), 'NEAR offers need @x402/near')\n : undefined;\n const svm = async () => {\n if (!svmModule)\n throw new CommerceError('INTERNAL_ERROR', 'x402 provider: no Solana offer is configured');\n return svmModule;\n };\n const near = async () => {\n if (!nearModule)\n throw new CommerceError('INTERNAL_ERROR', 'x402 provider: no NEAR offer is configured');\n return nearModule;\n };\n\n const ctx: ProviderContext = {\n options,\n offers,\n offersFor,\n deploymentMode,\n remoteBinding,\n clock,\n ids,\n logger,\n maxTimeoutSeconds,\n svm,\n near,\n };\n const { createRequirement, selectRequirement } = createRequirementBuilders(\n ctx,\n createSvmFeePayerSource(ctx),\n );\n const verify = createVerify(ctx);\n const settle = createSettle(ctx);\n const health = createHealthCheck(ctx);\n\n return {\n name: 'x402',\n descriptor,\n createRequirement,\n // A single offer needs no selection\n ...(severalOffers ? { selectRequirement } : {}),\n verify,\n settle,\n health,\n };\n}\n\n/**\n * Loads a family's inspection module, refusing with a clear error when its\n * optional peers are missing\n */\nfunction loadOptionalModule<T>(load: () => Promise<T>, missing: string): Promise<T> {\n const loading = load().catch((cause: unknown) => {\n throw new CommerceError('PAYMENT_PROVIDER_UNAVAILABLE', `x402 provider: ${missing}`, {\n cause,\n });\n });\n // verify() and health() report the failure; nothing else awaits it\n loading.catch(() => {});\n return loading;\n}\n"]}
@@ -1,8 +0,0 @@
1
- import 'module';
2
-
3
- // src/version.ts
4
- var PACKAGE_VERSION = "2.3.0" ;
5
-
6
- export { PACKAGE_VERSION };
7
- //# sourceMappingURL=chunk-DYHVNKRB.js.map
8
- //# sourceMappingURL=chunk-DYHVNKRB.js.map
@@ -1 +0,0 @@
1
- #!/usr/bin/env node