@aastar/sdk 0.24.2 → 0.25.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 (126) hide show
  1. package/dist/UserClient-5PQP6APK.js +6 -0
  2. package/dist/{UserClient-DPJ6E2XL.js.map → UserClient-5PQP6APK.js.map} +1 -1
  3. package/dist/UserClient-CD7R3335.cjs +15 -0
  4. package/dist/{UserClient-4MRK2D7W.cjs.map → UserClient-CD7R3335.cjs.map} +1 -1
  5. package/dist/account.cjs +8 -8
  6. package/dist/account.js +3 -3
  7. package/dist/addresses-D12T3kLs.d.cts +210 -0
  8. package/dist/addresses-D12T3kLs.d.ts +210 -0
  9. package/dist/admin.cjs +4 -4
  10. package/dist/admin.js +3 -3
  11. package/dist/airaccount.cjs +111 -103
  12. package/dist/airaccount.d.cts +1 -1
  13. package/dist/airaccount.d.ts +1 -1
  14. package/dist/airaccount.js +3 -3
  15. package/dist/channel.cjs +7 -7
  16. package/dist/channel.js +3 -3
  17. package/dist/{chunk-S7IUUQ5E.cjs → chunk-2RHBOBL7.cjs} +6 -6
  18. package/dist/{chunk-S7IUUQ5E.cjs.map → chunk-2RHBOBL7.cjs.map} +1 -1
  19. package/dist/{chunk-EEWLL7GE.js → chunk-6DZCDV4Q.js} +2137 -13
  20. package/dist/chunk-6DZCDV4Q.js.map +1 -0
  21. package/dist/{chunk-4Q6FADF6.cjs → chunk-6IZASQSB.cjs} +236 -109
  22. package/dist/chunk-6IZASQSB.cjs.map +1 -0
  23. package/dist/{chunk-MCDFQ5JH.cjs → chunk-7HTUDNH3.cjs} +11 -11
  24. package/dist/{chunk-MCDFQ5JH.cjs.map → chunk-7HTUDNH3.cjs.map} +1 -1
  25. package/dist/{chunk-UJPW54CK.js → chunk-7JVL5CU3.js} +3 -3
  26. package/dist/{chunk-UJPW54CK.js.map → chunk-7JVL5CU3.js.map} +1 -1
  27. package/dist/{chunk-7FLPD3V4.js → chunk-A4FO6FKN.js} +3 -3
  28. package/dist/{chunk-7FLPD3V4.js.map → chunk-A4FO6FKN.js.map} +1 -1
  29. package/dist/{chunk-MANVOQY7.cjs → chunk-CI4UJW5Y.cjs} +5 -5
  30. package/dist/{chunk-MANVOQY7.cjs.map → chunk-CI4UJW5Y.cjs.map} +1 -1
  31. package/dist/{chunk-PUE5GEKK.js → chunk-COTHBCR2.js} +3 -3
  32. package/dist/{chunk-PUE5GEKK.js.map → chunk-COTHBCR2.js.map} +1 -1
  33. package/dist/{chunk-BPAAWQQA.js → chunk-D2RDBN46.js} +227 -102
  34. package/dist/chunk-D2RDBN46.js.map +1 -0
  35. package/dist/{chunk-TQIRRSGL.cjs → chunk-FIMXPANS.cjs} +4 -4
  36. package/dist/{chunk-TQIRRSGL.cjs.map → chunk-FIMXPANS.cjs.map} +1 -1
  37. package/dist/{chunk-MXJEULSE.cjs → chunk-G33MXEHU.cjs} +29 -2
  38. package/dist/chunk-G33MXEHU.cjs.map +1 -0
  39. package/dist/{chunk-FUY4MHPM.cjs → chunk-GASCTLKR.cjs} +9 -9
  40. package/dist/{chunk-FUY4MHPM.cjs.map → chunk-GASCTLKR.cjs.map} +1 -1
  41. package/dist/{chunk-W73Y6JWZ.js → chunk-IG4BG25C.js} +6 -6
  42. package/dist/{chunk-W73Y6JWZ.js.map → chunk-IG4BG25C.js.map} +1 -1
  43. package/dist/{chunk-TGEVD7OR.cjs → chunk-J3UAXGNP.cjs} +16 -16
  44. package/dist/{chunk-TGEVD7OR.cjs.map → chunk-J3UAXGNP.cjs.map} +1 -1
  45. package/dist/{chunk-Y5QM4LI4.js → chunk-JCEUTCFZ.js} +4 -4
  46. package/dist/{chunk-Y5QM4LI4.js.map → chunk-JCEUTCFZ.js.map} +1 -1
  47. package/dist/{chunk-IB3KOSHW.cjs → chunk-KOWTQJIX.cjs} +2177 -49
  48. package/dist/chunk-KOWTQJIX.cjs.map +1 -0
  49. package/dist/chunk-L6D2AGTF.js +500 -0
  50. package/dist/chunk-L6D2AGTF.js.map +1 -0
  51. package/dist/{chunk-KYXXIKEI.cjs → chunk-LRPAX5AG.cjs} +32 -32
  52. package/dist/{chunk-KYXXIKEI.cjs.map → chunk-LRPAX5AG.cjs.map} +1 -1
  53. package/dist/{chunk-UCLK6LTB.js → chunk-MBWBHKUE.js} +28 -3
  54. package/dist/chunk-MBWBHKUE.js.map +1 -0
  55. package/dist/{chunk-3FRNYRWI.cjs → chunk-NHDZQPDE.cjs} +26 -26
  56. package/dist/{chunk-3FRNYRWI.cjs.map → chunk-NHDZQPDE.cjs.map} +1 -1
  57. package/dist/{chunk-HP44S5U5.cjs → chunk-OBPTMV5W.cjs} +5 -5
  58. package/dist/{chunk-HP44S5U5.cjs.map → chunk-OBPTMV5W.cjs.map} +1 -1
  59. package/dist/{chunk-SX5GUCTF.js → chunk-QTXPAGNX.js} +9 -9
  60. package/dist/{chunk-SX5GUCTF.js.map → chunk-QTXPAGNX.js.map} +1 -1
  61. package/dist/{chunk-PTVXBXZX.js → chunk-UANSP3OK.js} +3 -3
  62. package/dist/{chunk-PTVXBXZX.js.map → chunk-UANSP3OK.js.map} +1 -1
  63. package/dist/{chunk-P3B6UTED.js → chunk-UTSFTWFC.js} +3 -3
  64. package/dist/{chunk-P3B6UTED.js.map → chunk-UTSFTWFC.js.map} +1 -1
  65. package/dist/chunk-WTURYJEA.cjs +504 -0
  66. package/dist/chunk-WTURYJEA.cjs.map +1 -0
  67. package/dist/{chunk-XBZGVJ5K.js → chunk-YR7CTWY6.js} +3 -3
  68. package/dist/{chunk-XBZGVJ5K.js.map → chunk-YR7CTWY6.js.map} +1 -1
  69. package/dist/{contract-addresses-RABD77VP.cjs → contract-addresses-6K6IB5OB.cjs} +13 -13
  70. package/dist/{contract-addresses-RABD77VP.cjs.map → contract-addresses-6K6IB5OB.cjs.map} +1 -1
  71. package/dist/{contract-addresses-TVXSRQ7I.js → contract-addresses-CHZ7PK5H.js} +3 -3
  72. package/dist/{contract-addresses-TVXSRQ7I.js.map → contract-addresses-CHZ7PK5H.js.map} +1 -1
  73. package/dist/core.cjs +285 -261
  74. package/dist/core.d.cts +6 -175
  75. package/dist/core.d.ts +6 -175
  76. package/dist/core.js +2 -2
  77. package/dist/dapp.cjs +6 -6
  78. package/dist/dapp.js +3 -3
  79. package/dist/enduser.cjs +7 -7
  80. package/dist/enduser.js +4 -4
  81. package/dist/identity.cjs +6 -6
  82. package/dist/identity.js +3 -3
  83. package/dist/index.cjs +406 -374
  84. package/dist/index.d.cts +3 -2
  85. package/dist/index.d.ts +3 -2
  86. package/dist/index.js +17 -17
  87. package/dist/kms.cjs +111 -103
  88. package/dist/kms.d.cts +199 -19
  89. package/dist/kms.d.ts +199 -19
  90. package/dist/kms.js +3 -3
  91. package/dist/operator.cjs +7 -7
  92. package/dist/operator.js +3 -3
  93. package/dist/paymaster.cjs +16 -16
  94. package/dist/paymaster.js +3 -3
  95. package/dist/{src-VO7TXJPG.cjs → src-DNURNUIA.cjs} +287 -263
  96. package/dist/src-DNURNUIA.cjs.map +1 -0
  97. package/dist/{src-RM6DDR7K.cjs → src-DZDH3BSU.cjs} +18 -18
  98. package/dist/src-DZDH3BSU.cjs.map +1 -0
  99. package/dist/{src-HKOFZ4V3.js → src-EVM7OESP.js} +5 -5
  100. package/dist/src-EVM7OESP.js.map +1 -0
  101. package/dist/src-FY3KAPPC.js +5 -0
  102. package/dist/src-FY3KAPPC.js.map +1 -0
  103. package/dist/tokens.cjs +12 -4
  104. package/dist/tokens.d.cts +133 -1
  105. package/dist/tokens.d.ts +133 -1
  106. package/dist/tokens.js +3 -3
  107. package/dist/x402.cjs +26 -26
  108. package/dist/x402.js +3 -3
  109. package/package.json +1 -1
  110. package/dist/UserClient-4MRK2D7W.cjs +0 -15
  111. package/dist/UserClient-DPJ6E2XL.js +0 -6
  112. package/dist/chunk-4Q6FADF6.cjs.map +0 -1
  113. package/dist/chunk-BPAAWQQA.js.map +0 -1
  114. package/dist/chunk-EEWLL7GE.js.map +0 -1
  115. package/dist/chunk-IB3KOSHW.cjs.map +0 -1
  116. package/dist/chunk-MXJEULSE.cjs.map +0 -1
  117. package/dist/chunk-O2CN77MV.js +0 -226
  118. package/dist/chunk-O2CN77MV.js.map +0 -1
  119. package/dist/chunk-UCLK6LTB.js.map +0 -1
  120. package/dist/chunk-V23XPVHO.cjs +0 -228
  121. package/dist/chunk-V23XPVHO.cjs.map +0 -1
  122. package/dist/src-HKOFZ4V3.js.map +0 -1
  123. package/dist/src-L2BLX34S.js +0 -5
  124. package/dist/src-L2BLX34S.js.map +0 -1
  125. package/dist/src-RM6DDR7K.cjs.map +0 -1
  126. package/dist/src-VO7TXJPG.cjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkIB3KOSHW_cjs = require('./chunk-IB3KOSHW.cjs');
3
+ var chunkKOWTQJIX_cjs = require('./chunk-KOWTQJIX.cjs');
4
4
  var viem = require('viem');
5
5
 
6
6
  var EIP3009_TYPES = {
@@ -269,7 +269,7 @@ var X402Client = class {
269
269
  throw new Error("WalletClient must have an account configured");
270
270
  }
271
271
  this.config = config;
272
- this.actions = chunkIB3KOSHW_cjs.x402Actions(config.superPaymasterAddress)(config.walletClient);
272
+ this.actions = chunkKOWTQJIX_cjs.x402Actions(config.superPaymasterAddress)(config.walletClient);
273
273
  if (config.facilitator) {
274
274
  this.facilitatorClient = new FacilitatorClient(config.facilitator);
275
275
  }
@@ -444,5 +444,5 @@ exports.signCancelAuthorization = signCancelAuthorization;
444
444
  exports.signGTokenTransferWithAuthorization = signGTokenTransferWithAuthorization;
445
445
  exports.signReceiveWithAuthorization = signReceiveWithAuthorization;
446
446
  exports.signTransferWithAuthorization = signTransferWithAuthorization;
447
- //# sourceMappingURL=chunk-TQIRRSGL.cjs.map
448
- //# sourceMappingURL=chunk-TQIRRSGL.cjs.map
447
+ //# sourceMappingURL=chunk-FIMXPANS.cjs.map
448
+ //# sourceMappingURL=chunk-FIMXPANS.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../x402/src/eip3009.ts","../../x402/src/payment-header.ts","../../x402/src/facilitator.ts","../../x402/src/X402Client.ts"],"names":["toHex","x402Actions"],"mappings":"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","file":"chunk-TQIRRSGL.cjs","sourcesContent":["import { type Address, type Hex, type WalletClient, toHex } from 'viem';\n\nexport const EIP3009_TYPES = {\n TransferWithAuthorization: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n ],\n // Distinct typehash from TransferWithAuthorization — prevents replay across variants.\n // msg.sender must equal `to` on-chain (CallerMustBeRecipient error if violated).\n ReceiveWithAuthorization: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n ],\n CancelAuthorization: [\n { name: 'authorizer', type: 'address' },\n { name: 'nonce', type: 'bytes32' },\n ],\n} as const;\n\nexport function getEIP3009Domain(tokenName: string, tokenVersion: string, chainId: number, verifyingContract: Address) {\n return {\n name: tokenName,\n version: tokenVersion,\n chainId,\n verifyingContract,\n };\n}\n\nexport function generateNonce(): Hex {\n const bytes = new Uint8Array(32);\n globalThis.crypto.getRandomValues(bytes);\n return toHex(bytes);\n}\n\n// GToken EIP-712 domain constants (GTokenAuthorization v2.2.0)\nexport const GTOKEN_EIP712_DOMAIN = { name: 'GToken', version: '1' } as const;\n\nexport async function signTransferWithAuthorization(\n walletClient: WalletClient,\n params: {\n from: Address;\n to: Address;\n value: bigint;\n validAfter: bigint;\n validBefore: bigint;\n nonce: Hex;\n tokenName: string;\n tokenVersion: string;\n chainId: number;\n verifyingContract: Address;\n }\n): Promise<Hex> {\n const domain = getEIP3009Domain(\n params.tokenName,\n params.tokenVersion,\n params.chainId,\n params.verifyingContract\n );\n\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n\n return walletClient.signTypedData({\n account,\n domain,\n types: EIP3009_TYPES,\n primaryType: 'TransferWithAuthorization',\n message: {\n from: params.from,\n to: params.to,\n value: params.value,\n validAfter: params.validAfter,\n validBefore: params.validBefore,\n nonce: params.nonce,\n },\n });\n}\n\n/**\n * Sign a TransferWithAuthorization for GTokenAuthorization (EIP-3009).\n * GToken-specific wrapper: enforces MAX_AUTH_VALIDITY = 300s before signing.\n * Use this instead of the generic signTransferWithAuthorization when the\n * verifying contract is GTokenAuthorization.\n */\nexport async function signGTokenTransferWithAuthorization(\n walletClient: WalletClient,\n params: {\n from: Address;\n to: Address;\n value: bigint;\n validAfter: bigint;\n validBefore: bigint;\n nonce: Hex;\n tokenName: string;\n tokenVersion: string;\n chainId: number;\n verifyingContract: Address;\n }\n): Promise<Hex> {\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n if (account.address.toLowerCase() !== params.from.toLowerCase()) {\n throw new Error(`Signer ${account.address} does not match from ${params.from}`);\n }\n // GTokenAuthorization enforces MAX_AUTH_VALIDITY = 300s on-chain.\n if (params.validBefore <= params.validAfter) {\n throw new Error('validBefore must be greater than validAfter');\n }\n if (params.validBefore - params.validAfter > 300n) {\n throw new Error(\n `Authorization window ${params.validBefore - params.validAfter}s exceeds MAX_AUTH_VALIDITY (300s)`\n );\n }\n return signTransferWithAuthorization(walletClient, params);\n}\n\n/**\n * Sign a ReceiveWithAuthorization for GTokenAuthorization (EIP-3009).\n * The signed `to` address must be the one submitting the transaction on-chain.\n * Note: `xPNTsToken` is NOT included in the signature (it's a relay-supplied hint for RC-2).\n */\nexport async function signReceiveWithAuthorization(\n walletClient: WalletClient,\n params: {\n from: Address;\n to: Address;\n value: bigint;\n validAfter: bigint;\n validBefore: bigint;\n nonce: Hex;\n tokenName: string;\n tokenVersion: string;\n chainId: number;\n verifyingContract: Address;\n }\n): Promise<Hex> {\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n if (account.address.toLowerCase() !== params.from.toLowerCase()) {\n throw new Error(`Signer ${account.address} does not match from ${params.from}`);\n }\n // GTokenAuthorization enforces MAX_AUTH_VALIDITY = 300s on-chain (RC-1).\n if (params.validBefore <= params.validAfter) {\n throw new Error('validBefore must be greater than validAfter');\n }\n if (params.validBefore - params.validAfter > 300n) {\n throw new Error(\n `Authorization window ${params.validBefore - params.validAfter}s exceeds MAX_AUTH_VALIDITY (300s)`\n );\n }\n\n return walletClient.signTypedData({\n account,\n domain: getEIP3009Domain(params.tokenName, params.tokenVersion, params.chainId, params.verifyingContract),\n types: EIP3009_TYPES,\n primaryType: 'ReceiveWithAuthorization',\n message: {\n from: params.from,\n to: params.to,\n value: params.value,\n validAfter: params.validAfter,\n validBefore: params.validBefore,\n nonce: params.nonce,\n },\n });\n}\n\n/**\n * Sign a CancelAuthorization for GTokenAuthorization (EIP-3009).\n * Must be signed by the original `authorizer` address.\n */\nexport async function signCancelAuthorization(\n walletClient: WalletClient,\n params: {\n authorizer: Address;\n nonce: Hex;\n tokenName: string;\n tokenVersion: string;\n chainId: number;\n verifyingContract: Address;\n }\n): Promise<Hex> {\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n if (account.address.toLowerCase() !== params.authorizer.toLowerCase()) {\n throw new Error(`Signer ${account.address} does not match authorizer ${params.authorizer}`);\n }\n\n return walletClient.signTypedData({\n account,\n domain: getEIP3009Domain(params.tokenName, params.tokenVersion, params.chainId, params.verifyingContract),\n types: EIP3009_TYPES,\n primaryType: 'CancelAuthorization',\n message: {\n authorizer: params.authorizer,\n nonce: params.nonce,\n },\n });\n}\n","import type { PaymentRequired, PaymentPayload, SettleResponse } from './types.js';\n\n// ============================================================\n// x402 v2 HTTP Header Names\n// Ref: github.com/coinbase/x402/blob/main/specs/x402-specification-v2.md\n// ============================================================\n\n/** v2 header names (standard) */\nexport const HEADER_PAYMENT_REQUIRED = 'PAYMENT-REQUIRED';\nexport const HEADER_PAYMENT_SIGNATURE = 'PAYMENT-SIGNATURE';\nexport const HEADER_PAYMENT_RESPONSE = 'PAYMENT-RESPONSE';\n\n/** v1 header names (backward compat) */\nexport const HEADER_V1_PAYMENT = 'X-PAYMENT';\nexport const HEADER_V1_PAYMENT_RESPONSE = 'X-PAYMENT-RESPONSE';\n\n// ============================================================\n// Encoding / Decoding (Base64 JSON — per x402 spec)\n// ============================================================\n\nfunction toBase64(data: unknown): string {\n const json = JSON.stringify(data);\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(json).toString('base64');\n }\n return btoa(json);\n}\n\nfunction fromBase64<T>(encoded: string): T {\n let json: string;\n if (typeof Buffer !== 'undefined') {\n json = Buffer.from(encoded, 'base64').toString('utf-8');\n } else {\n json = atob(encoded);\n }\n return JSON.parse(json) as T;\n}\n\n// --- PaymentRequired (402 response) ---\n\nexport function encodePaymentRequired(req: PaymentRequired): string {\n return toBase64(req);\n}\n\nexport function decodePaymentRequired(encoded: string): PaymentRequired {\n return fromBase64<PaymentRequired>(encoded);\n}\n\n// --- PaymentPayload (client → server) ---\n\nexport function encodePaymentPayload(payload: PaymentPayload): string {\n return toBase64(payload);\n}\n\nexport function decodePaymentPayload(encoded: string): PaymentPayload {\n return fromBase64<PaymentPayload>(encoded);\n}\n\n// --- SettleResponse (server → client) ---\n\nexport function encodeSettleResponse(resp: SettleResponse): string {\n return toBase64(resp);\n}\n\nexport function decodeSettleResponse(encoded: string): SettleResponse {\n return fromBase64<SettleResponse>(encoded);\n}\n\n// ============================================================\n// Header Extraction Helpers\n// ============================================================\n\n/**\n * Extract PaymentRequired from a 402 Response.\n * Tries v2 header first, falls back to v1.\n */\nexport function extractPaymentRequired(response: Response): PaymentRequired | null {\n const v2 = response.headers.get(HEADER_PAYMENT_REQUIRED);\n if (v2) return decodePaymentRequired(v2);\n\n // v1 fallback: check body or X-PAYMENT-REQUIRED\n const v1 = response.headers.get('X-PAYMENT-REQUIRED');\n if (v1) return decodePaymentRequired(v1);\n\n return null;\n}\n\n/**\n * Extract SettleResponse from a successful response.\n */\nexport function extractSettleResponse(response: Response): SettleResponse | null {\n const v2 = response.headers.get(HEADER_PAYMENT_RESPONSE);\n if (v2) return decodeSettleResponse(v2);\n\n const v1 = response.headers.get(HEADER_V1_PAYMENT_RESPONSE);\n if (v1) return decodeSettleResponse(v1);\n\n return null;\n}\n","import type {\n PaymentPayload,\n PaymentRequirements,\n VerifyResponse,\n SettleResponse,\n FacilitatorSupported,\n FacilitatorConfig,\n} from './types.js';\n\n/**\n * HTTP Facilitator Client — standard x402 v2 facilitator API.\n * Compatible with Coinbase hosted facilitator and self-hosted instances.\n *\n * Ref: coinbase/x402 HTTPFacilitatorClient pattern\n */\nexport class FacilitatorClient {\n private readonly url: string;\n private readonly createAuthHeaders: FacilitatorConfig['createAuthHeaders'];\n\n constructor(config: FacilitatorConfig) {\n this.url = config.url.replace(/\\/$/, '');\n this.createAuthHeaders = config.createAuthHeaders;\n }\n\n private async getHeaders(endpoint: 'verify' | 'settle' | 'supported'): Promise<Record<string, string>> {\n const base: Record<string, string> = { 'Content-Type': 'application/json' };\n if (!this.createAuthHeaders) return base;\n const auth = await this.createAuthHeaders();\n return { ...base, ...auth[endpoint] };\n }\n\n /**\n * POST /verify — validate payment signature off-chain (~100ms).\n */\n async verify(\n paymentPayload: PaymentPayload,\n paymentRequirements: PaymentRequirements,\n ): Promise<VerifyResponse> {\n const resp = await fetch(`${this.url}/verify`, {\n method: 'POST',\n headers: await this.getHeaders('verify'),\n body: JSON.stringify({\n x402Version: 2,\n paymentPayload,\n paymentRequirements,\n }),\n });\n if (!resp.ok) {\n throw new Error(`Facilitator /verify failed: ${resp.status} ${await resp.text()}`);\n }\n return resp.json() as Promise<VerifyResponse>;\n }\n\n /**\n * POST /settle — execute on-chain settlement (~2s on Base).\n */\n async settle(\n paymentPayload: PaymentPayload,\n paymentRequirements: PaymentRequirements,\n ): Promise<SettleResponse> {\n const resp = await fetch(`${this.url}/settle`, {\n method: 'POST',\n headers: await this.getHeaders('settle'),\n body: JSON.stringify({\n x402Version: 2,\n paymentPayload,\n paymentRequirements,\n }),\n });\n if (!resp.ok) {\n throw new Error(`Facilitator /settle failed: ${resp.status} ${await resp.text()}`);\n }\n return resp.json() as Promise<SettleResponse>;\n }\n\n /**\n * GET /supported — query facilitator capabilities.\n */\n async supported(): Promise<FacilitatorSupported> {\n const resp = await fetch(`${this.url}/supported`, {\n method: 'GET',\n headers: await this.getHeaders('supported'),\n });\n if (!resp.ok) {\n throw new Error(`Facilitator /supported failed: ${resp.status} ${await resp.text()}`);\n }\n return resp.json() as Promise<FacilitatorSupported>;\n }\n}\n","import { type Address, type Hex, type Hash, type PublicClient, type WalletClient } from 'viem';\nimport { x402Actions } from '@aastar/core';\nimport type {\n X402PaymentParams, PaymentRequired, PaymentPayload,\n PaymentRequirements, SettleResponse, FacilitatorConfig,\n} from './types.js';\nimport { signTransferWithAuthorization, generateNonce } from './eip3009.js';\nimport {\n encodePaymentPayload,\n extractPaymentRequired,\n extractSettleResponse,\n HEADER_PAYMENT_SIGNATURE,\n} from './payment-header.js';\nimport { FacilitatorClient } from './facilitator.js';\n\n// ============================================================\n// x402 Client — aligned with @x402/fetch + @x402/core patterns\n// Ref: coinbase/x402, Cloudflare Workers x402, MPP mppx\n// ============================================================\n\nexport type X402ClientConfig = {\n publicClient: PublicClient;\n walletClient: WalletClient;\n superPaymasterAddress: Address;\n chainId: number;\n /** Facilitator endpoint (default: self-facilitated via SuperPaymaster) */\n facilitator?: FacilitatorConfig;\n /** EIP-712 domain for asset token (defaults: USDC / version \"2\") */\n tokenName?: string;\n tokenVersion?: string;\n /** Payment policy: max amount per request (in atomic units) */\n maxAmountPerRequest?: bigint;\n};\n\n/** CAIP-2 network identifier from chainId */\nfunction toNetworkId(chainId: number): `eip155:${number}` {\n return `eip155:${chainId}`;\n}\n\nexport class X402Client {\n private readonly actions;\n private readonly config: X402ClientConfig;\n private readonly facilitatorClient?: FacilitatorClient;\n\n constructor(config: X402ClientConfig) {\n if (!config.walletClient.account) {\n throw new Error('WalletClient must have an account configured');\n }\n this.config = config;\n // walletClient supports both readContract and writeContract — single instance suffices\n this.actions = x402Actions(config.superPaymasterAddress)(config.walletClient);\n if (config.facilitator) {\n this.facilitatorClient = new FacilitatorClient(config.facilitator);\n }\n }\n\n /**\n * Create a signed payment payload (EIP-3009 TransferWithAuthorization).\n * Returns a base64-encoded PaymentPayload ready for PAYMENT-SIGNATURE header.\n */\n async createPayment(params: X402PaymentParams): Promise<{\n payload: PaymentPayload;\n encoded: string;\n nonce: Hex;\n }> {\n const nonce = params.nonce || generateNonce();\n const now = BigInt(Math.floor(Date.now() / 1000));\n const validAfter = params.validAfter ?? (now - 600n); // 10 min grace (per x402 spec)\n const validBefore = params.validBefore ?? (now + 3600n);\n const tokenName = this.config.tokenName || 'USDC';\n const tokenVersion = this.config.tokenVersion || '2';\n\n const signature = await signTransferWithAuthorization(this.config.walletClient, {\n from: params.from,\n to: params.to,\n value: params.amount,\n validAfter,\n validBefore,\n nonce,\n tokenName,\n tokenVersion,\n chainId: this.config.chainId,\n verifyingContract: params.asset,\n });\n\n const payload: PaymentPayload = {\n x402Version: 2,\n accepted: {\n scheme: 'exact',\n network: toNetworkId(this.config.chainId),\n asset: params.asset,\n amount: params.amount.toString(),\n payTo: params.to,\n maxTimeoutSeconds: 3600,\n extra: { name: tokenName, version: tokenVersion },\n },\n payload: {\n signature,\n authorization: {\n from: params.from,\n to: params.to,\n value: params.amount.toString(),\n validAfter: validAfter.toString(),\n validBefore: validBefore.toString(),\n nonce,\n },\n },\n };\n\n return {\n payload,\n encoded: encodePaymentPayload(payload),\n nonce,\n };\n }\n\n /**\n * Settle payment on-chain via SuperPaymaster (self-facilitated).\n * Uses EIP-3009 transferWithAuthorization path.\n */\n async settleOnChain(params: {\n from: Address; to: Address; asset: Address; amount: bigint;\n validAfter: bigint; validBefore: bigint; nonce: Hex; signature: Hex;\n }): Promise<Hex> {\n return this.actions.settleX402Payment({\n ...params,\n account: this.config.walletClient.account!,\n });\n }\n\n /**\n * Settle payment on-chain via direct transfer (for xPNTs and pre-approved tokens).\n */\n async settleDirectOnChain(params: {\n from: Address; to: Address; asset: Address; amount: bigint; nonce: Hex;\n }): Promise<Hex> {\n return this.actions.settleX402PaymentDirect({\n ...params,\n account: this.config.walletClient.account!,\n });\n }\n\n /**\n * Get facilitator fee quote from on-chain contract.\n */\n async getQuote(): Promise<{ feeBPS: bigint }> {\n const feeBPS = await this.actions.facilitatorFeeBPS();\n return { feeBPS };\n }\n\n /**\n * Check if a nonce has been used.\n */\n async checkNonce(nonce: Hex): Promise<boolean> {\n return this.actions.x402SettlementNonces({ nonce });\n }\n\n /**\n * Settle via external facilitator (Coinbase, self-hosted, etc.).\n * Requires facilitator config in constructor.\n */\n async settleViaFacilitator(payload: PaymentPayload, requirements: PaymentRequirements): Promise<SettleResponse> {\n if (!this.facilitatorClient) {\n throw new Error('No facilitator configured. Pass facilitator config to X402Client constructor.');\n }\n return this.facilitatorClient.settle(payload, requirements);\n }\n\n /**\n * x402-aware fetch wrapper.\n * Automatically handles 402 → sign → retry flow per x402 v2 spec.\n *\n * Pattern from: @x402/fetch wrapFetchWithPayment\n *\n * Flow:\n * 1. Make initial request\n * 2. If 402, extract PaymentRequired from PAYMENT-REQUIRED header\n * 3. Select best payment option (applies policy: max amount check)\n * 4. Sign EIP-3009 authorization\n * 5. Retry with PAYMENT-SIGNATURE header\n */\n async x402Fetch(url: string, init?: RequestInit): Promise<Response> {\n const firstResponse = await fetch(url, init);\n\n if (firstResponse.status !== 402) {\n return firstResponse;\n }\n\n // Step 2: Extract payment requirements\n // TODO: some server implementations put PaymentRequired in the response body instead of headers\n const paymentRequired = extractPaymentRequired(firstResponse);\n if (!paymentRequired || !paymentRequired.accepts?.length) {\n throw new Error('402 response missing PAYMENT-REQUIRED header or empty accepts');\n }\n\n // Step 3: Select payment option (filter by network + policy)\n const myNetwork = toNetworkId(this.config.chainId);\n let selected = paymentRequired.accepts.find(\n (a) => a.network === myNetwork && a.scheme === 'exact'\n );\n if (!selected) {\n // Fallback: any EVM option\n selected = paymentRequired.accepts.find((a) => a.network.startsWith('eip155:'));\n }\n if (!selected) {\n throw new Error(`No compatible payment option for network ${myNetwork}`);\n }\n\n // Policy check: max amount\n if (this.config.maxAmountPerRequest && BigInt(selected.amount) > this.config.maxAmountPerRequest) {\n throw new Error(\n `Payment amount ${selected.amount} exceeds max ${this.config.maxAmountPerRequest}`\n );\n }\n\n const account = this.config.walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account for automatic payment');\n }\n\n // Step 4: Sign\n const { encoded } = await this.createPayment({\n from: account.address,\n to: selected.payTo,\n asset: selected.asset as Address,\n amount: BigInt(selected.amount),\n });\n\n // Step 5: Retry with payment signature\n const retryHeaders = new Headers(init?.headers);\n retryHeaders.set(HEADER_PAYMENT_SIGNATURE, encoded);\n\n return fetch(url, { ...init, headers: retryHeaders });\n }\n}\n"]}
1
+ {"version":3,"sources":["../../x402/src/eip3009.ts","../../x402/src/payment-header.ts","../../x402/src/facilitator.ts","../../x402/src/X402Client.ts"],"names":["toHex","x402Actions"],"mappings":";;;;;AAEO,IAAM,aAAA,GAAgB;AAAA,EACzB,yBAAA,EAA2B;AAAA,IACvB,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA,IAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,IAC9B,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,IACjC,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAU;AAAA,IACtC,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,SAAA,EAAU;AAAA,IACvC,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA;AAAU,GACrC;AAAA;AAAA;AAAA,EAGA,wBAAA,EAA0B;AAAA,IACtB,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA,IAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,IAC9B,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,IACjC,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAU;AAAA,IACtC,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,SAAA,EAAU;AAAA,IACvC,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA;AAAU,GACrC;AAAA,EACA,mBAAA,EAAqB;AAAA,IACjB,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAU;AAAA,IACtC,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA;AAAU;AAEzC;AAEO,SAAS,gBAAA,CAAiB,SAAA,EAAmB,YAAA,EAAsB,OAAA,EAAiB,iBAAA,EAA4B;AACnH,EAAA,OAAO;AAAA,IACH,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,YAAA;AAAA,IACT,OAAA;AAAA,IACA;AAAA,GACJ;AACJ;AAEO,SAAS,aAAA,GAAqB;AACjC,EAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,EAAE,CAAA;AAC/B,EAAA,UAAA,CAAW,MAAA,CAAO,gBAAgB,KAAK,CAAA;AACvC,EAAA,OAAOA,WAAM,KAAK,CAAA;AACtB;AAGO,IAAM,oBAAA,GAAuB,EAAE,IAAA,EAAM,QAAA,EAAU,SAAS,GAAA;AAE/D,eAAsB,6BAAA,CAClB,cACA,MAAA,EAYY;AACZ,EAAA,MAAM,MAAA,GAAS,gBAAA;AAAA,IACX,MAAA,CAAO,SAAA;AAAA,IACP,MAAA,CAAO,YAAA;AAAA,IACP,MAAA,CAAO,OAAA;AAAA,IACP,MAAA,CAAO;AAAA,GACX;AAEA,EAAA,MAAM,UAAU,YAAA,CAAa,OAAA;AAC7B,EAAA,IAAI,CAAC,OAAA,EAAS;AACV,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA,EACvD;AAEA,EAAA,OAAO,aAAa,aAAA,CAAc;AAAA,IAC9B,OAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA,EAAO,aAAA;AAAA,IACP,WAAA,EAAa,2BAAA;AAAA,IACb,OAAA,EAAS;AAAA,MACL,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,IAAI,MAAA,CAAO,EAAA;AAAA,MACX,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,OAAO,MAAA,CAAO;AAAA;AAClB,GACH,CAAA;AACL;AAQA,eAAsB,mCAAA,CAClB,cACA,MAAA,EAYY;AACZ,EAAA,MAAM,UAAU,YAAA,CAAa,OAAA;AAC7B,EAAA,IAAI,CAAC,OAAA,EAAS;AACV,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA,EACvD;AACA,EAAA,IAAI,QAAQ,OAAA,CAAQ,WAAA,OAAkB,MAAA,CAAO,IAAA,CAAK,aAAY,EAAG;AAC7D,IAAA,MAAM,IAAI,MAAM,CAAA,OAAA,EAAU,OAAA,CAAQ,OAAO,CAAA,qBAAA,EAAwB,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAAA,EAClF;AAEA,EAAA,IAAI,MAAA,CAAO,WAAA,IAAe,MAAA,CAAO,UAAA,EAAY;AACzC,IAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,EACjE;AACA,EAAA,IAAI,MAAA,CAAO,WAAA,GAAc,MAAA,CAAO,UAAA,GAAa,IAAA,EAAM;AAC/C,IAAA,MAAM,IAAI,KAAA;AAAA,MACN,CAAA,qBAAA,EAAwB,MAAA,CAAO,WAAA,GAAc,MAAA,CAAO,UAAU,CAAA,kCAAA;AAAA,KAClE;AAAA,EACJ;AACA,EAAA,OAAO,6BAAA,CAA8B,cAAc,MAAM,CAAA;AAC7D;AAOA,eAAsB,4BAAA,CAClB,cACA,MAAA,EAYY;AACZ,EAAA,MAAM,UAAU,YAAA,CAAa,OAAA;AAC7B,EAAA,IAAI,CAAC,OAAA,EAAS;AACV,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA,EACvD;AACA,EAAA,IAAI,QAAQ,OAAA,CAAQ,WAAA,OAAkB,MAAA,CAAO,IAAA,CAAK,aAAY,EAAG;AAC7D,IAAA,MAAM,IAAI,MAAM,CAAA,OAAA,EAAU,OAAA,CAAQ,OAAO,CAAA,qBAAA,EAAwB,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAAA,EAClF;AAEA,EAAA,IAAI,MAAA,CAAO,WAAA,IAAe,MAAA,CAAO,UAAA,EAAY;AACzC,IAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,EACjE;AACA,EAAA,IAAI,MAAA,CAAO,WAAA,GAAc,MAAA,CAAO,UAAA,GAAa,IAAA,EAAM;AAC/C,IAAA,MAAM,IAAI,KAAA;AAAA,MACN,CAAA,qBAAA,EAAwB,MAAA,CAAO,WAAA,GAAc,MAAA,CAAO,UAAU,CAAA,kCAAA;AAAA,KAClE;AAAA,EACJ;AAEA,EAAA,OAAO,aAAa,aAAA,CAAc;AAAA,IAC9B,OAAA;AAAA,IACA,MAAA,EAAQ,iBAAiB,MAAA,CAAO,SAAA,EAAW,OAAO,YAAA,EAAc,MAAA,CAAO,OAAA,EAAS,MAAA,CAAO,iBAAiB,CAAA;AAAA,IACxG,KAAA,EAAO,aAAA;AAAA,IACP,WAAA,EAAa,0BAAA;AAAA,IACb,OAAA,EAAS;AAAA,MACL,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,IAAI,MAAA,CAAO,EAAA;AAAA,MACX,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,OAAO,MAAA,CAAO;AAAA;AAClB,GACH,CAAA;AACL;AAMA,eAAsB,uBAAA,CAClB,cACA,MAAA,EAQY;AACZ,EAAA,MAAM,UAAU,YAAA,CAAa,OAAA;AAC7B,EAAA,IAAI,CAAC,OAAA,EAAS;AACV,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA,EACvD;AACA,EAAA,IAAI,QAAQ,OAAA,CAAQ,WAAA,OAAkB,MAAA,CAAO,UAAA,CAAW,aAAY,EAAG;AACnE,IAAA,MAAM,IAAI,MAAM,CAAA,OAAA,EAAU,OAAA,CAAQ,OAAO,CAAA,2BAAA,EAA8B,MAAA,CAAO,UAAU,CAAA,CAAE,CAAA;AAAA,EAC9F;AAEA,EAAA,OAAO,aAAa,aAAA,CAAc;AAAA,IAC9B,OAAA;AAAA,IACA,MAAA,EAAQ,iBAAiB,MAAA,CAAO,SAAA,EAAW,OAAO,YAAA,EAAc,MAAA,CAAO,OAAA,EAAS,MAAA,CAAO,iBAAiB,CAAA;AAAA,IACxG,KAAA,EAAO,aAAA;AAAA,IACP,WAAA,EAAa,qBAAA;AAAA,IACb,OAAA,EAAS;AAAA,MACL,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,OAAO,MAAA,CAAO;AAAA;AAClB,GACH,CAAA;AACL;;;AC9MO,IAAM,uBAAA,GAA0B;AAChC,IAAM,wBAAA,GAA2B;AACjC,IAAM,uBAAA,GAA0B;AAGhC,IAAM,iBAAA,GAAoB;AAC1B,IAAM,0BAAA,GAA6B;AAM1C,SAAS,SAAS,IAAA,EAAuB;AACrC,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AAChC,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAC/B,IAAA,OAAO,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,SAAS,QAAQ,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,KAAK,IAAI,CAAA;AACpB;AAEA,SAAS,WAAc,OAAA,EAAoB;AACvC,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAC/B,IAAA,IAAA,GAAO,OAAO,IAAA,CAAK,OAAA,EAAS,QAAQ,CAAA,CAAE,SAAS,OAAO,CAAA;AAAA,EAC1D,CAAA,MAAO;AACH,IAAA,IAAA,GAAO,KAAK,OAAO,CAAA;AAAA,EACvB;AACA,EAAA,OAAO,IAAA,CAAK,MAAM,IAAI,CAAA;AAC1B;AAIO,SAAS,sBAAsB,GAAA,EAA8B;AAChE,EAAA,OAAO,SAAS,GAAG,CAAA;AACvB;AAEO,SAAS,sBAAsB,OAAA,EAAkC;AACpE,EAAA,OAAO,WAA4B,OAAO,CAAA;AAC9C;AAIO,SAAS,qBAAqB,OAAA,EAAiC;AAClE,EAAA,OAAO,SAAS,OAAO,CAAA;AAC3B;AAEO,SAAS,qBAAqB,OAAA,EAAiC;AAClE,EAAA,OAAO,WAA2B,OAAO,CAAA;AAC7C;AAIO,SAAS,qBAAqB,IAAA,EAA8B;AAC/D,EAAA,OAAO,SAAS,IAAI,CAAA;AACxB;AAEO,SAAS,qBAAqB,OAAA,EAAiC;AAClE,EAAA,OAAO,WAA2B,OAAO,CAAA;AAC7C;AAUO,SAAS,uBAAuB,QAAA,EAA4C;AAC/E,EAAA,MAAM,EAAA,GAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,uBAAuB,CAAA;AACvD,EAAA,IAAI,EAAA,EAAI,OAAO,qBAAA,CAAsB,EAAE,CAAA;AAGvC,EAAA,MAAM,EAAA,GAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,oBAAoB,CAAA;AACpD,EAAA,IAAI,EAAA,EAAI,OAAO,qBAAA,CAAsB,EAAE,CAAA;AAEvC,EAAA,OAAO,IAAA;AACX;AAKO,SAAS,sBAAsB,QAAA,EAA2C;AAC7E,EAAA,MAAM,EAAA,GAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,uBAAuB,CAAA;AACvD,EAAA,IAAI,EAAA,EAAI,OAAO,oBAAA,CAAqB,EAAE,CAAA;AAEtC,EAAA,MAAM,EAAA,GAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,0BAA0B,CAAA;AAC1D,EAAA,IAAI,EAAA,EAAI,OAAO,oBAAA,CAAqB,EAAE,CAAA;AAEtC,EAAA,OAAO,IAAA;AACX;;;ACnFO,IAAM,oBAAN,MAAwB;AAAA,EACV,GAAA;AAAA,EACA,iBAAA;AAAA,EAEjB,YAAY,MAAA,EAA2B;AACnC,IAAA,IAAA,CAAK,GAAA,GAAM,MAAA,CAAO,GAAA,CAAI,OAAA,CAAQ,OAAO,EAAE,CAAA;AACvC,IAAA,IAAA,CAAK,oBAAoB,MAAA,CAAO,iBAAA;AAAA,EACpC;AAAA,EAEA,MAAc,WAAW,QAAA,EAA8E;AACnG,IAAA,MAAM,IAAA,GAA+B,EAAE,cAAA,EAAgB,kBAAA,EAAmB;AAC1E,IAAA,IAAI,CAAC,IAAA,CAAK,iBAAA,EAAmB,OAAO,IAAA;AACpC,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,iBAAA,EAAkB;AAC1C,IAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAG,IAAA,CAAK,QAAQ,CAAA,EAAE;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAA,CACF,cAAA,EACA,mBAAA,EACuB;AACvB,IAAA,MAAM,OAAO,MAAM,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,GAAG,CAAA,OAAA,CAAA,EAAW;AAAA,MAC3C,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,MAAM,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA;AAAA,MACvC,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,QACjB,WAAA,EAAa,CAAA;AAAA,QACb,cAAA;AAAA,QACA;AAAA,OACH;AAAA,KACJ,CAAA;AACD,IAAA,IAAI,CAAC,KAAK,EAAA,EAAI;AACV,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4BAAA,EAA+B,IAAA,CAAK,MAAM,IAAI,MAAM,IAAA,CAAK,IAAA,EAAM,CAAA,CAAE,CAAA;AAAA,IACrF;AACA,IAAA,OAAO,KAAK,IAAA,EAAK;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAA,CACF,cAAA,EACA,mBAAA,EACuB;AACvB,IAAA,MAAM,OAAO,MAAM,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,GAAG,CAAA,OAAA,CAAA,EAAW;AAAA,MAC3C,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,MAAM,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA;AAAA,MACvC,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,QACjB,WAAA,EAAa,CAAA;AAAA,QACb,cAAA;AAAA,QACA;AAAA,OACH;AAAA,KACJ,CAAA;AACD,IAAA,IAAI,CAAC,KAAK,EAAA,EAAI;AACV,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4BAAA,EAA+B,IAAA,CAAK,MAAM,IAAI,MAAM,IAAA,CAAK,IAAA,EAAM,CAAA,CAAE,CAAA;AAAA,IACrF;AACA,IAAA,OAAO,KAAK,IAAA,EAAK;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAA,GAA2C;AAC7C,IAAA,MAAM,OAAO,MAAM,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,GAAG,CAAA,UAAA,CAAA,EAAc;AAAA,MAC9C,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,MAAM,IAAA,CAAK,UAAA,CAAW,WAAW;AAAA,KAC7C,CAAA;AACD,IAAA,IAAI,CAAC,KAAK,EAAA,EAAI;AACV,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,+BAAA,EAAkC,IAAA,CAAK,MAAM,IAAI,MAAM,IAAA,CAAK,IAAA,EAAM,CAAA,CAAE,CAAA;AAAA,IACxF;AACA,IAAA,OAAO,KAAK,IAAA,EAAK;AAAA,EACrB;AACJ;;;ACrDA,SAAS,YAAY,OAAA,EAAqC;AACtD,EAAA,OAAO,UAAU,OAAO,CAAA,CAAA;AAC5B;AAEO,IAAM,aAAN,MAAiB;AAAA,EACH,OAAA;AAAA,EACA,MAAA;AAAA,EACA,iBAAA;AAAA,EAEjB,YAAY,MAAA,EAA0B;AAClC,IAAA,IAAI,CAAC,MAAA,CAAO,YAAA,CAAa,OAAA,EAAS;AAC9B,MAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,IAClE;AACA,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAEd,IAAA,IAAA,CAAK,UAAUC,6BAAA,CAAY,MAAA,CAAO,qBAAqB,CAAA,CAAE,OAAO,YAAY,CAAA;AAC5E,IAAA,IAAI,OAAO,WAAA,EAAa;AACpB,MAAA,IAAA,CAAK,iBAAA,GAAoB,IAAI,iBAAA,CAAkB,MAAA,CAAO,WAAW,CAAA;AAAA,IACrE;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,MAAA,EAIjB;AACC,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,IAAS,aAAA,EAAc;AAC5C,IAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAC,CAAA;AAChD,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,UAAA,IAAe,GAAA,GAAM,IAAA;AAC/C,IAAA,MAAM,WAAA,GAAc,MAAA,CAAO,WAAA,IAAgB,GAAA,GAAM,KAAA;AACjD,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,SAAA,IAAa,MAAA;AAC3C,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,MAAA,CAAO,YAAA,IAAgB,GAAA;AAEjD,IAAA,MAAM,SAAA,GAAY,MAAM,6BAAA,CAA8B,IAAA,CAAK,OAAO,YAAA,EAAc;AAAA,MAC5E,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,IAAI,MAAA,CAAO,EAAA;AAAA,MACX,OAAO,MAAA,CAAO,MAAA;AAAA,MACd,UAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAA,EAAS,KAAK,MAAA,CAAO,OAAA;AAAA,MACrB,mBAAmB,MAAA,CAAO;AAAA,KAC7B,CAAA;AAED,IAAA,MAAM,OAAA,GAA0B;AAAA,MAC5B,WAAA,EAAa,CAAA;AAAA,MACb,QAAA,EAAU;AAAA,QACN,MAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAS,WAAA,CAAY,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA;AAAA,QACxC,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,QAAA,EAAS;AAAA,QAC/B,OAAO,MAAA,CAAO,EAAA;AAAA,QACd,iBAAA,EAAmB,IAAA;AAAA,QACnB,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,SAAS,YAAA;AAAa,OACpD;AAAA,MACA,OAAA,EAAS;AAAA,QACL,SAAA;AAAA,QACA,aAAA,EAAe;AAAA,UACX,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAI,MAAA,CAAO,EAAA;AAAA,UACX,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,QAAA,EAAS;AAAA,UAC9B,UAAA,EAAY,WAAW,QAAA,EAAS;AAAA,UAChC,WAAA,EAAa,YAAY,QAAA,EAAS;AAAA,UAClC;AAAA;AACJ;AACJ,KACJ;AAEA,IAAA,OAAO;AAAA,MACH,OAAA;AAAA,MACA,OAAA,EAAS,qBAAqB,OAAO,CAAA;AAAA,MACrC;AAAA,KACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,MAAA,EAGH;AACb,IAAA,OAAO,IAAA,CAAK,QAAQ,iBAAA,CAAkB;AAAA,MAClC,GAAG,MAAA;AAAA,MACH,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,YAAA,CAAa;AAAA,KACrC,CAAA;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,MAAA,EAET;AACb,IAAA,OAAO,IAAA,CAAK,QAAQ,uBAAA,CAAwB;AAAA,MACxC,GAAG,MAAA;AAAA,MACH,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,YAAA,CAAa;AAAA,KACrC,CAAA;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAA,GAAwC;AAC1C,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,OAAA,CAAQ,iBAAA,EAAkB;AACpD,IAAA,OAAO,EAAE,MAAA,EAAO;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,KAAA,EAA8B;AAC3C,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,oBAAA,CAAqB,EAAE,OAAO,CAAA;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,oBAAA,CAAqB,OAAA,EAAyB,YAAA,EAA4D;AAC5G,IAAA,IAAI,CAAC,KAAK,iBAAA,EAAmB;AACzB,MAAA,MAAM,IAAI,MAAM,+EAA+E,CAAA;AAAA,IACnG;AACA,IAAA,OAAO,IAAA,CAAK,iBAAA,CAAkB,MAAA,CAAO,OAAA,EAAS,YAAY,CAAA;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAM,SAAA,CAAU,GAAA,EAAa,IAAA,EAAuC;AAChE,IAAA,MAAM,aAAA,GAAgB,MAAM,KAAA,CAAM,GAAA,EAAK,IAAI,CAAA;AAE3C,IAAA,IAAI,aAAA,CAAc,WAAW,GAAA,EAAK;AAC9B,MAAA,OAAO,aAAA;AAAA,IACX;AAIA,IAAA,MAAM,eAAA,GAAkB,uBAAuB,aAAa,CAAA;AAC5D,IAAA,IAAI,CAAC,eAAA,IAAmB,CAAC,eAAA,CAAgB,SAAS,MAAA,EAAQ;AACtD,MAAA,MAAM,IAAI,MAAM,+DAA+D,CAAA;AAAA,IACnF;AAGA,IAAA,MAAM,SAAA,GAAY,WAAA,CAAY,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA;AACjD,IAAA,IAAI,QAAA,GAAW,gBAAgB,OAAA,CAAQ,IAAA;AAAA,MACnC,CAAC,CAAA,KAAM,CAAA,CAAE,OAAA,KAAY,SAAA,IAAa,EAAE,MAAA,KAAW;AAAA,KACnD;AACA,IAAA,IAAI,CAAC,QAAA,EAAU;AAEX,MAAA,QAAA,GAAW,eAAA,CAAgB,QAAQ,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,OAAA,CAAQ,UAAA,CAAW,SAAS,CAAC,CAAA;AAAA,IAClF;AACA,IAAA,IAAI,CAAC,QAAA,EAAU;AACX,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,yCAAA,EAA4C,SAAS,CAAA,CAAE,CAAA;AAAA,IAC3E;AAGA,IAAA,IAAI,IAAA,CAAK,OAAO,mBAAA,IAAuB,MAAA,CAAO,SAAS,MAAM,CAAA,GAAI,IAAA,CAAK,MAAA,CAAO,mBAAA,EAAqB;AAC9F,MAAA,MAAM,IAAI,KAAA;AAAA,QACN,kBAAkB,QAAA,CAAS,MAAM,CAAA,aAAA,EAAgB,IAAA,CAAK,OAAO,mBAAmB,CAAA;AAAA,OACpF;AAAA,IACJ;AAEA,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,CAAO,YAAA,CAAa,OAAA;AACzC,IAAA,IAAI,CAAC,OAAA,EAAS;AACV,MAAA,MAAM,IAAI,MAAM,yDAAyD,CAAA;AAAA,IAC7E;AAGA,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,KAAK,aAAA,CAAc;AAAA,MACzC,MAAM,OAAA,CAAQ,OAAA;AAAA,MACd,IAAI,QAAA,CAAS,KAAA;AAAA,MACb,OAAO,QAAA,CAAS,KAAA;AAAA,MAChB,MAAA,EAAQ,MAAA,CAAO,QAAA,CAAS,MAAM;AAAA,KACjC,CAAA;AAGD,IAAA,MAAM,YAAA,GAAe,IAAI,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA;AAC9C,IAAA,YAAA,CAAa,GAAA,CAAI,0BAA0B,OAAO,CAAA;AAElD,IAAA,OAAO,MAAM,GAAA,EAAK,EAAE,GAAG,IAAA,EAAM,OAAA,EAAS,cAAc,CAAA;AAAA,EACxD;AACJ","file":"chunk-FIMXPANS.cjs","sourcesContent":["import { type Address, type Hex, type WalletClient, toHex } from 'viem';\n\nexport const EIP3009_TYPES = {\n TransferWithAuthorization: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n ],\n // Distinct typehash from TransferWithAuthorization — prevents replay across variants.\n // msg.sender must equal `to` on-chain (CallerMustBeRecipient error if violated).\n ReceiveWithAuthorization: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n ],\n CancelAuthorization: [\n { name: 'authorizer', type: 'address' },\n { name: 'nonce', type: 'bytes32' },\n ],\n} as const;\n\nexport function getEIP3009Domain(tokenName: string, tokenVersion: string, chainId: number, verifyingContract: Address) {\n return {\n name: tokenName,\n version: tokenVersion,\n chainId,\n verifyingContract,\n };\n}\n\nexport function generateNonce(): Hex {\n const bytes = new Uint8Array(32);\n globalThis.crypto.getRandomValues(bytes);\n return toHex(bytes);\n}\n\n// GToken EIP-712 domain constants (GTokenAuthorization v2.2.0)\nexport const GTOKEN_EIP712_DOMAIN = { name: 'GToken', version: '1' } as const;\n\nexport async function signTransferWithAuthorization(\n walletClient: WalletClient,\n params: {\n from: Address;\n to: Address;\n value: bigint;\n validAfter: bigint;\n validBefore: bigint;\n nonce: Hex;\n tokenName: string;\n tokenVersion: string;\n chainId: number;\n verifyingContract: Address;\n }\n): Promise<Hex> {\n const domain = getEIP3009Domain(\n params.tokenName,\n params.tokenVersion,\n params.chainId,\n params.verifyingContract\n );\n\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n\n return walletClient.signTypedData({\n account,\n domain,\n types: EIP3009_TYPES,\n primaryType: 'TransferWithAuthorization',\n message: {\n from: params.from,\n to: params.to,\n value: params.value,\n validAfter: params.validAfter,\n validBefore: params.validBefore,\n nonce: params.nonce,\n },\n });\n}\n\n/**\n * Sign a TransferWithAuthorization for GTokenAuthorization (EIP-3009).\n * GToken-specific wrapper: enforces MAX_AUTH_VALIDITY = 300s before signing.\n * Use this instead of the generic signTransferWithAuthorization when the\n * verifying contract is GTokenAuthorization.\n */\nexport async function signGTokenTransferWithAuthorization(\n walletClient: WalletClient,\n params: {\n from: Address;\n to: Address;\n value: bigint;\n validAfter: bigint;\n validBefore: bigint;\n nonce: Hex;\n tokenName: string;\n tokenVersion: string;\n chainId: number;\n verifyingContract: Address;\n }\n): Promise<Hex> {\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n if (account.address.toLowerCase() !== params.from.toLowerCase()) {\n throw new Error(`Signer ${account.address} does not match from ${params.from}`);\n }\n // GTokenAuthorization enforces MAX_AUTH_VALIDITY = 300s on-chain.\n if (params.validBefore <= params.validAfter) {\n throw new Error('validBefore must be greater than validAfter');\n }\n if (params.validBefore - params.validAfter > 300n) {\n throw new Error(\n `Authorization window ${params.validBefore - params.validAfter}s exceeds MAX_AUTH_VALIDITY (300s)`\n );\n }\n return signTransferWithAuthorization(walletClient, params);\n}\n\n/**\n * Sign a ReceiveWithAuthorization for GTokenAuthorization (EIP-3009).\n * The signed `to` address must be the one submitting the transaction on-chain.\n * Note: `xPNTsToken` is NOT included in the signature (it's a relay-supplied hint for RC-2).\n */\nexport async function signReceiveWithAuthorization(\n walletClient: WalletClient,\n params: {\n from: Address;\n to: Address;\n value: bigint;\n validAfter: bigint;\n validBefore: bigint;\n nonce: Hex;\n tokenName: string;\n tokenVersion: string;\n chainId: number;\n verifyingContract: Address;\n }\n): Promise<Hex> {\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n if (account.address.toLowerCase() !== params.from.toLowerCase()) {\n throw new Error(`Signer ${account.address} does not match from ${params.from}`);\n }\n // GTokenAuthorization enforces MAX_AUTH_VALIDITY = 300s on-chain (RC-1).\n if (params.validBefore <= params.validAfter) {\n throw new Error('validBefore must be greater than validAfter');\n }\n if (params.validBefore - params.validAfter > 300n) {\n throw new Error(\n `Authorization window ${params.validBefore - params.validAfter}s exceeds MAX_AUTH_VALIDITY (300s)`\n );\n }\n\n return walletClient.signTypedData({\n account,\n domain: getEIP3009Domain(params.tokenName, params.tokenVersion, params.chainId, params.verifyingContract),\n types: EIP3009_TYPES,\n primaryType: 'ReceiveWithAuthorization',\n message: {\n from: params.from,\n to: params.to,\n value: params.value,\n validAfter: params.validAfter,\n validBefore: params.validBefore,\n nonce: params.nonce,\n },\n });\n}\n\n/**\n * Sign a CancelAuthorization for GTokenAuthorization (EIP-3009).\n * Must be signed by the original `authorizer` address.\n */\nexport async function signCancelAuthorization(\n walletClient: WalletClient,\n params: {\n authorizer: Address;\n nonce: Hex;\n tokenName: string;\n tokenVersion: string;\n chainId: number;\n verifyingContract: Address;\n }\n): Promise<Hex> {\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n if (account.address.toLowerCase() !== params.authorizer.toLowerCase()) {\n throw new Error(`Signer ${account.address} does not match authorizer ${params.authorizer}`);\n }\n\n return walletClient.signTypedData({\n account,\n domain: getEIP3009Domain(params.tokenName, params.tokenVersion, params.chainId, params.verifyingContract),\n types: EIP3009_TYPES,\n primaryType: 'CancelAuthorization',\n message: {\n authorizer: params.authorizer,\n nonce: params.nonce,\n },\n });\n}\n","import type { PaymentRequired, PaymentPayload, SettleResponse } from './types.js';\n\n// ============================================================\n// x402 v2 HTTP Header Names\n// Ref: github.com/coinbase/x402/blob/main/specs/x402-specification-v2.md\n// ============================================================\n\n/** v2 header names (standard) */\nexport const HEADER_PAYMENT_REQUIRED = 'PAYMENT-REQUIRED';\nexport const HEADER_PAYMENT_SIGNATURE = 'PAYMENT-SIGNATURE';\nexport const HEADER_PAYMENT_RESPONSE = 'PAYMENT-RESPONSE';\n\n/** v1 header names (backward compat) */\nexport const HEADER_V1_PAYMENT = 'X-PAYMENT';\nexport const HEADER_V1_PAYMENT_RESPONSE = 'X-PAYMENT-RESPONSE';\n\n// ============================================================\n// Encoding / Decoding (Base64 JSON — per x402 spec)\n// ============================================================\n\nfunction toBase64(data: unknown): string {\n const json = JSON.stringify(data);\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(json).toString('base64');\n }\n return btoa(json);\n}\n\nfunction fromBase64<T>(encoded: string): T {\n let json: string;\n if (typeof Buffer !== 'undefined') {\n json = Buffer.from(encoded, 'base64').toString('utf-8');\n } else {\n json = atob(encoded);\n }\n return JSON.parse(json) as T;\n}\n\n// --- PaymentRequired (402 response) ---\n\nexport function encodePaymentRequired(req: PaymentRequired): string {\n return toBase64(req);\n}\n\nexport function decodePaymentRequired(encoded: string): PaymentRequired {\n return fromBase64<PaymentRequired>(encoded);\n}\n\n// --- PaymentPayload (client → server) ---\n\nexport function encodePaymentPayload(payload: PaymentPayload): string {\n return toBase64(payload);\n}\n\nexport function decodePaymentPayload(encoded: string): PaymentPayload {\n return fromBase64<PaymentPayload>(encoded);\n}\n\n// --- SettleResponse (server → client) ---\n\nexport function encodeSettleResponse(resp: SettleResponse): string {\n return toBase64(resp);\n}\n\nexport function decodeSettleResponse(encoded: string): SettleResponse {\n return fromBase64<SettleResponse>(encoded);\n}\n\n// ============================================================\n// Header Extraction Helpers\n// ============================================================\n\n/**\n * Extract PaymentRequired from a 402 Response.\n * Tries v2 header first, falls back to v1.\n */\nexport function extractPaymentRequired(response: Response): PaymentRequired | null {\n const v2 = response.headers.get(HEADER_PAYMENT_REQUIRED);\n if (v2) return decodePaymentRequired(v2);\n\n // v1 fallback: check body or X-PAYMENT-REQUIRED\n const v1 = response.headers.get('X-PAYMENT-REQUIRED');\n if (v1) return decodePaymentRequired(v1);\n\n return null;\n}\n\n/**\n * Extract SettleResponse from a successful response.\n */\nexport function extractSettleResponse(response: Response): SettleResponse | null {\n const v2 = response.headers.get(HEADER_PAYMENT_RESPONSE);\n if (v2) return decodeSettleResponse(v2);\n\n const v1 = response.headers.get(HEADER_V1_PAYMENT_RESPONSE);\n if (v1) return decodeSettleResponse(v1);\n\n return null;\n}\n","import type {\n PaymentPayload,\n PaymentRequirements,\n VerifyResponse,\n SettleResponse,\n FacilitatorSupported,\n FacilitatorConfig,\n} from './types.js';\n\n/**\n * HTTP Facilitator Client — standard x402 v2 facilitator API.\n * Compatible with Coinbase hosted facilitator and self-hosted instances.\n *\n * Ref: coinbase/x402 HTTPFacilitatorClient pattern\n */\nexport class FacilitatorClient {\n private readonly url: string;\n private readonly createAuthHeaders: FacilitatorConfig['createAuthHeaders'];\n\n constructor(config: FacilitatorConfig) {\n this.url = config.url.replace(/\\/$/, '');\n this.createAuthHeaders = config.createAuthHeaders;\n }\n\n private async getHeaders(endpoint: 'verify' | 'settle' | 'supported'): Promise<Record<string, string>> {\n const base: Record<string, string> = { 'Content-Type': 'application/json' };\n if (!this.createAuthHeaders) return base;\n const auth = await this.createAuthHeaders();\n return { ...base, ...auth[endpoint] };\n }\n\n /**\n * POST /verify — validate payment signature off-chain (~100ms).\n */\n async verify(\n paymentPayload: PaymentPayload,\n paymentRequirements: PaymentRequirements,\n ): Promise<VerifyResponse> {\n const resp = await fetch(`${this.url}/verify`, {\n method: 'POST',\n headers: await this.getHeaders('verify'),\n body: JSON.stringify({\n x402Version: 2,\n paymentPayload,\n paymentRequirements,\n }),\n });\n if (!resp.ok) {\n throw new Error(`Facilitator /verify failed: ${resp.status} ${await resp.text()}`);\n }\n return resp.json() as Promise<VerifyResponse>;\n }\n\n /**\n * POST /settle — execute on-chain settlement (~2s on Base).\n */\n async settle(\n paymentPayload: PaymentPayload,\n paymentRequirements: PaymentRequirements,\n ): Promise<SettleResponse> {\n const resp = await fetch(`${this.url}/settle`, {\n method: 'POST',\n headers: await this.getHeaders('settle'),\n body: JSON.stringify({\n x402Version: 2,\n paymentPayload,\n paymentRequirements,\n }),\n });\n if (!resp.ok) {\n throw new Error(`Facilitator /settle failed: ${resp.status} ${await resp.text()}`);\n }\n return resp.json() as Promise<SettleResponse>;\n }\n\n /**\n * GET /supported — query facilitator capabilities.\n */\n async supported(): Promise<FacilitatorSupported> {\n const resp = await fetch(`${this.url}/supported`, {\n method: 'GET',\n headers: await this.getHeaders('supported'),\n });\n if (!resp.ok) {\n throw new Error(`Facilitator /supported failed: ${resp.status} ${await resp.text()}`);\n }\n return resp.json() as Promise<FacilitatorSupported>;\n }\n}\n","import { type Address, type Hex, type Hash, type PublicClient, type WalletClient } from 'viem';\nimport { x402Actions } from '@aastar/core';\nimport type {\n X402PaymentParams, PaymentRequired, PaymentPayload,\n PaymentRequirements, SettleResponse, FacilitatorConfig,\n} from './types.js';\nimport { signTransferWithAuthorization, generateNonce } from './eip3009.js';\nimport {\n encodePaymentPayload,\n extractPaymentRequired,\n extractSettleResponse,\n HEADER_PAYMENT_SIGNATURE,\n} from './payment-header.js';\nimport { FacilitatorClient } from './facilitator.js';\n\n// ============================================================\n// x402 Client — aligned with @x402/fetch + @x402/core patterns\n// Ref: coinbase/x402, Cloudflare Workers x402, MPP mppx\n// ============================================================\n\nexport type X402ClientConfig = {\n publicClient: PublicClient;\n walletClient: WalletClient;\n superPaymasterAddress: Address;\n chainId: number;\n /** Facilitator endpoint (default: self-facilitated via SuperPaymaster) */\n facilitator?: FacilitatorConfig;\n /** EIP-712 domain for asset token (defaults: USDC / version \"2\") */\n tokenName?: string;\n tokenVersion?: string;\n /** Payment policy: max amount per request (in atomic units) */\n maxAmountPerRequest?: bigint;\n};\n\n/** CAIP-2 network identifier from chainId */\nfunction toNetworkId(chainId: number): `eip155:${number}` {\n return `eip155:${chainId}`;\n}\n\nexport class X402Client {\n private readonly actions;\n private readonly config: X402ClientConfig;\n private readonly facilitatorClient?: FacilitatorClient;\n\n constructor(config: X402ClientConfig) {\n if (!config.walletClient.account) {\n throw new Error('WalletClient must have an account configured');\n }\n this.config = config;\n // walletClient supports both readContract and writeContract — single instance suffices\n this.actions = x402Actions(config.superPaymasterAddress)(config.walletClient);\n if (config.facilitator) {\n this.facilitatorClient = new FacilitatorClient(config.facilitator);\n }\n }\n\n /**\n * Create a signed payment payload (EIP-3009 TransferWithAuthorization).\n * Returns a base64-encoded PaymentPayload ready for PAYMENT-SIGNATURE header.\n */\n async createPayment(params: X402PaymentParams): Promise<{\n payload: PaymentPayload;\n encoded: string;\n nonce: Hex;\n }> {\n const nonce = params.nonce || generateNonce();\n const now = BigInt(Math.floor(Date.now() / 1000));\n const validAfter = params.validAfter ?? (now - 600n); // 10 min grace (per x402 spec)\n const validBefore = params.validBefore ?? (now + 3600n);\n const tokenName = this.config.tokenName || 'USDC';\n const tokenVersion = this.config.tokenVersion || '2';\n\n const signature = await signTransferWithAuthorization(this.config.walletClient, {\n from: params.from,\n to: params.to,\n value: params.amount,\n validAfter,\n validBefore,\n nonce,\n tokenName,\n tokenVersion,\n chainId: this.config.chainId,\n verifyingContract: params.asset,\n });\n\n const payload: PaymentPayload = {\n x402Version: 2,\n accepted: {\n scheme: 'exact',\n network: toNetworkId(this.config.chainId),\n asset: params.asset,\n amount: params.amount.toString(),\n payTo: params.to,\n maxTimeoutSeconds: 3600,\n extra: { name: tokenName, version: tokenVersion },\n },\n payload: {\n signature,\n authorization: {\n from: params.from,\n to: params.to,\n value: params.amount.toString(),\n validAfter: validAfter.toString(),\n validBefore: validBefore.toString(),\n nonce,\n },\n },\n };\n\n return {\n payload,\n encoded: encodePaymentPayload(payload),\n nonce,\n };\n }\n\n /**\n * Settle payment on-chain via SuperPaymaster (self-facilitated).\n * Uses EIP-3009 transferWithAuthorization path.\n */\n async settleOnChain(params: {\n from: Address; to: Address; asset: Address; amount: bigint;\n validAfter: bigint; validBefore: bigint; nonce: Hex; signature: Hex;\n }): Promise<Hex> {\n return this.actions.settleX402Payment({\n ...params,\n account: this.config.walletClient.account!,\n });\n }\n\n /**\n * Settle payment on-chain via direct transfer (for xPNTs and pre-approved tokens).\n */\n async settleDirectOnChain(params: {\n from: Address; to: Address; asset: Address; amount: bigint; nonce: Hex;\n }): Promise<Hex> {\n return this.actions.settleX402PaymentDirect({\n ...params,\n account: this.config.walletClient.account!,\n });\n }\n\n /**\n * Get facilitator fee quote from on-chain contract.\n */\n async getQuote(): Promise<{ feeBPS: bigint }> {\n const feeBPS = await this.actions.facilitatorFeeBPS();\n return { feeBPS };\n }\n\n /**\n * Check if a nonce has been used.\n */\n async checkNonce(nonce: Hex): Promise<boolean> {\n return this.actions.x402SettlementNonces({ nonce });\n }\n\n /**\n * Settle via external facilitator (Coinbase, self-hosted, etc.).\n * Requires facilitator config in constructor.\n */\n async settleViaFacilitator(payload: PaymentPayload, requirements: PaymentRequirements): Promise<SettleResponse> {\n if (!this.facilitatorClient) {\n throw new Error('No facilitator configured. Pass facilitator config to X402Client constructor.');\n }\n return this.facilitatorClient.settle(payload, requirements);\n }\n\n /**\n * x402-aware fetch wrapper.\n * Automatically handles 402 → sign → retry flow per x402 v2 spec.\n *\n * Pattern from: @x402/fetch wrapFetchWithPayment\n *\n * Flow:\n * 1. Make initial request\n * 2. If 402, extract PaymentRequired from PAYMENT-REQUIRED header\n * 3. Select best payment option (applies policy: max amount check)\n * 4. Sign EIP-3009 authorization\n * 5. Retry with PAYMENT-SIGNATURE header\n */\n async x402Fetch(url: string, init?: RequestInit): Promise<Response> {\n const firstResponse = await fetch(url, init);\n\n if (firstResponse.status !== 402) {\n return firstResponse;\n }\n\n // Step 2: Extract payment requirements\n // TODO: some server implementations put PaymentRequired in the response body instead of headers\n const paymentRequired = extractPaymentRequired(firstResponse);\n if (!paymentRequired || !paymentRequired.accepts?.length) {\n throw new Error('402 response missing PAYMENT-REQUIRED header or empty accepts');\n }\n\n // Step 3: Select payment option (filter by network + policy)\n const myNetwork = toNetworkId(this.config.chainId);\n let selected = paymentRequired.accepts.find(\n (a) => a.network === myNetwork && a.scheme === 'exact'\n );\n if (!selected) {\n // Fallback: any EVM option\n selected = paymentRequired.accepts.find((a) => a.network.startsWith('eip155:'));\n }\n if (!selected) {\n throw new Error(`No compatible payment option for network ${myNetwork}`);\n }\n\n // Policy check: max amount\n if (this.config.maxAmountPerRequest && BigInt(selected.amount) > this.config.maxAmountPerRequest) {\n throw new Error(\n `Payment amount ${selected.amount} exceeds max ${this.config.maxAmountPerRequest}`\n );\n }\n\n const account = this.config.walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account for automatic payment');\n }\n\n // Step 4: Sign\n const { encoded } = await this.createPayment({\n from: account.address,\n to: selected.payTo,\n asset: selected.asset as Address,\n amount: BigInt(selected.amount),\n });\n\n // Step 5: Retry with payment signature\n const retryHeaders = new Headers(init?.headers);\n retryHeaders.set(HEADER_PAYMENT_SIGNATURE, encoded);\n\n return fetch(url, { ...init, headers: retryHeaders });\n }\n}\n"]}
@@ -191,6 +191,31 @@ var CANONICAL_ADDRESSES = {
191
191
  pnts: "0x0000000000000000000000000000000000000000"
192
192
  }
193
193
  };
194
+ var LAUNCH_SALE_ADDRESSES = {
195
+ // --- Sepolia (Chain ID: 11155111) ---
196
+ // Path-A reconciliation (2026-06-21): the sale stack was REDEPLOYED bound to the
197
+ // core-canonical SuperPaymaster GToken (0x20a051…) / aPNTs (0x9e66B…) and the
198
+ // inventory funded from the deployer, replacing the earlier test-token-bound
199
+ // deployment. `getPayoutToken()` now resolves on-chain to the canonical tokens.
200
+ 11155111: {
201
+ saleGToken: "0x29eE47dEBD0E60d426352415749b4899057D913F",
202
+ // SaleContractV2 → canonical GToken
203
+ saleAPNTs: "0x136654d4141d151e9C237af65E98c03e22afc142",
204
+ // APNTsSaleContract → canonical aPNTs
205
+ buyHelper: "0x0EA2AEd239574F4e875Ae570C67825da845E7e66",
206
+ // BuyHelper → canonical tokens + new sales
207
+ usdc: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
208
+ usdt: "0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0",
209
+ // Aave Sepolia USDT (6-dec)
210
+ relayerUrl: "https://mycelium-relayer.jhfnetboy.workers.dev"
211
+ }
212
+ // --- op-mainnet / ethereum-mainnet: reserved for the path-A reconciliation deploy ---
213
+ // When launch deploys to mainnet, redeploy the sale stack bound to the core-canonical
214
+ // SuperPaymaster GToken/aPNTs, then fill the new sale + BuyHelper addresses here.
215
+ };
216
+ function getLaunchSaleAddresses(chainId2) {
217
+ return LAUNCH_SALE_ADDRESSES[chainId2];
218
+ }
194
219
  function listSupportedChainIds() {
195
220
  return Object.keys(CANONICAL_ADDRESSES).map(Number);
196
221
  }
@@ -376,6 +401,7 @@ exports.DEFAULT_TOKEN_SYMBOL = DEFAULT_TOKEN_SYMBOL;
376
401
  exports.DEFAULT_USDT_MINT_AMOUNT = DEFAULT_USDT_MINT_AMOUNT;
377
402
  exports.DEFAULT_VERIFICATION_GAS_LIMIT = DEFAULT_VERIFICATION_GAS_LIMIT;
378
403
  exports.FAUCET_API_URL = FAUCET_API_URL;
404
+ exports.LAUNCH_SALE_ADDRESSES = LAUNCH_SALE_ADDRESSES;
379
405
  exports.MAX_SERVICE_FEE = MAX_SERVICE_FEE;
380
406
  exports.MONITORING_ADDRESSES = MONITORING_ADDRESSES;
381
407
  exports.NODE_STAKE_AMOUNTS = NODE_STAKE_AMOUNTS;
@@ -390,7 +416,8 @@ exports.TOKEN_ADDRESSES = TOKEN_ADDRESSES;
390
416
  exports.applyConfig = applyConfig;
391
417
  exports.describeSupportedChains = describeSupportedChains;
392
418
  exports.getCanonicalAddresses = getCanonicalAddresses;
419
+ exports.getLaunchSaleAddresses = getLaunchSaleAddresses;
393
420
  exports.isSupportedChainId = isSupportedChainId;
394
421
  exports.listSupportedChainIds = listSupportedChainIds;
395
- //# sourceMappingURL=chunk-MXJEULSE.cjs.map
396
- //# sourceMappingURL=chunk-MXJEULSE.cjs.map
422
+ //# sourceMappingURL=chunk-G33MXEHU.cjs.map
423
+ //# sourceMappingURL=chunk-G33MXEHU.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../core/src/addresses.ts","../../core/src/constants.ts","../../core/src/contract-addresses.ts"],"names":["chainId","optimism","sepolia","optimismSepolia","CONTRACT_SRC_HASH","REGISTRY_ADDRESS","GTOKEN_ADDRESS","GTOKEN_STAKING_ADDRESS","SBT_ADDRESS","REPUTATION_SYSTEM_ADDRESS","SUPER_PAYMASTER_ADDRESS","PAYMASTER_FACTORY_ADDRESS","PAYMASTER_V4_ADDRESS","PAYMASTER_V4_IMPL_ADDRESS","XPNTS_FACTORY_ADDRESS","BLS_AGGREGATOR_ADDRESS","BLS_VALIDATOR_ADDRESS","DVT_VALIDATOR_ADDRESS","ENTRY_POINT_ADDRESS","APNTS_ADDRESS","MICRO_PAYMENT_CHANNEL_ADDRESS","AGENT_IDENTITY_REGISTRY_ADDRESS","AGENT_REPUTATION_REGISTRY_ADDRESS"],"mappings":"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","file":"chunk-G33MXEHU.cjs","sourcesContent":["/**\n * Canonical Contract Addresses for Supported Networks\n * These are hardcoded as defaults for NPM distribution.\n *\n * SINGLE SOURCE OF TRUTH for SDK contract addresses (Beta3.1 P2.8).\n * The root `config.{network}.json` files are dev/deploy-time overrides and MUST\n * agree with this table for any network that has a chainId entry here. The\n * `scripts/check-address-consistency.ts` drift check (CI: `pnpm run check:addresses`)\n * enforces that. NOTE: `@aastar/shared-config` is a separate external repo (vendored\n * as git submodules under ext/ and lib/), NOT a workspace package and NOT the SDK's\n * source of truth — do not treat it as canonical here.\n */\n\nimport type { Address } from 'viem';\nimport { optimism, sepolia, optimismSepolia } from 'viem/chains';\n\nexport const CANONICAL_ADDRESSES = {\n // --- Optimism (Chain ID: 10) ---\n 10: {\n registry: \"0x997686219F31405503D32728B1f094F115EF24e7\",\n gToken: \"0x8d6Fe002dDacCcFBD377F684EC1825f2E1ab7ef6\",\n staking: \"0x7A1216C2d814D2389698C64eD23AA1aA9Eb6343E\",\n sbt: \"0x28eBFc5fc03B1d7648254AbF1C7B39DbFdef1a94\",\n reputationSystem: \"0xA9560898dC0eE4F9Ed3F1db17dbf74dE65e925c2\",\n superPaymaster: \"0xA2c9A6e95f19f5D2a364CBCbB5f0b32B1B4d140E\",\n paymasterFactory: \"0x58A7F6E44a57028A255794119F8b37124c9a7eB8\",\n paymasterV4: \"0x67a70a578E142b950987081e7016906ae4F56Df4\", // AAStar Community PM (Jason)\n paymasterV4Impl: \"0xc4dd13F7825409EEC13FBCBdD9D8f6d618207cca\",\n xPNTsFactory: \"0x864971a26384d9DCC7115f0bBC428e2623F28b6e\",\n blsAggregator: \"0x1C305372ecc5a36CBef1FA371392234bCD55eB19\",\n blsValidator: \"0xA88ADec5A8dc422B57488272d5aD5913d728942A\",\n dvtValidator: \"0x31Ede6454a56293f7cf2323CA5d5F9a6230558Fb\",\n entryPoint: \"0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\n aPNTs: \"0x0B41C78081B5A141eb4C3C7E7FD8E58A7Bde553B\",\n priceFeed: \"0x13e3Ee699D1909E989722E753853AE30b17e08c5\",\n simpleAccountFactory: \"0x91E60e0613810449d098b0b5Ec8b51A0FE8c8985\",\n microPaymentChannel: \"0x0000000000000000000000000000000000000000\",\n agentIdentityRegistry: \"0x0000000000000000000000000000000000000000\",\n agentReputationRegistry: \"0x0000000000000000000000000000000000000000\",\n // ERC-8004 agent validation registry (SP v5.4) — not yet deployed on this chain.\n agentValidationRegistry: \"0x0000000000000000000000000000000000000000\",\n // --- AirAccount v0.17.2-beta.2 stack (not yet deployed on this chain) ---\n aaStarBLSAlgorithm: \"0x0000000000000000000000000000000000000000\",\n aaStarValidator: \"0x0000000000000000000000000000000000000000\",\n aaStarBLSAggregator: \"0x0000000000000000000000000000000000000000\",\n sessionKeyValidator: \"0x0000000000000000000000000000000000000000\",\n forceExitModule: \"0x0000000000000000000000000000000000000000\",\n airAccountDelegate: \"0x0000000000000000000000000000000000000000\",\n calldataParserRegistry: \"0x0000000000000000000000000000000000000000\",\n airAccountFactoryV7: \"0x0000000000000000000000000000000000000000\",\n airAccountV7Impl: \"0x0000000000000000000000000000000000000000\",\n airAccountExtension: \"0x0000000000000000000000000000000000000000\",\n agentRegistry: \"0x0000000000000000000000000000000000000000\",\n // SP v5.4 PolicyRegistry (DVT layer-1) — not yet deployed on this chain.\n policyRegistry: \"0x0000000000000000000000000000000000000000\",\n // SP v5.4 x402 settlement facilitator — not yet deployed on this chain.\n x402Facilitator: \"0x0000000000000000000000000000000000000000\",\n // SP v5.4 governance TimelockController — not yet deployed on this chain.\n timelockController: \"0x0000000000000000000000000000000000000000\",\n // Mycelium community PNTs token — Sepolia-only testbed; zero on mainnets.\n // Kept here so the inferred CanonicalAddresses union has `pnts` on every\n // chain (consumers see Address, not Address|undefined per-chain).\n pnts: \"0x0000000000000000000000000000000000000000\",\n },\n\n // --- Sepolia (Chain ID: 11155111) ---\n // Source of truth: SuperPaymaster repo `deployments/config.sepolia.json`\n // AirAccount repo docs/e2e/E2E_TESTDATA_v0.18.0-beta.2.md\n // Latest sync: 2026-06-20 — AirAccount contracts v0.20.0 (P-256/WebAuthn guardian + recovery\n // relocated to AirAccountExtension; FULL Sepolia redeploy, docs/DEPLOYMENT-v0.20.0.md).\n // SuperPaymaster remains v5.4.0-beta.1-redeploy (deployments/config.sepolia.json 2026-06-16).\n // SP proxy 0x0300... (impl 0x24a945...), Registry 0x3F92... (impl 0x177033...)\n // v5.4 keys: x402Facilitator 0x326Fc3..., policyRegistry 0x8c2488..., timelockController 0xB734df...\n // AirAccount v0.20.0 factory 0x99C9300d... (NEW ctor: impl injected as arg 1).\n // NOTE: #60 syncs the v0.18 read-layer + addresses ONLY; v0.18 runtime-signing\n // behavioral changes (BLS packer / #45 hash_to_curve binding) are a separate follow-up.\n // NOTE: `paymasterV4` below is a per-community AOA proxy (not in core config);\n // verify against the community's own deployment before use.\n 11155111: {\n registry: \"0x3F920B25f8b65988359C372F66F036E48adFc556\",\n gToken: \"0x20a051502a7AE6e40cfFd6EBe59057538E698984\",\n staking: \"0x3B363598746Ea57314d4869B160940948c569D48\",\n sbt: \"0x072A0D12f4212B6baD7c6d0A633eaffbDE9105bF\",\n reputationSystem: \"0x7fEd690E1663755e24a1C9d6164336809d68a578\",\n superPaymaster: \"0x030025f40d509b1a99547bAEb3795bD27F7182b7\", // proxy (impl 0x24a94572...; 2026-06-16 redeploy)\n paymasterFactory: \"0x0Aa06EA5295eeD4D48c93c594Db1CBf3626971A5\",\n paymasterV4: \"0x1f0D4eF151a79948070D387BaC43b1321F0c41e3\", // Anni's V4 proxy — NOT in core config, verify separately\n paymasterV4Impl: \"0x59DCA5861aaDA602fE1BFbfcc36DFAc36C58623d\",\n xPNTsFactory: \"0xCec3655525a112882E74Fb7C26AcB267a07724cb\", // 2026-06-16 redeploy (was 0xc312...)\n blsAggregator: \"0x15387e161c1b3dAe7c66Fbd5c1F32837B58B2e79\", // SP BLSAggregator 2026-06-16 redeploy (was 0x7ec7...)\n blsValidator: \"0x0A71C5a32b8CBC517523D2C88b539Ab22AeF0654\", // deprecated; aggregator verifies BLS inline\n dvtValidator: \"0x19BA9829C784E4A41b68960b9c0bA55f83718997\",\n entryPoint: \"0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\n aPNTs: \"0x9e66B457E0ABb1F139FD8A596d00f784eBA2873b\", // AAStar aPNTs (deployer operator)\n priceFeed: \"0x694AA1769357215DE4FAC081bf1f309aDC325306\", // Sepolia Chainlink ETH/USD\n simpleAccountFactory: \"0x91E60e0613810449d098b0b5Ec8b51A0FE8c8985\",\n microPaymentChannel: \"0x405851A141Cde827E33247d4D4089Af2814c2FF5\", // SP v5.4 2026-06-16 redeploy (was 0xfCC9...)\n agentIdentityRegistry: \"0x8004A818BFB912233c491871b3d84c89A494BD9e\", // ERC-8004 vanity addr (beta.3)\n agentReputationRegistry: \"0x8004B663056A597Dffe9eCcC1965A193B7388713\",\n // ERC-8004 agent validation registry (SP v5.4) — present in SP config.\n agentValidationRegistry: \"0x8004Cb1BF31DAf7788923b405b754f57acEB4272\",\n // --- AirAccount v0.20.0 stack (FULL Sepolia redeploy 2026-06-20) ---\n // v0.20.0 ships first-class P-256/WebAuthn guardian support (#119) and a diamond-lite\n // refactor that relocates the cold ECDSA recovery path (propose/approve/execute/cancel)\n // into AirAccountExtension, reached via the V7 fallback→delegatecall boundary (frees the\n // main-account runtime from 11 B → 1,258 B under EIP-170). The version bump\n // (ACCOUNT_VERSION/FACTORY_VERSION → \"0.20.0\") changes bytecode and therefore redeployed\n // the ENTIRE stack to fresh addresses — all 11 below moved; the v0.19.0-beta.2 addresses\n // are now stale. The recovery event topic0 (RecoveryProposed/Approved/CancelVoted) also\n // changed (trailing uint8 guardianIdx). P-256 guardian feature is Batch 2 (SDK stubbed).\n // Source of truth: AirAccount repo docs/DEPLOYMENT-v0.20.0.md \"Core addresses\"\n // (Sepolia 2026-06-20). NOTE: factory ctor is NEW — impl injected as arg 1.\n aaStarBLSAlgorithm: \"0xAF525A161CB17e0A1b6254ef0B8d8473bdA05174\", // v0.20.0 (algId 0x01)\n aaStarValidator: \"0xfcDfd17a373E037c3F9C8ffE2c781915E7Ae6e11\", // v0.20.0 (ValidatorRouter, set-once validator)\n aaStarBLSAggregator: \"0x35775df9a4f4dB42Ea0C46118a12dDd0cEc70609\", // v0.20.0\n sessionKeyValidator: \"0x6810CfB7c72D16e044a17694fAa8076e517264D0\", // v0.20.0 (algId 0x08)\n forceExitModule: \"0x3fDe77868b74a7979A40a2293a1CD265fbe66EEc\", // v0.20.0\n airAccountDelegate: \"0xd2735E54C5f5f2BF523b8a9ddd0E183624c3f2c0\", // v0.20.0\n calldataParserRegistry: \"0x7dEea4544446826601014bD94d0F6432A67496F5\", // v0.20.0\n airAccountFactoryV7: \"0x99C9300d52EDD9f4B7135DEd1811fBa6FFa1DDC6\", // v0.20.0 (NEW ctor: implementation injected as arg 1)\n airAccountV7Impl: \"0xd51db7eB20FF99c8588281CBe1785681Bb17D473\", // v0.20.0\n airAccountExtension: \"0x5529f50811814E0a4966cFC21200DCeF9C3FCb5B\", // v0.20.0 (auto-deployed by impl ctor; recovery + P-256 guardian surface)\n agentRegistry: \"0xbcE1163817EEBA2E07d39424427B10937bF1D121\", // v0.20.0 (bindFactory set-once)\n // SP v5.4 PolicyRegistry (DVT layer-1), deployed on Sepolia.\n // Source of truth: SuperPaymaster repo deployments/config.sepolia.json (v5.4.0-beta.1).\n policyRegistry: \"0x8c2488d46d5447418558c38AA6441720df656094\",\n // SP v5.4 x402 settlement facilitator (verify/settle EIP-3009 + direct xPNTs).\n x402Facilitator: \"0x326Fc3413c8A0185b0179B971C69813B6dFD971B\",\n // SP v5.4 governance TimelockController (2-day minDelay; gates PolicyRegistry loosen/unfreeze).\n timelockController: \"0xB734df3c0A1809bc06708512363D368Ac51dF1A2\",\n // Base PNTs token — authoritative value from the SuperPaymaster Sepolia\n // deployment (deployments/config.sepolia.json) and config.sepolia.json here.\n // Was 0x6A230Fa25b9Ec12eeF8eeb8d2FbE32CF29c6edC6 (\"Anni's xPNTsToken\"), which\n // drifted from the live deployment; realigned per \"Sepolia deployment is the\n // source of truth\". A community-specific xPNTs belongs under its own key, not\n // the canonical base `pnts`.\n pnts: \"0xC687f8a115D308ECD39658a8EE33bC3c8F75EE31\",\n },\n\n // --- OP Sepolia (Chain ID: 11155420) ---\n 11155420: {\n registry: \"0xcf6860Ab57de8669756997e414D9c52B6e301972\",\n gToken: \"0xC341c88453372021d0221834307613c2e99fE718\",\n staking: \"0x5f57B931C849e8E255F22755506eB2255aB22a7C\",\n sbt: \"0x2c3Ca1553dC1B8870381E8E56C7b3e3A3ae162f0\",\n reputationSystem: \"0x891EC0f84D9275839B8dAf74e87B23F2DBd7f9c9\",\n superPaymaster: \"0x9eC1FE8134A1C05aD34ba2E4e8758dAe0a009B94\",\n paymasterFactory: \"0x1e3b9d12eAc27867a523d0537902441B0E7D98d8\",\n paymasterV4: \"0xf250416C940605a1D423ccd059668219cf7D80ea\",\n paymasterV4Impl: \"0x906123080207F250B1C9F299991512Cb31f35b2f\",\n xPNTsFactory: \"0x7792a49C9E91e0E9B631B27D885d15e971B7482A\",\n blsAggregator: \"0x6e06b17b1a4D2D973F7E3e026e24b4393315736c\",\n blsValidator: \"0x260fa905CcE1f5b29Afe9d627c01fAAE4A66A7F5\",\n dvtValidator: \"0x0087cA806109E150438116cAA414580BB5fa9195\",\n entryPoint: \"0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\n aPNTs: \"0x3BBcA92Ad828b3dD619c980Ba09f929b9d2BC440\",\n priceFeed: \"0x61Ec26aA57019C486B10502285c5A3D4A4750AD7\",\n simpleAccountFactory: \"0x91E6060613810449d098b0b5EC8b51A0fe8C8985\",\n microPaymentChannel: \"0x0000000000000000000000000000000000000000\",\n agentIdentityRegistry: \"0x0000000000000000000000000000000000000000\",\n agentReputationRegistry: \"0x0000000000000000000000000000000000000000\",\n // ERC-8004 agent validation registry (SP v5.4) — not yet deployed on this chain.\n agentValidationRegistry: \"0x0000000000000000000000000000000000000000\",\n // --- AirAccount v0.17.2-beta.2 stack (not yet deployed on this chain) ---\n aaStarBLSAlgorithm: \"0x0000000000000000000000000000000000000000\",\n aaStarValidator: \"0x0000000000000000000000000000000000000000\",\n aaStarBLSAggregator: \"0x0000000000000000000000000000000000000000\",\n sessionKeyValidator: \"0x0000000000000000000000000000000000000000\",\n forceExitModule: \"0x0000000000000000000000000000000000000000\",\n airAccountDelegate: \"0x0000000000000000000000000000000000000000\",\n calldataParserRegistry: \"0x0000000000000000000000000000000000000000\",\n airAccountFactoryV7: \"0x0000000000000000000000000000000000000000\",\n airAccountV7Impl: \"0x0000000000000000000000000000000000000000\",\n airAccountExtension: \"0x0000000000000000000000000000000000000000\",\n agentRegistry: \"0x0000000000000000000000000000000000000000\",\n // SP v5.4 PolicyRegistry (DVT layer-1) — not yet deployed on this chain.\n policyRegistry: \"0x0000000000000000000000000000000000000000\",\n // SP v5.4 x402 settlement facilitator — not yet deployed on this chain.\n x402Facilitator: \"0x0000000000000000000000000000000000000000\",\n // SP v5.4 governance TimelockController — not yet deployed on this chain.\n timelockController: \"0x0000000000000000000000000000000000000000\",\n // Mycelium community PNTs token — Sepolia-only testbed; zero on mainnets.\n pnts: \"0x0000000000000000000000000000000000000000\",\n }\n} as const;\n\nexport type CanonicalAddresses = (typeof CANONICAL_ADDRESSES)[keyof typeof CANONICAL_ADDRESSES];\nexport type SupportedChainId = keyof typeof CANONICAL_ADDRESSES;\n\n/**\n * MushroomDAO launch token-sale stack (aPoints + governance-token sale), keyed by chainId.\n *\n * Kept as a SEPARATE table from {@link CANONICAL_ADDRESSES} on purpose: these are the launch\n * app's own contracts (`MushroomDAO/launch`), not the core SuperPaymaster protocol set, so they\n * stay out of the constants/contract-addresses/drift-check pipeline.\n *\n * De-dup rule: this table stores ONLY the launch-specific contracts (the two sale contracts +\n * BuyHelper) plus the accepted payment stablecoins. It deliberately does NOT store the GToken /\n * aPNTs *payout* token addresses — `TokenSaleClient` reads those on-chain from the sale contract's\n * `gToken()` / `aPNTs()` immutable getters, so there is never a second copy of a token address to\n * drift. (Background: three different GToken deployments currently exist — core canonical\n * `0x20a051…`, the launch live `0x4e6A11…`, and the launch DEPLOYED.md \"SuperPaymaster\" `0xa592ec…`.\n * The live sale is constructor-bound to `0x4e6A11…`; binding it to the core-canonical GToken is the\n * pre-mainnet reconciliation step.)\n */\nexport interface LaunchSaleAddresses {\n /** SaleContractV2 — sells the constructor-bound GToken (governance token). */\n saleGToken: Address;\n /** APNTsSaleContract — sells the constructor-bound aPNTs (aPoints). */\n saleAPNTs: Address;\n /** BuyHelper — gasless entrypoint (EIP-3009 transferWithAuthorization + EIP-712 BuyIntent). */\n buyHelper: Address;\n /** Accepted payment stablecoin: USDC (6-decimal). Also the EIP-3009 token for gasless. */\n usdc: Address;\n /** Accepted payment stablecoin: USDT (6-decimal). Self-pay only. */\n usdt: Address;\n /** Off-chain relayer that submits gasless buys (Cloudflare Worker). */\n relayerUrl: string;\n}\n\nexport const LAUNCH_SALE_ADDRESSES: Record<number, LaunchSaleAddresses> = {\n // --- Sepolia (Chain ID: 11155111) ---\n // Path-A reconciliation (2026-06-21): the sale stack was REDEPLOYED bound to the\n // core-canonical SuperPaymaster GToken (0x20a051…) / aPNTs (0x9e66B…) and the\n // inventory funded from the deployer, replacing the earlier test-token-bound\n // deployment. `getPayoutToken()` now resolves on-chain to the canonical tokens.\n 11155111: {\n saleGToken: \"0x29eE47dEBD0E60d426352415749b4899057D913F\", // SaleContractV2 → canonical GToken\n saleAPNTs: \"0x136654d4141d151e9C237af65E98c03e22afc142\", // APNTsSaleContract → canonical aPNTs\n buyHelper: \"0x0EA2AEd239574F4e875Ae570C67825da845E7e66\", // BuyHelper → canonical tokens + new sales\n usdc: \"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238\",\n usdt: \"0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0\", // Aave Sepolia USDT (6-dec)\n relayerUrl: \"https://mycelium-relayer.jhfnetboy.workers.dev\",\n },\n // --- op-mainnet / ethereum-mainnet: reserved for the path-A reconciliation deploy ---\n // When launch deploys to mainnet, redeploy the sale stack bound to the core-canonical\n // SuperPaymaster GToken/aPNTs, then fill the new sale + BuyHelper addresses here.\n};\n\n/** Resolve the launch token-sale address group for a chain, or `undefined` if none. */\nexport function getLaunchSaleAddresses(chainId: number): LaunchSaleAddresses | undefined {\n return LAUNCH_SALE_ADDRESSES[chainId];\n}\n\n/**\n * Chain IDs that have a canonical address book in {@link CANONICAL_ADDRESSES}.\n *\n * @example\n * ```ts\n * listSupportedChainIds(); // [10, 11155111, 11155420]\n * ```\n */\nexport function listSupportedChainIds(): number[] {\n return Object.keys(CANONICAL_ADDRESSES).map(Number);\n}\n\n/** True if {@link CANONICAL_ADDRESSES} has an entry for `chainId`. */\nexport function isSupportedChainId(chainId: number): chainId is SupportedChainId {\n return Object.prototype.hasOwnProperty.call(CANONICAL_ADDRESSES, chainId);\n}\n\n/**\n * Resolve the canonical contract address book for a chain, keyed by `chainId`,\n * normalized to the key names the role-based client factories expect.\n *\n * The canonical table uses `staking` / `sbt`; the historical client factories\n * (and many consumers) reference `gTokenStaking` / `mySBT`. This helper returns\n * the canonical set plus those aliases so a single object satisfies both, which\n * is what makes `createEndUserClient({ chain })` resolve addresses automatically\n * — no manual `addresses` needed for any supported chain.\n *\n * @param chainId - EVM chain id (e.g. 10 = Optimism, 11155111 = Sepolia).\n * @returns The normalized address record, or `undefined` if the chain has no\n * canonical entry (caller must then pass `addresses` explicitly).\n *\n * @example\n * ```ts\n * import { optimism } from 'viem/chains';\n * const addrs = getCanonicalAddresses(optimism.id); // chainId 10\n * addrs?.registry; addrs?.mySBT; // alias of `sbt`\n * ```\n */\nexport function getCanonicalAddresses(\n chainId: number,\n): (CanonicalAddresses & { gTokenStaking: Address; mySBT: Address }) | undefined {\n if (!isSupportedChainId(chainId)) return undefined;\n const a = CANONICAL_ADDRESSES[chainId];\n return {\n ...a,\n // Aliases bridging the canonical table's key names to the client factories'.\n gTokenStaking: a.staking as Address,\n mySBT: a.sbt as Address,\n };\n}\n\n// Human labels for the supported chains, taken verbatim from viem/chains (`.name`)\n// so the SDK stays in lockstep with viem and never invents its own chain identity.\nconst SUPPORTED_CHAIN_LABELS: Record<number, string> = {\n [optimism.id]: optimism.name,\n [sepolia.id]: sepolia.name,\n [optimismSepolia.id]: optimismSepolia.name,\n};\n\n/**\n * A friendly, human-readable list of the supported chains for error messages —\n * e.g. `\"OP Mainnet (10), Sepolia (11155111), OP Sepolia (11155420)\"`. Names come\n * from viem/chains so callers recognize them by the same label viem uses.\n */\nexport function describeSupportedChains(): string {\n return listSupportedChainIds()\n .map((id) => `${SUPPORTED_CHAIN_LABELS[id] ?? `chainId ${id}`} (${id})`)\n .join(', ');\n}\n","import { CANONICAL_ADDRESSES } from './addresses.js';\n\n// Browser-safe network detection\nconst network = (typeof process !== 'undefined' && process.env && process.env.NETWORK) || 'anvil';\nlet internalConfig: any = {};\n\n// 2. Identify Chain ID and resolve canonical defaults\nlet chainIdStr = (typeof process !== 'undefined' && process.env && process.env.CHAIN_ID) || internalConfig.chainId;\nlet chainId = chainIdStr ? Number(chainIdStr) : (network === 'optimism' ? 10 : (network === 'mainnet' ? 1 : (network === 'sepolia' ? 11155111 : (network === 'op-sepolia' ? 11155420 : 0))));\nlet defaults = (CANONICAL_ADDRESSES as any)[chainId] || {};\n\n/**\n * Helper to resolve address\n */\nfunction resolveAddr(envKey: string, configKey: string): `0x${string}` {\n const envVal = (typeof process !== 'undefined' && process.env) ? process.env[envKey] : undefined;\n return (envVal || internalConfig[configKey] || defaults[configKey]) as `0x${string}`;\n}\n\nfunction resolveVal(envKey: string, configKey: string) {\n const envVal = (typeof process !== 'undefined' && process.env) ? process.env[envKey] : undefined;\n return envVal || internalConfig[configKey] || defaults[configKey];\n}\n\n/**\n * Contract Addresses (Priority: ENV > Local Config > Canonical Defaults)\n */\nexport let CONTRACT_SRC_HASH = resolveVal('SRC_HASH', 'srcHash');\nexport let REGISTRY_ADDRESS = resolveAddr('REGISTRY', 'registry');\nexport let GTOKEN_ADDRESS = resolveAddr('GTOKEN', 'gToken');\nexport let GTOKEN_STAKING_ADDRESS = resolveAddr('STAKING', 'staking');\nexport let SBT_ADDRESS = resolveAddr('SBT', 'sbt');\nexport let REPUTATION_SYSTEM_ADDRESS = resolveAddr('REPUTATION_SYSTEM', 'reputationSystem');\nexport let SUPER_PAYMASTER_ADDRESS = resolveAddr('SUPER_PAYMASTER', 'superPaymaster');\nexport let PAYMASTER_FACTORY_ADDRESS = resolveAddr('PAYMASTER_FACTORY', 'paymasterFactory');\nexport let PAYMASTER_V4_ADDRESS = resolveAddr('PAYMASTER_V4', 'paymasterV4');\nexport let PAYMASTER_V4_IMPL_ADDRESS = resolveAddr('PAYMASTER_V4_IMPL', 'paymasterV4Impl');\nexport let XPNTS_FACTORY_ADDRESS = resolveAddr('XPNTS_FACTORY', 'xPNTsFactory');\nexport let BLS_AGGREGATOR_ADDRESS = resolveAddr('BLS_AGGREGATOR', 'blsAggregator');\nexport let BLS_VALIDATOR_ADDRESS = resolveAddr('BLS_VALIDATOR', 'blsValidator');\nexport let DVT_VALIDATOR_ADDRESS = resolveAddr('DVT_VALIDATOR', 'dvtValidator');\nexport let ENTRY_POINT_ADDRESS = resolveAddr('ENTRY_POINT', 'entryPoint');\nexport let APNTS_ADDRESS = resolveAddr('APNTS', 'aPNTs');\nexport let MICRO_PAYMENT_CHANNEL_ADDRESS = resolveAddr('MICRO_PAYMENT_CHANNEL', 'microPaymentChannel');\nexport let AGENT_IDENTITY_REGISTRY_ADDRESS = resolveAddr('AGENT_IDENTITY_REGISTRY', 'agentIdentityRegistry');\nexport let AGENT_REPUTATION_REGISTRY_ADDRESS = resolveAddr('AGENT_REPUTATION_REGISTRY', 'agentReputationRegistry');\n\n/**\n * Apply external configuration (for Node.js environment)\n */\nexport function applyConfig(newConfig: any) {\n internalConfig = newConfig;\n \n // Re-calculate derived values\n const envChainId = (typeof process !== 'undefined' && process.env) ? process.env.CHAIN_ID : undefined;\n chainIdStr = envChainId || internalConfig.chainId;\n chainId = chainIdStr ? Number(chainIdStr) : (network === 'optimism' ? 10 : (network === 'mainnet' ? 1 : (network === 'sepolia' ? 11155111 : (network === 'op-sepolia' ? 11155420 : 0))));\n defaults = (CANONICAL_ADDRESSES as any)[chainId] || {};\n\n // Re-assign exports\n CONTRACT_SRC_HASH = resolveVal('SRC_HASH', 'srcHash');\n REGISTRY_ADDRESS = resolveAddr('REGISTRY', 'registry');\n GTOKEN_ADDRESS = resolveAddr('GTOKEN', 'gToken');\n GTOKEN_STAKING_ADDRESS = resolveAddr('STAKING', 'staking');\n SBT_ADDRESS = resolveAddr('SBT', 'sbt');\n REPUTATION_SYSTEM_ADDRESS = resolveAddr('REPUTATION_SYSTEM', 'reputationSystem');\n SUPER_PAYMASTER_ADDRESS = resolveAddr('SUPER_PAYMASTER', 'superPaymaster');\n PAYMASTER_FACTORY_ADDRESS = resolveAddr('PAYMASTER_FACTORY', 'paymasterFactory');\n PAYMASTER_V4_ADDRESS = resolveAddr('PAYMASTER_V4', 'paymasterV4');\n PAYMASTER_V4_IMPL_ADDRESS = resolveAddr('PAYMASTER_V4_IMPL', 'paymasterV4Impl');\n XPNTS_FACTORY_ADDRESS = resolveAddr('XPNTS_FACTORY', 'xPNTsFactory');\n BLS_AGGREGATOR_ADDRESS = resolveAddr('BLS_AGGREGATOR', 'blsAggregator');\n BLS_VALIDATOR_ADDRESS = resolveAddr('BLS_VALIDATOR', 'blsValidator');\n DVT_VALIDATOR_ADDRESS = resolveAddr('DVT_VALIDATOR', 'dvtValidator');\n ENTRY_POINT_ADDRESS = resolveAddr('ENTRY_POINT', 'entryPoint');\n APNTS_ADDRESS = resolveAddr('APNTS', 'aPNTs');\n MICRO_PAYMENT_CHANNEL_ADDRESS = resolveAddr('MICRO_PAYMENT_CHANNEL', 'microPaymentChannel');\n AGENT_IDENTITY_REGISTRY_ADDRESS = resolveAddr('AGENT_IDENTITY_REGISTRY', 'agentIdentityRegistry');\n AGENT_REPUTATION_REGISTRY_ADDRESS = resolveAddr('AGENT_REPUTATION_REGISTRY', 'agentReputationRegistry');\n}\n\n/**\n * Common Constants\n */\nexport const FAUCET_API_URL = \"https://faucet-aastar.vercel.app\";\nexport const SERVICE_FEE_RATE = 200;\nexport const MAX_SERVICE_FEE = 1000;\nexport const BPS_DENOMINATOR = 10000;\nexport const DEFAULT_GAS_TOKEN_MINT_AMOUNT = \"100\";\nexport const DEFAULT_USDT_MINT_AMOUNT = \"10\";\nexport const TEST_ACCOUNT_POOL_SIZE = 20;\n\nexport const NODE_STAKE_AMOUNTS = {\n LITE: 30,\n STANDARD: 100,\n SUPER: 300,\n ENTERPRISE: 1000,\n} as const;\n\nexport const DEFAULT_APNTS_PRICE_USD = \"0.02\";\nexport const CHAIN_SEPOLIA = 11155111;\nexport const CHAIN_MAINNET = 1;\nexport const DEFAULT_TOKEN_SYMBOL = 'GT';\nexport const DEFAULT_TOKEN_NAME = 'Governance Token';\nexport const DEFAULT_VERIFICATION_GAS_LIMIT = 200000n;\nexport const DEFAULT_CALL_GAS_LIMIT = 100000n;\nexport const DEFAULT_PRE_VERIFICATION_GAS = 50000n;\nexport const DEFAULT_TIMEOUT_MS = 30000;\n","/**\n * Contract Addresses - Single Source of Truth\n * All contract addresses for Sepolia testnet\n *\n * This file serves as the single source of truth for all contract addresses.\n * All other files reference these constants to avoid duplication.\n */\n\nimport { type Address } from 'viem';\nimport {\n REGISTRY_ADDRESS,\n GTOKEN_ADDRESS,\n GTOKEN_STAKING_ADDRESS,\n SUPER_PAYMASTER_ADDRESS,\n PAYMASTER_FACTORY_ADDRESS,\n PAYMASTER_V4_ADDRESS,\n PAYMASTER_V4_IMPL_ADDRESS,\n APNTS_ADDRESS,\n SBT_ADDRESS,\n DVT_VALIDATOR_ADDRESS,\n ENTRY_POINT_ADDRESS,\n XPNTS_FACTORY_ADDRESS,\n BLS_AGGREGATOR_ADDRESS,\n MICRO_PAYMENT_CHANNEL_ADDRESS,\n AGENT_IDENTITY_REGISTRY_ADDRESS,\n AGENT_REPUTATION_REGISTRY_ADDRESS,\n} from './constants.js';\n\n/**\n * Core System Addresses\n */\nexport const CORE_ADDRESSES = {\n registry: REGISTRY_ADDRESS,\n gToken: GTOKEN_ADDRESS,\n gTokenStaking: GTOKEN_STAKING_ADDRESS,\n superPaymaster: SUPER_PAYMASTER_ADDRESS,\n paymasterFactory: PAYMASTER_FACTORY_ADDRESS,\n aPNTs: APNTS_ADDRESS,\n mySBT: SBT_ADDRESS,\n paymasterV4: (process.env.PAYMASTER_V4_PROXY || PAYMASTER_V4_ADDRESS || PAYMASTER_V4_IMPL_ADDRESS) as Address,\n dvtValidator: DVT_VALIDATOR_ADDRESS,\n entryPoint: ENTRY_POINT_ADDRESS,\n xPNTsFactory: XPNTS_FACTORY_ADDRESS,\n microPaymentChannel: MICRO_PAYMENT_CHANNEL_ADDRESS,\n agentIdentityRegistry: AGENT_IDENTITY_REGISTRY_ADDRESS,\n agentReputationRegistry: AGENT_REPUTATION_REGISTRY_ADDRESS,\n} as const;\n\n/**\n * Token System Addresses\n */\nexport const TOKEN_ADDRESSES = {\n xPNTsFactory: XPNTS_FACTORY_ADDRESS,\n} as const;\n\n/**\n * Test Token Addresses (For Development & Testing)\n */\nexport const TEST_TOKEN_ADDRESSES = {\n mockUSDT: process.env.TEST_MOCK_USDT as Address,\n aPNTs: process.env.TEST_APNTS as Address,\n bPNTs: process.env.TEST_BPNTS as Address,\n} as const;\n\n/**\n * Test Account Addresses (For Development & Testing)\n */\nexport const TEST_ACCOUNT_ADDRESSES = {\n // Official EntryPoint 0.6 Factory for Sepolia\n simpleAccountFactory: (process.env.SIMPLE_ACCOUNT_FACTORY || '0x9406Cc6185a346906296840746125a0E44976454') as Address,\n} as const;\n\n/**\n * Paymaster Addresses\n */\nexport const PAYMASTER_ADDRESSES = {\n paymasterV4_1: process.env.PAYMASTER_V4_ADDRESS as Address,\n paymasterV4_1iImplementation: PAYMASTER_V4_IMPL_ADDRESS,\n} as const;\n\n/**\n * Monitoring System Addresses\n */\nexport const MONITORING_ADDRESSES = {\n dvtValidator: DVT_VALIDATOR_ADDRESS,\n blsAggregator: BLS_AGGREGATOR_ADDRESS,\n} as const;\n\n/**\n * Official Contract Addresses\n */\nexport const OFFICIAL_ADDRESSES = {\n entryPoint: (ENTRY_POINT_ADDRESS || '0x0000000071727De22E5E9d8BAf0edAc6f37da032') as Address,\n} as const;\n\n/**\n * Community Owner Addresses\n */\nexport const COMMUNITY_OWNERS = {\n aastarOwner: '0x411BD567E46C0781248dbB6a9211891C032885e5', // Deployer 1\n breadCommunityOwner: '0xe24b6f321B0140716a2b671ed0D983bb64E7DaFA', // OWNER2\n} as const;\n\n/**\n * Test Community Addresses (Registered in Registry v2.2.0 on 2025-11-08)\n */\nexport const TEST_COMMUNITIES = {\n aastar: process.env.TEST_COMMUNITY_AASTAR as Address,\n bread: process.env.TEST_COMMUNITY_BREAD as Address,\n mycelium: process.env.TEST_COMMUNITY_MYCELIUM as Address,\n} as const;\n\n/**\n * All Addresses Combined (for reference)\n */\nexport const ALL_ADDRESSES = {\n ...CORE_ADDRESSES,\n ...TOKEN_ADDRESSES,\n ...TEST_TOKEN_ADDRESSES,\n ...TEST_ACCOUNT_ADDRESSES,\n ...PAYMASTER_ADDRESSES,\n ...MONITORING_ADDRESSES,\n ...OFFICIAL_ADDRESSES,\n} as const;\n"]}
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkIB3KOSHW_cjs = require('./chunk-IB3KOSHW.cjs');
3
+ var chunkKOWTQJIX_cjs = require('./chunk-KOWTQJIX.cjs');
4
4
 
5
5
  // ../admin/src/ProtocolGovernance.ts
6
- var ProtocolGovernance = class extends chunkIB3KOSHW_cjs.BaseClient {
6
+ var ProtocolGovernance = class extends chunkKOWTQJIX_cjs.BaseClient {
7
7
  registryAddress;
8
8
  entryPointAddress;
9
9
  constructor(config) {
@@ -33,7 +33,7 @@ var ProtocolGovernance = class extends chunkIB3KOSHW_cjs.BaseClient {
33
33
  * Approve a new SuperPaymaster contract address
34
34
  */
35
35
  async setSuperPaymaster(paymaster, options) {
36
- const registry = chunkIB3KOSHW_cjs.registryActions(this.registryAddress);
36
+ const registry = chunkKOWTQJIX_cjs.registryActions(this.registryAddress);
37
37
  return await registry(this.client).setSuperPaymaster({
38
38
  paymaster,
39
39
  account: options?.account
@@ -43,7 +43,7 @@ var ProtocolGovernance = class extends chunkIB3KOSHW_cjs.BaseClient {
43
43
  * Set the Staking contract address
44
44
  */
45
45
  async setStaking(staking, options) {
46
- const registry = chunkIB3KOSHW_cjs.registryActions(this.registryAddress);
46
+ const registry = chunkKOWTQJIX_cjs.registryActions(this.registryAddress);
47
47
  return await registry(this.client).setStaking({
48
48
  staking,
49
49
  account: options?.account
@@ -55,7 +55,7 @@ var ProtocolGovernance = class extends chunkIB3KOSHW_cjs.BaseClient {
55
55
  * and writes back the full struct via configureRole.
56
56
  */
57
57
  async configureRole(params, options) {
58
- const registry = chunkIB3KOSHW_cjs.registryActions(this.registryAddress)(this.client);
58
+ const registry = chunkKOWTQJIX_cjs.registryActions(this.registryAddress)(this.client);
59
59
  const current = await registry.getRoleConfig({ roleId: params.roleId });
60
60
  return await registry.configureRole({
61
61
  roleId: params.roleId,
@@ -77,7 +77,7 @@ var ProtocolGovernance = class extends chunkIB3KOSHW_cjs.BaseClient {
77
77
  * This is the final step of "Protocol Admin" lifecycle.
78
78
  */
79
79
  async transferToDAO(daoAddress, options) {
80
- const registry = chunkIB3KOSHW_cjs.registryActions(this.registryAddress);
80
+ const registry = chunkKOWTQJIX_cjs.registryActions(this.registryAddress);
81
81
  return await registry(this.client).transferOwnership({
82
82
  newOwner: daoAddress,
83
83
  account: options?.account
@@ -87,7 +87,7 @@ var ProtocolGovernance = class extends chunkIB3KOSHW_cjs.BaseClient {
87
87
  // 4. Query Capabilities
88
88
  // ===========================================
89
89
  async getProtocolParams() {
90
- const registry = chunkIB3KOSHW_cjs.registryActions(this.registryAddress)(this.client);
90
+ const registry = chunkKOWTQJIX_cjs.registryActions(this.registryAddress)(this.client);
91
91
  const [sp, staking] = await Promise.all([
92
92
  registry.SUPER_PAYMASTER(),
93
93
  registry.GTOKEN_STAKING()
@@ -104,5 +104,5 @@ var ProtocolGovernance = class extends chunkIB3KOSHW_cjs.BaseClient {
104
104
  };
105
105
 
106
106
  exports.ProtocolGovernance = ProtocolGovernance;
107
- //# sourceMappingURL=chunk-FUY4MHPM.cjs.map
108
- //# sourceMappingURL=chunk-FUY4MHPM.cjs.map
107
+ //# sourceMappingURL=chunk-GASCTLKR.cjs.map
108
+ //# sourceMappingURL=chunk-GASCTLKR.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../admin/src/ProtocolGovernance.ts"],"names":["BaseClient","registryActions"],"mappings":"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","file":"chunk-FUY4MHPM.cjs","sourcesContent":["import { type Address, type Hash, type Hex } from 'viem';\nimport { BaseClient, type ClientConfig, type TransactionOptions } from '@aastar/core';\nimport { registryActions, entryPointActions } from '@aastar/core'; // L2/L1 Actions\n\nexport interface ProtocolParams {\n minStake: bigint;\n treasury: Address;\n entryPoint: Address;\n superPaymaster: Address;\n}\n\n/**\n * ProtocolGovernance - L3 Pattern\n * \n * Responsibilities:\n * 1. Global Protocol Parameter Management (Registry, EntryPoint)\n * 2. High-level Governance Operations (DAO Transfer, Upgrades)\n * 3. SuperPaymaster & Module Approval\n */\nexport class ProtocolGovernance extends BaseClient {\n public registryAddress: Address;\n public entryPointAddress: Address;\n\n constructor(config: ClientConfig & { \n registryAddress: Address; \n entryPointAddress: Address \n }) {\n super(config);\n this.registryAddress = config.registryAddress;\n this.entryPointAddress = config.entryPointAddress;\n }\n\n // ===========================================\n // 1. Global Parameter Management\n // ===========================================\n\n /**\n * Update the Global Treasury Address where protocol fees are collected\n */\n async setTreasury(treasury: Address, options?: TransactionOptions): Promise<Hash> {\n // Note: Registry might not have direct setTreasury if it relies on SuperPaymaster's config.\n // Assuming Registry has ownership pointers or config pointers.\n // If Logic resides in SuperPaymaster, we would use superPaymasterActions.\n // Based on provided ABI/Actions, Registry manages Role Configs mainly.\n // Let's assume we are updating a System Role or similar global config if available,\n // OR adhering to what registryActions provides.\n \n // Checking registryActions... it has 'transferOwnership' but maybe not direct 'setTreasury' depending on version.\n // If strictly following ABI, we might need to update a specific Role Parameter (e.g. AOA/Super config).\n \n throw new Error(\"Method not mapped to RegistryABI v1. Please verify contract capabilities.\");\n }\n\n /**\n * Update the supported EntryPoint address\n */\n async updateEntryPoint(entryPoint: Address, options?: TransactionOptions): Promise<Hash> {\n // Placeholder: Real implementation depends on if Registry stores EntryPoint\n // registryActions typically provides getters. Setters usually restricted to Owner.\n // If action not available, throw standard error.\n throw new Error(\"Method not mapped to RegistryABI v1.\");\n }\n\n // ===========================================\n // 2. Role & Module Governance\n // ===========================================\n\n /**\n * Approve a new SuperPaymaster contract address\n */\n async setSuperPaymaster(paymaster: Address, options?: TransactionOptions): Promise<Hash> {\n const registry = registryActions(this.registryAddress);\n return await registry(this.client).setSuperPaymaster({\n paymaster,\n account: options?.account\n });\n }\n\n /**\n * Set the Staking contract address\n */\n async setStaking(staking: Address, options?: TransactionOptions): Promise<Hash> {\n const registry = registryActions(this.registryAddress);\n return await registry(this.client).setStaking({\n staking,\n account: options?.account\n });\n }\n\n /**\n * Configure a Role's parameters (Admin only).\n * Reads the current on-chain config first, then merges the provided overrides\n * and writes back the full struct via configureRole.\n */\n async configureRole(params: {\n roleId: Hex;\n minStake?: bigint;\n ticketPrice?: bigint;\n exitFeePercent?: bigint;\n minExitFee?: bigint;\n }, options?: TransactionOptions): Promise<Hash> {\n const registry = registryActions(this.registryAddress)(this.client);\n const current = await registry.getRoleConfig({ roleId: params.roleId });\n return await (registry as any).configureRole({\n roleId: params.roleId,\n config: {\n ...current,\n ...(params.minStake !== undefined && { minStake: params.minStake }),\n ...(params.ticketPrice !== undefined && { ticketPrice: params.ticketPrice }),\n ...(params.exitFeePercent !== undefined && { exitFeePercent: params.exitFeePercent }),\n ...(params.minExitFee !== undefined && { minExitFee: params.minExitFee }),\n },\n account: options?.account,\n });\n }\n\n // ===========================================\n // 3. Transfer to DAO (Exit/Upgrade)\n // ===========================================\n\n /**\n * Transfer Protocol Ownership to a DAO (Multisig/Timelock)\n * This is the final step of \"Protocol Admin\" lifecycle.\n */\n async transferToDAO(daoAddress: Address, options?: TransactionOptions): Promise<Hash> {\n const registry = registryActions(this.registryAddress);\n return await registry(this.client).transferOwnership({\n newOwner: daoAddress,\n account: options?.account\n });\n }\n\n // ===========================================\n // 4. Query Capabilities\n // ===========================================\n\n async getProtocolParams(): Promise<ProtocolParams> {\n const registry = registryActions(this.registryAddress)(this.client); // Read-only via Client\n \n // Parallel fetch\n const [sp, staking] = await Promise.all([\n registry.SUPER_PAYMASTER(),\n registry.GTOKEN_STAKING()\n ]);\n\n return {\n minStake: 0n, // Global default not directly exposed, usually per role\n treasury: await registry.owner(), // Approximation for now\n entryPoint: this.entryPointAddress,\n superPaymaster: sp\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../../admin/src/ProtocolGovernance.ts"],"names":["BaseClient","registryActions"],"mappings":"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","file":"chunk-GASCTLKR.cjs","sourcesContent":["import { type Address, type Hash, type Hex } from 'viem';\nimport { BaseClient, type ClientConfig, type TransactionOptions } from '@aastar/core';\nimport { registryActions, entryPointActions } from '@aastar/core'; // L2/L1 Actions\n\nexport interface ProtocolParams {\n minStake: bigint;\n treasury: Address;\n entryPoint: Address;\n superPaymaster: Address;\n}\n\n/**\n * ProtocolGovernance - L3 Pattern\n * \n * Responsibilities:\n * 1. Global Protocol Parameter Management (Registry, EntryPoint)\n * 2. High-level Governance Operations (DAO Transfer, Upgrades)\n * 3. SuperPaymaster & Module Approval\n */\nexport class ProtocolGovernance extends BaseClient {\n public registryAddress: Address;\n public entryPointAddress: Address;\n\n constructor(config: ClientConfig & { \n registryAddress: Address; \n entryPointAddress: Address \n }) {\n super(config);\n this.registryAddress = config.registryAddress;\n this.entryPointAddress = config.entryPointAddress;\n }\n\n // ===========================================\n // 1. Global Parameter Management\n // ===========================================\n\n /**\n * Update the Global Treasury Address where protocol fees are collected\n */\n async setTreasury(treasury: Address, options?: TransactionOptions): Promise<Hash> {\n // Note: Registry might not have direct setTreasury if it relies on SuperPaymaster's config.\n // Assuming Registry has ownership pointers or config pointers.\n // If Logic resides in SuperPaymaster, we would use superPaymasterActions.\n // Based on provided ABI/Actions, Registry manages Role Configs mainly.\n // Let's assume we are updating a System Role or similar global config if available,\n // OR adhering to what registryActions provides.\n \n // Checking registryActions... it has 'transferOwnership' but maybe not direct 'setTreasury' depending on version.\n // If strictly following ABI, we might need to update a specific Role Parameter (e.g. AOA/Super config).\n \n throw new Error(\"Method not mapped to RegistryABI v1. Please verify contract capabilities.\");\n }\n\n /**\n * Update the supported EntryPoint address\n */\n async updateEntryPoint(entryPoint: Address, options?: TransactionOptions): Promise<Hash> {\n // Placeholder: Real implementation depends on if Registry stores EntryPoint\n // registryActions typically provides getters. Setters usually restricted to Owner.\n // If action not available, throw standard error.\n throw new Error(\"Method not mapped to RegistryABI v1.\");\n }\n\n // ===========================================\n // 2. Role & Module Governance\n // ===========================================\n\n /**\n * Approve a new SuperPaymaster contract address\n */\n async setSuperPaymaster(paymaster: Address, options?: TransactionOptions): Promise<Hash> {\n const registry = registryActions(this.registryAddress);\n return await registry(this.client).setSuperPaymaster({\n paymaster,\n account: options?.account\n });\n }\n\n /**\n * Set the Staking contract address\n */\n async setStaking(staking: Address, options?: TransactionOptions): Promise<Hash> {\n const registry = registryActions(this.registryAddress);\n return await registry(this.client).setStaking({\n staking,\n account: options?.account\n });\n }\n\n /**\n * Configure a Role's parameters (Admin only).\n * Reads the current on-chain config first, then merges the provided overrides\n * and writes back the full struct via configureRole.\n */\n async configureRole(params: {\n roleId: Hex;\n minStake?: bigint;\n ticketPrice?: bigint;\n exitFeePercent?: bigint;\n minExitFee?: bigint;\n }, options?: TransactionOptions): Promise<Hash> {\n const registry = registryActions(this.registryAddress)(this.client);\n const current = await registry.getRoleConfig({ roleId: params.roleId });\n return await (registry as any).configureRole({\n roleId: params.roleId,\n config: {\n ...current,\n ...(params.minStake !== undefined && { minStake: params.minStake }),\n ...(params.ticketPrice !== undefined && { ticketPrice: params.ticketPrice }),\n ...(params.exitFeePercent !== undefined && { exitFeePercent: params.exitFeePercent }),\n ...(params.minExitFee !== undefined && { minExitFee: params.minExitFee }),\n },\n account: options?.account,\n });\n }\n\n // ===========================================\n // 3. Transfer to DAO (Exit/Upgrade)\n // ===========================================\n\n /**\n * Transfer Protocol Ownership to a DAO (Multisig/Timelock)\n * This is the final step of \"Protocol Admin\" lifecycle.\n */\n async transferToDAO(daoAddress: Address, options?: TransactionOptions): Promise<Hash> {\n const registry = registryActions(this.registryAddress);\n return await registry(this.client).transferOwnership({\n newOwner: daoAddress,\n account: options?.account\n });\n }\n\n // ===========================================\n // 4. Query Capabilities\n // ===========================================\n\n async getProtocolParams(): Promise<ProtocolParams> {\n const registry = registryActions(this.registryAddress)(this.client); // Read-only via Client\n \n // Parallel fetch\n const [sp, staking] = await Promise.all([\n registry.SUPER_PAYMASTER(),\n registry.GTOKEN_STAKING()\n ]);\n\n return {\n minStake: 0n, // Global default not directly exposed, usually per role\n treasury: await registry.owner(), // Approximation for now\n entryPoint: this.entryPointAddress,\n superPaymaster: sp\n };\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { BaseClient, entryPointActions, accountActions, sbtActions, tokenActions, stakingActions, registryActions } from './chunk-EEWLL7GE.js';
1
+ import { BaseClient, entryPointActions, accountActions, sbtActions, tokenActions, stakingActions, registryActions } from './chunk-6DZCDV4Q.js';
2
2
  import { encodeFunctionData } from 'viem';
3
3
  import { bundlerActions } from 'viem/account-abstraction';
4
4
 
@@ -29,7 +29,7 @@ var UserClient = class extends BaseClient {
29
29
  * @returns Object containing the deployed account address and transaction hash
30
30
  */
31
31
  static async deployAccount(client, params) {
32
- const { accountFactoryActions, SimpleAccountFactoryABI } = await import('./src-L2BLX34S.js');
32
+ const { accountFactoryActions, SimpleAccountFactoryABI } = await import('./src-FY3KAPPC.js');
33
33
  let abi = params.customAbi || (SimpleAccountFactoryABI?.abi || SimpleAccountFactoryABI);
34
34
  const factoryAddr = params.factoryAddress || "0x9406Cc6185a346906296840746125a0E44976454";
35
35
  const salt = params.salt || 0n;
@@ -356,13 +356,13 @@ var UserClient = class extends BaseClient {
356
356
  functionName: "execute",
357
357
  args: [params.target, params.value, params.data]
358
358
  });
359
- const { PaymasterClient: SDKPaymasterClient } = await import('./src-HKOFZ4V3.js');
359
+ const { PaymasterClient: SDKPaymasterClient } = await import('./src-EVM7OESP.js');
360
360
  let verificationGasLimit;
361
361
  let paymasterVerificationGasLimit;
362
362
  let paymasterPostOpGasLimit;
363
363
  let autoEstimate = true;
364
364
  if (params.paymasterType === "Super") {
365
- const { tuneGasLimit } = await import('./src-HKOFZ4V3.js');
365
+ const { tuneGasLimit } = await import('./src-EVM7OESP.js');
366
366
  const est = await SDKPaymasterClient.estimateUserOperationGas(
367
367
  this.client,
368
368
  this.client,
@@ -415,5 +415,5 @@ var UserClient = class extends BaseClient {
415
415
  };
416
416
 
417
417
  export { UserClient };
418
- //# sourceMappingURL=chunk-W73Y6JWZ.js.map
419
- //# sourceMappingURL=chunk-W73Y6JWZ.js.map
418
+ //# sourceMappingURL=chunk-IG4BG25C.js.map
419
+ //# sourceMappingURL=chunk-IG4BG25C.js.map