@aastar/sdk 0.20.9 → 0.21.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 (113) hide show
  1. package/dist/UserClient-BDGP37PK.js +6 -0
  2. package/dist/{UserClient-AIIHB54I.js.map → UserClient-BDGP37PK.js.map} +1 -1
  3. package/dist/UserClient-FOAOBLGK.cjs +15 -0
  4. package/dist/{UserClient-2J6XMTNV.cjs.map → UserClient-FOAOBLGK.cjs.map} +1 -1
  5. package/dist/account.cjs +8 -8
  6. package/dist/account.js +3 -3
  7. package/dist/admin.cjs +4 -4
  8. package/dist/admin.js +3 -3
  9. package/dist/airaccount.cjs +98 -98
  10. package/dist/airaccount.js +3 -3
  11. package/dist/channel.cjs +7 -7
  12. package/dist/channel.js +3 -3
  13. package/dist/{chunk-GRDC6ZRA.cjs → chunk-3HZEIFBW.cjs} +5 -5
  14. package/dist/{chunk-GRDC6ZRA.cjs.map → chunk-3HZEIFBW.cjs.map} +1 -1
  15. package/dist/{chunk-7ARJ3OSU.js → chunk-57XLR2NT.js} +3 -3
  16. package/dist/{chunk-7ARJ3OSU.js.map → chunk-57XLR2NT.js.map} +1 -1
  17. package/dist/{chunk-QLF7N6H7.cjs → chunk-5JFYTJOE.cjs} +4 -4
  18. package/dist/{chunk-QLF7N6H7.cjs.map → chunk-5JFYTJOE.cjs.map} +1 -1
  19. package/dist/{chunk-KDH3UPKD.js → chunk-5NKU5NT5.js} +8 -8
  20. package/dist/{chunk-KDH3UPKD.js.map → chunk-5NKU5NT5.js.map} +1 -1
  21. package/dist/{chunk-WQREDGUF.cjs → chunk-63JM67L7.cjs} +26 -26
  22. package/dist/{chunk-WQREDGUF.cjs.map → chunk-63JM67L7.cjs.map} +1 -1
  23. package/dist/{chunk-IC3G6YM2.js → chunk-6OWZOTE7.js} +113 -9
  24. package/dist/chunk-6OWZOTE7.js.map +1 -0
  25. package/dist/{chunk-FTJD2DWE.cjs → chunk-CIEYY3A6.cjs} +870 -83
  26. package/dist/chunk-CIEYY3A6.cjs.map +1 -0
  27. package/dist/{chunk-GX7NROST.cjs → chunk-DEUBKZH5.cjs} +16 -16
  28. package/dist/{chunk-GX7NROST.cjs.map → chunk-DEUBKZH5.cjs.map} +1 -1
  29. package/dist/{chunk-TENYCMJ3.js → chunk-DF4WVR2H.js} +9 -9
  30. package/dist/{chunk-TENYCMJ3.js.map → chunk-DF4WVR2H.js.map} +1 -1
  31. package/dist/{chunk-BN5WY5GM.js → chunk-DQBKE4ND.js} +4 -4
  32. package/dist/{chunk-BN5WY5GM.js.map → chunk-DQBKE4ND.js.map} +1 -1
  33. package/dist/{chunk-4EZD7LPE.js → chunk-E4CQFW75.js} +3 -3
  34. package/dist/{chunk-4EZD7LPE.js.map → chunk-E4CQFW75.js.map} +1 -1
  35. package/dist/{chunk-LXWIPTPX.js → chunk-ENSMYCU6.js} +3 -3
  36. package/dist/{chunk-LXWIPTPX.js.map → chunk-ENSMYCU6.js.map} +1 -1
  37. package/dist/{chunk-FJ7XECC5.js → chunk-EY2AJTGV.js} +3 -3
  38. package/dist/{chunk-FJ7XECC5.js.map → chunk-EY2AJTGV.js.map} +1 -1
  39. package/dist/{chunk-2RCJBWPO.cjs → chunk-GAMSWXWI.cjs} +11 -11
  40. package/dist/{chunk-2RCJBWPO.cjs.map → chunk-GAMSWXWI.cjs.map} +1 -1
  41. package/dist/{chunk-MRREGCWN.cjs → chunk-IJN776TA.cjs} +32 -32
  42. package/dist/{chunk-MRREGCWN.cjs.map → chunk-IJN776TA.cjs.map} +1 -1
  43. package/dist/{chunk-PKCHRXFR.js → chunk-KZERVPUR.js} +3 -3
  44. package/dist/{chunk-PKCHRXFR.js.map → chunk-KZERVPUR.js.map} +1 -1
  45. package/dist/{chunk-6QYXGMCR.js → chunk-M5WFKETT.js} +833 -47
  46. package/dist/{chunk-FTJD2DWE.cjs.map → chunk-M5WFKETT.js.map} +1 -1
  47. package/dist/{chunk-HSVQIFIK.cjs → chunk-M7HXR7G5.cjs} +5 -5
  48. package/dist/{chunk-HSVQIFIK.cjs.map → chunk-M7HXR7G5.cjs.map} +1 -1
  49. package/dist/{chunk-PAABYXS6.js → chunk-MCALA6WM.js} +6 -6
  50. package/dist/{chunk-PAABYXS6.js.map → chunk-MCALA6WM.js.map} +1 -1
  51. package/dist/{chunk-S5IKOOUR.cjs → chunk-MXJEULSE.cjs} +39 -36
  52. package/dist/chunk-MXJEULSE.cjs.map +1 -0
  53. package/dist/{chunk-TFLZETWB.cjs → chunk-OVNOSAL3.cjs} +113 -9
  54. package/dist/chunk-OVNOSAL3.cjs.map +1 -0
  55. package/dist/{chunk-MVEWJIPY.js → chunk-RXPSL33E.js} +3 -3
  56. package/dist/{chunk-MVEWJIPY.js.map → chunk-RXPSL33E.js.map} +1 -1
  57. package/dist/{chunk-G3UJC4EL.js → chunk-UCLK6LTB.js} +39 -36
  58. package/dist/chunk-UCLK6LTB.js.map +1 -0
  59. package/dist/{chunk-JTWY2XEG.cjs → chunk-WR4OZUXR.cjs} +6 -6
  60. package/dist/{chunk-JTWY2XEG.cjs.map → chunk-WR4OZUXR.cjs.map} +1 -1
  61. package/dist/{chunk-NT26BDGN.cjs → chunk-Y4EJX7UA.cjs} +12 -12
  62. package/dist/{chunk-NT26BDGN.cjs.map → chunk-Y4EJX7UA.cjs.map} +1 -1
  63. package/dist/{chunk-RNHSA3LO.cjs → chunk-Z4GZ6DQA.cjs} +9 -9
  64. package/dist/{chunk-RNHSA3LO.cjs.map → chunk-Z4GZ6DQA.cjs.map} +1 -1
  65. package/dist/{contract-addresses-TANQ5DLX.cjs → contract-addresses-RABD77VP.cjs} +13 -13
  66. package/dist/{contract-addresses-TANQ5DLX.cjs.map → contract-addresses-RABD77VP.cjs.map} +1 -1
  67. package/dist/{contract-addresses-N3TOL2WL.js → contract-addresses-TVXSRQ7I.js} +3 -3
  68. package/dist/{contract-addresses-N3TOL2WL.js.map → contract-addresses-TVXSRQ7I.js.map} +1 -1
  69. package/dist/core.cjs +227 -223
  70. package/dist/core.d.cts +130 -12
  71. package/dist/core.d.ts +130 -12
  72. package/dist/core.js +2 -2
  73. package/dist/dapp.cjs +6 -6
  74. package/dist/dapp.js +3 -3
  75. package/dist/enduser.cjs +7 -7
  76. package/dist/enduser.js +4 -4
  77. package/dist/identity.cjs +6 -6
  78. package/dist/identity.js +3 -3
  79. package/dist/index.cjs +340 -336
  80. package/dist/index.d.cts +1 -1
  81. package/dist/index.d.ts +1 -1
  82. package/dist/index.js +17 -17
  83. package/dist/kms.cjs +98 -98
  84. package/dist/kms.d.cts +62 -12
  85. package/dist/kms.d.ts +62 -12
  86. package/dist/kms.js +3 -3
  87. package/dist/operator.cjs +7 -7
  88. package/dist/operator.js +3 -3
  89. package/dist/paymaster.cjs +16 -16
  90. package/dist/paymaster.js +3 -3
  91. package/dist/{src-TQKEO2I4.cjs → src-CUHI6G6W.cjs} +229 -225
  92. package/dist/src-CUHI6G6W.cjs.map +1 -0
  93. package/dist/{src-ENPA7D2S.cjs → src-KHCWIS4Q.cjs} +18 -18
  94. package/dist/src-KHCWIS4Q.cjs.map +1 -0
  95. package/dist/{src-X5MIV3EB.js → src-RSN4U2T2.js} +5 -5
  96. package/dist/src-RSN4U2T2.js.map +1 -0
  97. package/dist/{src-L5SI5WNB.js → src-XCV6BTSV.js} +4 -4
  98. package/dist/{src-X5MIV3EB.js.map → src-XCV6BTSV.js.map} +1 -1
  99. package/dist/tokens.cjs +4 -4
  100. package/dist/tokens.js +3 -3
  101. package/dist/x402.cjs +26 -26
  102. package/dist/x402.js +3 -3
  103. package/package.json +113 -29
  104. package/dist/UserClient-2J6XMTNV.cjs +0 -15
  105. package/dist/UserClient-AIIHB54I.js +0 -6
  106. package/dist/chunk-6QYXGMCR.js.map +0 -1
  107. package/dist/chunk-G3UJC4EL.js.map +0 -1
  108. package/dist/chunk-IC3G6YM2.js.map +0 -1
  109. package/dist/chunk-S5IKOOUR.cjs.map +0 -1
  110. package/dist/chunk-TFLZETWB.cjs.map +0 -1
  111. package/dist/src-ENPA7D2S.cjs.map +0 -1
  112. package/dist/src-L5SI5WNB.js.map +0 -1
  113. package/dist/src-TQKEO2I4.cjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkFTJD2DWE_cjs = require('./chunk-FTJD2DWE.cjs');
3
+ var chunkCIEYY3A6_cjs = require('./chunk-CIEYY3A6.cjs');
4
4
  var viem = require('viem');
5
5
  var accounts = require('viem/accounts');
6
6
 
@@ -79,14 +79,14 @@ var UserOpClient = class {
79
79
  async function toSimpleSmartAccount(parameters) {
80
80
  const { client, owner, factoryAddress, entryPoint, index = 0n, salt = 0n } = parameters;
81
81
  const factoryData = viem.encodeFunctionData({
82
- abi: chunkFTJD2DWE_cjs.SimpleAccountFactoryABI,
82
+ abi: chunkCIEYY3A6_cjs.SimpleAccountFactoryABI,
83
83
  functionName: "createAccount",
84
84
  args: [owner.address, salt]
85
85
  });
86
86
  const initCode = viem.concatHex([factoryAddress, factoryData]);
87
87
  const address = await client.readContract({
88
88
  address: factoryAddress,
89
- abi: chunkFTJD2DWE_cjs.SimpleAccountFactoryABI,
89
+ abi: chunkCIEYY3A6_cjs.SimpleAccountFactoryABI,
90
90
  functionName: "getAddress",
91
91
  args: [owner.address, salt]
92
92
  });
@@ -124,5 +124,5 @@ exports.createEOAWalletClient = createEOAWalletClient;
124
124
  exports.getUserOpHash = getUserOpHash;
125
125
  exports.packUserOpLimits = packUserOpLimits;
126
126
  exports.toSimpleSmartAccount = toSimpleSmartAccount;
127
- //# sourceMappingURL=chunk-HSVQIFIK.cjs.map
128
- //# sourceMappingURL=chunk-HSVQIFIK.cjs.map
127
+ //# sourceMappingURL=chunk-M7HXR7G5.cjs.map
128
+ //# sourceMappingURL=chunk-M7HXR7G5.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../account/src/eoa.ts","../../account/src/index.ts","../../account/src/accounts/simple.ts"],"names":["http","privateKeyToAccount","createWalletClient","encodeAbiParameters","keccak256","encodeFunctionData","SimpleAccountFactoryABI","concatHex"],"mappings":"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","file":"chunk-HSVQIFIK.cjs","sourcesContent":["import { type WalletClient, type PublicClient, type Address, type Chain, type Transport, type Hash, type Hex, createWalletClient, http } from 'viem';\nimport { privateKeyToAccount } from 'viem/accounts';\n\nexport type EOAWalletClient = WalletClient & {\n sendTransaction: (args: { to: Address, value?: bigint, data?: Hex }) => Promise<Hash>;\n getAddress: () => Address;\n};\n\nexport const createEOAWalletClient = (\n privateKey: Hex, \n chain: Chain, \n transport: Transport = http()\n): EOAWalletClient => {\n const account = privateKeyToAccount(privateKey);\n const client = createWalletClient({\n account,\n chain,\n transport\n });\n\n return Object.assign(client, {\n async sendTransaction(args: { to: Address, value?: bigint, data?: Hex }) {\n return client.sendTransaction({\n ...args,\n account,\n chain\n });\n },\n getAddress: () => account.address\n }) as EOAWalletClient;\n};\n","import { type Hex, type Address, encodeAbiParameters, keccak256 } from 'viem';\n\nexport * from './eoa.js';\nexport * from './accounts/simple.js';\n\n/**\n * Common Pack Logic for v0.7 UserOperations\n */\nexport function packUserOpLimits(high: bigint, low: bigint): Hex {\n return `0x${((high << 128n) | low).toString(16).padStart(64, '0')}` as Hex;\n}\n\n/**\n * Local implementation of EntryPoint v0.7 getUserOpHash\n */\nexport function getUserOpHash(op: any, ep: Address, chainId: number): Hex {\n const packed = encodeAbiParameters(\n [\n { type: 'address' }, { type: 'uint256' }, { type: 'bytes32' }, { type: 'bytes32' },\n { type: 'bytes32' }, { type: 'uint256' }, { type: 'bytes32' }, { type: 'bytes32' }\n ],\n [\n op.sender, BigInt(op.nonce), \n keccak256(op.initCode && op.initCode !== \"0x\" ? op.initCode : '0x'), \n keccak256(op.callData),\n op.accountGasLimits, BigInt(op.preVerificationGas), op.gasFees,\n keccak256(op.paymasterAndData)\n ]\n );\n const enc = encodeAbiParameters(\n [{ type: 'bytes32' }, { type: 'address' }, { type: 'uint256' }],\n [keccak256(packed), ep, BigInt(chainId)]\n );\n return keccak256(enc);\n}\n\n/**\n * UserOperation Client for handling high-level flows\n */\nexport class UserOpClient {\n static async estimateGas(bundler: any, op: any, entryPoint: Address) {\n return bundler.request({\n method: 'eth_estimateUserOperationGas',\n params: [op, entryPoint]\n });\n }\n\n static async sendUserOp(bundler: any, op: any, entryPoint: Address) {\n return bundler.request({\n method: 'eth_sendUserOperation',\n params: [op, entryPoint]\n });\n }\n\n static async getReceipt(bundler: any, hash: Hex) {\n return bundler.request({\n method: 'eth_getUserOperationReceipt',\n params: [hash]\n });\n }\n}\n","import { \n type Address, \n type Hex, \n type LocalAccount, \n type SignableMessage, \n type TypedDataDefinition,\n type Hash,\n concatHex, \n encodeFunctionData, \n keccak256,\n} from 'viem';\nimport { SimpleAccountFactoryABI, type PublicClient } from '@aastar/core';\nimport { getUserOpHash } from '../index.js';\n\nexport type SimpleSmartAccount = LocalAccount & {\n signUserOperation: (userOp: any) => Promise<Hex>;\n getInitCode: () => Promise<Hex>;\n getDummySignature: () => Promise<Hex>;\n entryPoint: Address;\n};\n\nexport async function toSimpleSmartAccount(parameters: {\n client: any;\n owner: LocalAccount;\n factoryAddress: Address;\n entryPoint: { address: Address; version: '0.6' | '0.7' };\n salt?: bigint;\n index?: bigint;\n}): Promise<SimpleSmartAccount> {\n const { client, owner, factoryAddress, entryPoint, index = 0n, salt = 0n } = parameters;\n \n // Calculate initCode\n const factoryData = encodeFunctionData({\n abi: SimpleAccountFactoryABI,\n functionName: 'createAccount',\n args: [owner.address, salt]\n });\n const initCode = concatHex([factoryAddress, factoryData]);\n\n // Calculate counterfactual address\n const address = await client.readContract({\n address: factoryAddress,\n abi: SimpleAccountFactoryABI,\n functionName: 'getAddress',\n args: [owner.address, salt]\n });\n\n return {\n address,\n publicKey: owner.address,\n source: 'custom', \n type: 'local',\n entryPoint: entryPoint.address,\n \n async signMessage({ message }: { message: SignableMessage }): Promise<Hex> {\n // validating signature for smart account usually involves EIP-1271, \n // but here we just sign with owner for SimpleAccount which validates owner sig\n return owner.signMessage({ message });\n },\n\n async signTypedData(typedData: TypedDataDefinition): Promise<Hex> {\n return owner.signTypedData(typedData);\n },\n\n async signTransaction(transaction: any): Promise<Hex> {\n throw new Error('Smart Accounts cannot sign transactions directly. Use UserOperations.');\n },\n \n async signUserOperation(userOp: any): Promise<Hex> {\n const chainId = client.chain?.id || 31337; // Default to local anvil if not found\n const hash = getUserOpHash(userOp, entryPoint.address, chainId);\n return owner.signMessage({ message: { raw: hash } });\n },\n \n async getInitCode() {\n return initCode;\n },\n\n async getDummySignature() {\n return '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff';\n }\n\n } as any as SimpleSmartAccount;\n}\n"]}
1
+ {"version":3,"sources":["../../account/src/eoa.ts","../../account/src/index.ts","../../account/src/accounts/simple.ts"],"names":["http","privateKeyToAccount","createWalletClient","encodeAbiParameters","keccak256","encodeFunctionData","SimpleAccountFactoryABI","concatHex"],"mappings":"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","file":"chunk-M7HXR7G5.cjs","sourcesContent":["import { type WalletClient, type PublicClient, type Address, type Chain, type Transport, type Hash, type Hex, createWalletClient, http } from 'viem';\nimport { privateKeyToAccount } from 'viem/accounts';\n\nexport type EOAWalletClient = WalletClient & {\n sendTransaction: (args: { to: Address, value?: bigint, data?: Hex }) => Promise<Hash>;\n getAddress: () => Address;\n};\n\nexport const createEOAWalletClient = (\n privateKey: Hex, \n chain: Chain, \n transport: Transport = http()\n): EOAWalletClient => {\n const account = privateKeyToAccount(privateKey);\n const client = createWalletClient({\n account,\n chain,\n transport\n });\n\n return Object.assign(client, {\n async sendTransaction(args: { to: Address, value?: bigint, data?: Hex }) {\n return client.sendTransaction({\n ...args,\n account,\n chain\n });\n },\n getAddress: () => account.address\n }) as EOAWalletClient;\n};\n","import { type Hex, type Address, encodeAbiParameters, keccak256 } from 'viem';\n\nexport * from './eoa.js';\nexport * from './accounts/simple.js';\n\n/**\n * Common Pack Logic for v0.7 UserOperations\n */\nexport function packUserOpLimits(high: bigint, low: bigint): Hex {\n return `0x${((high << 128n) | low).toString(16).padStart(64, '0')}` as Hex;\n}\n\n/**\n * Local implementation of EntryPoint v0.7 getUserOpHash\n */\nexport function getUserOpHash(op: any, ep: Address, chainId: number): Hex {\n const packed = encodeAbiParameters(\n [\n { type: 'address' }, { type: 'uint256' }, { type: 'bytes32' }, { type: 'bytes32' },\n { type: 'bytes32' }, { type: 'uint256' }, { type: 'bytes32' }, { type: 'bytes32' }\n ],\n [\n op.sender, BigInt(op.nonce), \n keccak256(op.initCode && op.initCode !== \"0x\" ? op.initCode : '0x'), \n keccak256(op.callData),\n op.accountGasLimits, BigInt(op.preVerificationGas), op.gasFees,\n keccak256(op.paymasterAndData)\n ]\n );\n const enc = encodeAbiParameters(\n [{ type: 'bytes32' }, { type: 'address' }, { type: 'uint256' }],\n [keccak256(packed), ep, BigInt(chainId)]\n );\n return keccak256(enc);\n}\n\n/**\n * UserOperation Client for handling high-level flows\n */\nexport class UserOpClient {\n static async estimateGas(bundler: any, op: any, entryPoint: Address) {\n return bundler.request({\n method: 'eth_estimateUserOperationGas',\n params: [op, entryPoint]\n });\n }\n\n static async sendUserOp(bundler: any, op: any, entryPoint: Address) {\n return bundler.request({\n method: 'eth_sendUserOperation',\n params: [op, entryPoint]\n });\n }\n\n static async getReceipt(bundler: any, hash: Hex) {\n return bundler.request({\n method: 'eth_getUserOperationReceipt',\n params: [hash]\n });\n }\n}\n","import { \n type Address, \n type Hex, \n type LocalAccount, \n type SignableMessage, \n type TypedDataDefinition,\n type Hash,\n concatHex, \n encodeFunctionData, \n keccak256,\n} from 'viem';\nimport { SimpleAccountFactoryABI, type PublicClient } from '@aastar/core';\nimport { getUserOpHash } from '../index.js';\n\nexport type SimpleSmartAccount = LocalAccount & {\n signUserOperation: (userOp: any) => Promise<Hex>;\n getInitCode: () => Promise<Hex>;\n getDummySignature: () => Promise<Hex>;\n entryPoint: Address;\n};\n\nexport async function toSimpleSmartAccount(parameters: {\n client: any;\n owner: LocalAccount;\n factoryAddress: Address;\n entryPoint: { address: Address; version: '0.6' | '0.7' };\n salt?: bigint;\n index?: bigint;\n}): Promise<SimpleSmartAccount> {\n const { client, owner, factoryAddress, entryPoint, index = 0n, salt = 0n } = parameters;\n \n // Calculate initCode\n const factoryData = encodeFunctionData({\n abi: SimpleAccountFactoryABI,\n functionName: 'createAccount',\n args: [owner.address, salt]\n });\n const initCode = concatHex([factoryAddress, factoryData]);\n\n // Calculate counterfactual address\n const address = await client.readContract({\n address: factoryAddress,\n abi: SimpleAccountFactoryABI,\n functionName: 'getAddress',\n args: [owner.address, salt]\n });\n\n return {\n address,\n publicKey: owner.address,\n source: 'custom', \n type: 'local',\n entryPoint: entryPoint.address,\n \n async signMessage({ message }: { message: SignableMessage }): Promise<Hex> {\n // validating signature for smart account usually involves EIP-1271, \n // but here we just sign with owner for SimpleAccount which validates owner sig\n return owner.signMessage({ message });\n },\n\n async signTypedData(typedData: TypedDataDefinition): Promise<Hex> {\n return owner.signTypedData(typedData);\n },\n\n async signTransaction(transaction: any): Promise<Hex> {\n throw new Error('Smart Accounts cannot sign transactions directly. Use UserOperations.');\n },\n \n async signUserOperation(userOp: any): Promise<Hex> {\n const chainId = client.chain?.id || 31337; // Default to local anvil if not found\n const hash = getUserOpHash(userOp, entryPoint.address, chainId);\n return owner.signMessage({ message: { raw: hash } });\n },\n \n async getInitCode() {\n return initCode;\n },\n\n async getDummySignature() {\n return '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff';\n }\n\n } as any as SimpleSmartAccount;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { BaseClient, entryPointActions, accountActions, sbtActions, tokenActions, stakingActions, registryActions } from './chunk-6QYXGMCR.js';
1
+ import { BaseClient, entryPointActions, accountActions, sbtActions, tokenActions, stakingActions, registryActions } from './chunk-M5WFKETT.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-L5SI5WNB.js');
32
+ const { accountFactoryActions, SimpleAccountFactoryABI } = await import('./src-XCV6BTSV.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-X5MIV3EB.js');
359
+ const { PaymasterClient: SDKPaymasterClient } = await import('./src-RSN4U2T2.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-X5MIV3EB.js');
365
+ const { tuneGasLimit } = await import('./src-RSN4U2T2.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-PAABYXS6.js.map
419
- //# sourceMappingURL=chunk-PAABYXS6.js.map
418
+ //# sourceMappingURL=chunk-MCALA6WM.js.map
419
+ //# sourceMappingURL=chunk-MCALA6WM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../enduser/src/UserClient.ts"],"names":["encodeFunctionData"],"mappings":"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","file":"chunk-PAABYXS6.js","sourcesContent":["import { type Address, type Hash, type Hex, concat, pad, toHex, encodeFunctionData } from 'viem';\nimport { BaseClient, type ClientConfig, type TransactionOptions } from '@aastar/core';\nimport { accountActions, sbtActions, tokenActions, entryPointActions, stakingActions, registryActions, paymasterActions, superPaymasterActions } from '@aastar/core';\nimport { bundlerActions, type UserOperation, getUserOperationHash } from 'viem/account-abstraction';\n\nexport interface UserClientConfig extends ClientConfig {\n accountAddress: Address; // The AA account address\n sbtAddress?: Address;\n entryPointAddress?: Address;\n superPaymasterAddress?: Address; // For sponsorship queries\n gTokenStakingAddress?: Address; // For staking/investing\n registryAddress?: Address; // For role management\n gTokenAddress?: Address; // For fee payment approval\n bundlerClient?: any;\n}\n\nexport class UserClient extends BaseClient {\n public accountAddress: Address;\n public sbtAddress?: Address;\n public entryPointAddress?: Address;\n public gTokenStakingAddress?: Address;\n public registryAddress?: Address;\n public gTokenAddress?: Address;\n public bundlerClient?: any;\n\n constructor(config: UserClientConfig) {\n super(config);\n this.bundlerClient = config.bundlerClient;\n this.accountAddress = config.accountAddress;\n this.sbtAddress = config.sbtAddress;\n this.entryPointAddress = config.entryPointAddress;\n this.gTokenStakingAddress = config.gTokenStakingAddress;\n this.registryAddress = config.registryAddress;\n this.gTokenAddress = config.gTokenAddress;\n }\n\n /**\n * Deploy a new Smart Account (Supports multiple factory types)\n * Static helper to facilitate onboarding before instantiating the UserClient.\n * \n * @param client - WalletClient to sign the deployment transaction\n * @param params - Deployment parameters\n * @returns Object containing the deployed account address and transaction hash\n */\n static async deployAccount(\n client: any, \n params: {\n owner: Address;\n salt?: bigint;\n factoryAddress?: Address;\n publicClient?: any;\n accountType?: 'simple' | 'kernel' | 'safe' | string;\n customAbi?: any;\n }\n ): Promise<{ accountAddress: Address; hash: Hash }> {\n const { accountFactoryActions, SimpleAccountFactoryABI } = await import('@aastar/core');\n \n // 1. Determine Factory ABI (Ensure it's the raw ABI array)\n let abi = params.customAbi || (SimpleAccountFactoryABI?.abi || SimpleAccountFactoryABI);\n \n // In the future, we can add more built-in ABIs here based on accountType\n // if (params.accountType === 'kernel') abi = KernelFactoryABI;\n \n const factoryAddr = params.factoryAddress || '0x9406Cc6185a346906296840746125a0E44976454'; // Default v0.7 Factory\n const salt = params.salt || 0n;\n \n // Use publicClient for reading if provided, otherwise fallback to client (which might be a Full Client)\n const readClient = params.publicClient || client;\n \n // Use the generic actions with the selected ABI\n const factoryRead = accountFactoryActions(factoryAddr, abi)(readClient);\n const factoryWrite = accountFactoryActions(factoryAddr, abi)(client);\n \n // 1. Predict Address\n const accountAddress = await factoryRead.getAddress({\n owner: params.owner,\n salt\n });\n\n // 2. Deploy\n try {\n const hash = await factoryWrite.createAccount({\n owner: params.owner,\n salt,\n account: client.account\n });\n return { accountAddress, hash };\n } catch (error: any) {\n const messageParts = [\n error?.shortMessage,\n error?.message,\n error?.details,\n error?.cause?.shortMessage,\n error?.cause?.message,\n error?.cause?.details,\n error?.cause?.cause?.shortMessage,\n error?.cause?.cause?.message\n ].filter(Boolean);\n const message = messageParts.join(' ');\n if (message.includes('gas required exceeds allowance') || message.includes('intrinsic gas too low')) {\n const data = encodeFunctionData({\n abi,\n functionName: 'createAccount',\n args: [params.owner, salt]\n });\n const hash = await client.sendTransaction({\n to: factoryAddr,\n data,\n gas: 2_000_000n,\n account: client.account\n });\n return { accountAddress, hash };\n }\n throw error;\n }\n }\n\n // ========================================\n // 1. 账户基本操作 (基于 L1 simpleAccountActions)\n // ========================================\n\n /**\n * Get the nonce of the account from EntryPoint (more reliable for 4337)\n */\n async getNonce(key: bigint = 0n): Promise<bigint> {\n try {\n if (!this.entryPointAddress) {\n throw new Error('EntryPoint address required for this client');\n }\n const entryPoint = entryPointActions(this.entryPointAddress);\n return await entryPoint(this.getStartPublicClient()).getNonce({\n sender: this.accountAddress,\n key\n });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Get the owner of the AA account\n */\n async getOwner(): Promise<Address> {\n try {\n const account = accountActions(this.accountAddress);\n return await account(this.getStartPublicClient()).owner();\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Execute a transaction from the AA account\n */\n async execute(target: Address, value: bigint, data: Hex, options?: TransactionOptions): Promise<Hash> {\n try {\n const account = accountActions(this.accountAddress);\n \n // Use standard AA execute\n return await account(this.client).execute({\n dest: target,\n value,\n func: data,\n account: options?.account\n });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Execute a batch of transactions\n */\n async executeBatch(targets: Address[], values: bigint[], datas: Hex[], options?: TransactionOptions): Promise<Hash> {\n try {\n const account = accountActions(this.accountAddress);\n \n return await account(this.client).executeBatch({\n dest: targets,\n value: values,\n func: datas,\n account: options?.account\n });\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // identity 与 SBT (基于 L1 sbtActions)\n // ========================================\n\n /**\n * Get user's SBT balance\n */\n async getSBTBalance(): Promise<bigint> {\n try {\n if (!this.sbtAddress) throw new Error('SBT address required for this client');\n const sbt = sbtActions(this.sbtAddress);\n \n return await sbt(this.getStartPublicClient()).balanceOf({\n owner: this.accountAddress\n });\n } catch (error) {\n throw error;\n }\n }\n\n async mintSBT(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.sbtAddress) throw new Error('SBT address required for this client');\n const { encodeFunctionData } = await import('viem');\n \n const data = encodeFunctionData({\n abi: [{ name: 'mintForRole', type: 'function', inputs: [{ name: 'user', type: 'address' }, { name: 'roleId', type: 'bytes32' }, { name: 'roleData', type: 'bytes' }], outputs: [{ type: 'uint256' }] }],\n functionName: 'mintForRole',\n args: [this.accountAddress, roleId, '0x']\n });\n\n return await this.execute(this.sbtAddress, 0n, data, options);\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // 3. 资产管理 (基于 L1 tokenActions)\n // ========================================\n\n async transferToken(token: Address, to: Address, amount: bigint, options?: TransactionOptions): Promise<Hash> {\n try {\n const { encodeFunctionData } = await import('viem');\n const data = encodeFunctionData({\n abi: [{ name: 'transfer', type: 'function', inputs: [{ name: 'to', type: 'address' }, { name: 'amount', type: 'uint256' }], outputs: [{ type: 'bool' }] }],\n functionName: 'transfer',\n args: [to, amount]\n });\n\n return await this.execute(token, 0n, data, options);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Get Token Balance\n */\n async getTokenBalance(token: Address): Promise<bigint> {\n try {\n const tokens = tokenActions()(this.getStartPublicClient());\n \n return await tokens.balanceOf({\n token,\n account: this.accountAddress\n });\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // 4. 委托与质押 (Delegation & Staking)\n // ========================================\n\n async stakeForRole(roleId: Hex, amount: bigint, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.gTokenStakingAddress) throw new Error('GTokenStaking address required for this client');\n const { encodeFunctionData } = await import('viem');\n \n const data = encodeFunctionData({\n abi: [{ name: 'lockStake', type: 'function', inputs: [{ name: 'user', type: 'address' }, { name: 'roleId', type: 'bytes32' }, { name: 'stakeAmount', type: 'uint256' }, { name: 'entryBurn', type: 'uint256' }, { name: 'payer', type: 'address' }], outputs: [] }],\n functionName: 'lockStake',\n args: [this.accountAddress, roleId, amount, 0n, this.accountAddress]\n });\n\n return await this.execute(this.gTokenStakingAddress, 0n, data, options);\n } catch (error) {\n throw error;\n }\n }\n\n async unstakeFromRole(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.gTokenStakingAddress) throw new Error('GTokenStaking address required for this client');\n const { encodeFunctionData } = await import('viem');\n \n const data = encodeFunctionData({\n abi: [{ name: 'unlockAndTransfer', type: 'function', inputs: [{ name: 'user', type: 'address' }, { name: 'roleId', type: 'bytes32' }], outputs: [{ name: 'netAmount', type: 'uint256' }] }],\n functionName: 'unlockAndTransfer',\n args: [this.accountAddress, roleId]\n });\n\n return await this.execute(this.gTokenStakingAddress, 0n, data, options);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Get staked balance for a specific role\n */\n async getStakedBalance(roleId: Hex): Promise<bigint> {\n try {\n if (!this.gTokenStakingAddress) throw new Error('GTokenStaking address required for this client');\n const staking = stakingActions(this.gTokenStakingAddress);\n \n return await staking(this.getStartPublicClient()).getLockedStake({\n user: this.accountAddress,\n roleId\n });\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // 5. 生命周期管理 (Lifecycle)\n // ========================================\n\n async exitRole(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.registryAddress) throw new Error('Registry address required for this client');\n const { encodeFunctionData } = await import('viem');\n \n const data = encodeFunctionData({\n abi: [{ name: 'exitRole', type: 'function', inputs: [{ name: 'roleId', type: 'bytes32' }], outputs: [] }],\n functionName: 'exitRole',\n args: [roleId]\n });\n\n return await this.execute(this.registryAddress, 0n, data, options);\n } catch (error) {\n throw error;\n }\n }\n\n async leaveCommunity(community: Address, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.sbtAddress) throw new Error('SBT address required for this client');\n const { encodeFunctionData } = await import('viem');\n \n const data = encodeFunctionData({\n abi: [{ name: 'leaveCommunity', type: 'function', inputs: [{ name: 'comm', type: 'address' }], outputs: [] }],\n functionName: 'leaveCommunity',\n args: [community]\n });\n\n return await this.execute(this.sbtAddress, 0n, data, options);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Register as EndUser (One-click: Approve + Register)\n * Handles GToken approval to Staking contract and Role registration.\n */\n async registerAsEndUser(communityAddress: Address, stakeAmount: bigint, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.registryAddress) throw new Error('Registry address required for this client');\n if (!this.gTokenStakingAddress) throw new Error('GTokenStaking address required for this client');\n if (!this.gTokenAddress) throw new Error('GToken address required for this client');\n\n const { encodeAbiParameters, keccak256, toBytes, parseEther } = await import('viem');\n const ROLE_ENDUSER = keccak256(toBytes(\"ENDUSER\"));\n // Correct mapping for Registry Actions\n const registry = registryActions(this.registryAddress);\n const publicClient = this.getStartPublicClient();\n const tokens = tokenActions()(publicClient);\n\n // 1. Check Allowance\n const allowance = await tokens.allowance({\n token: this.gTokenAddress,\n owner: this.accountAddress,\n spender: this.gTokenStakingAddress\n });\n console.log(` 🔍 Debug Allowance: Account=${this.accountAddress}, Allowance=${allowance}, Needed=${stakeAmount}`);\n \n const txs: { target: Address, value: bigint, data: Hex }[] = [];\n\n if (allowance < stakeAmount) {\n const approveData = encodeFunctionData({\n abi: [{name:'approve', type:'function', inputs:[{type:'address'},{type:'uint256'}], outputs:[{type:'bool'}], stateMutability:'nonpayable'}],\n functionName: 'approve',\n args: [this.gTokenStakingAddress, parseEther('1000')]\n });\n txs.push({ target: this.gTokenAddress, value: 0n, data: approveData });\n }\n\n // 2. Construct Register Call\n // struct EndUserRoleData { address account; address community; string avatarURI; string ensName; uint256 stakeAmount; }\n const roleData = encodeAbiParameters(\n [\n { type: 'address', name: 'account' },\n { type: 'address', name: 'community' },\n { type: 'string', name: 'avatarURI' },\n { type: 'string', name: 'ensName' },\n { type: 'uint256', name: 'stakeAmount' }\n ],\n [\n this.accountAddress,\n communityAddress,\n '',\n '',\n stakeAmount\n ]\n );\n\n const registerData = encodeFunctionData({\n abi: [{ name: 'registerRoleSelf', type: 'function', inputs: [{type:'bytes32'}, {type:'bytes'}], outputs: [{type:'uint256'}], stateMutability: 'nonpayable' }],\n functionName: 'registerRoleSelf',\n args: [ROLE_ENDUSER, roleData]\n });\n \n txs.push({ target: this.registryAddress, value: 0n, data: registerData });\n \n console.log(` 🔍 Debug Onboard: Community=${communityAddress}, AA=${this.accountAddress}, Stake=${stakeAmount}`);\n console.log(` 🔍 Debug Batch: Txs=${txs.length}, Targets=${txs.map(t => t.target)}`);\n\n // 3. Execute separately for stability (Batch execution has issues on current AA deployment)\n const hashes: Hash[] = [];\n for (const tx of txs) {\n const h = await this.execute(tx.target, tx.value, tx.data, options);\n hashes.push(h);\n // Wait for each tx to ensure sequential state updates (approve -> register)\n await (this.getStartPublicClient() as any).waitForTransactionReceipt({ hash: h });\n }\n return hashes[hashes.length - 1];\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // 6. Gasless Execution (Advanced)\n // ========================================\n\n /**\n * Execute a transaction with Gasless Sponsorship\n */\n async executeGasless(params: {\n target: Address;\n value: bigint;\n data: Hex;\n paymaster: Address;\n paymasterType: 'V4' | 'Super';\n operator?: Address; // Added for SuperPaymaster\n maxRate?: bigint; // Added for SuperPaymaster\n }, options?: TransactionOptions): Promise<Hash> {\n try {\n const client = this.bundlerClient ? this.bundlerClient.extend(bundlerActions) : (this.client as any).extend(bundlerActions);\n \n const ep = this.requireEntryPoint();\n \n // 1. Prepare Call Data\n const callData = encodeFunctionData({\n abi: [{ name: 'execute', type: 'function', inputs: [{ name: 'dest', type: 'address' }, { name: 'value', type: 'uint256' }, { name: 'func', type: 'bytes' }], outputs: [] }],\n functionName: 'execute',\n args: [params.target, params.value, params.data]\n });\n\n // 3. Delegate to PaymasterClient for v0.7 Gasless Submission\n // This ensures we follow the exact same logic as successful demo scripts\n // We dynamic import to avoid circular dependencies if any\n const { PaymasterClient: SDKPaymasterClient } = await import('@aastar/paymaster');\n \n let verificationGasLimit: bigint | undefined;\n let paymasterVerificationGasLimit: bigint | undefined;\n let paymasterPostOpGasLimit: bigint | undefined;\n let autoEstimate = true;\n\n if (params.paymasterType === 'Super') {\n // Apply Smart Buffer Strategy via PaymasterUtils (Same as SuperPaymasterClient)\n const { tuneGasLimit } = await import('@aastar/paymaster');\n \n const est = await SDKPaymasterClient.estimateUserOperationGas(\n this.client,\n this.client, \n this.accountAddress,\n ep,\n params.paymaster,\n params.target, // placeholder\n this.bundlerClient?.transport?.url || (this.client.transport as any).url || '', \n callData,\n {\n operator: params.operator,\n factory: undefined,\n factoryData: undefined\n }\n );\n \n // Matches SuperPaymasterClient Logic exactly:\n const bundlerEstimate = est.paymasterVerificationGasLimit || 100000n;\n // Nominal 60k, Efficiency 0.45\n paymasterVerificationGasLimit = tuneGasLimit(bundlerEstimate, 60_000n, 0.45);\n \n // Safety Pad for VGL (Moderate, not 1M)\n const SAFETY_PAD = 80000n;\n verificationGasLimit = est.verificationGasLimit + SAFETY_PAD;\n \n // SuperPaymaster postOp calls burnFromWithOpHash (~40k gas) + storage writes.\n // Add 100k buffer; floor at 200k to prevent OOG. Pure BigInt to avoid Number precision loss.\n const _postOpBase = est.paymasterPostOpGasLimit + 100_000n;\n paymasterPostOpGasLimit = _postOpBase > 200_000n ? _postOpBase : 200_000n;\n \n autoEstimate = false; // logic handled\n }\n\n const txHash = await SDKPaymasterClient.submitGaslessUserOperation(\n this.client,\n this.client, // WalletClient acts as signer\n this.accountAddress,\n ep,\n params.paymaster,\n params.target, // placeholder for token if V4\n this.bundlerClient?.transport?.url || (this.client.transport as any).url || '', \n callData,\n {\n operator: params.operator,\n autoEstimate, \n verificationGasLimit,\n paymasterVerificationGasLimit,\n paymasterPostOpGasLimit\n }\n );\n\n return txHash;\n } catch (error: any) {\n console.error(\" ❌ executeGasless Error:\", error.message);\n throw error;\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../../enduser/src/UserClient.ts"],"names":["encodeFunctionData"],"mappings":"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","file":"chunk-MCALA6WM.js","sourcesContent":["import { type Address, type Hash, type Hex, concat, pad, toHex, encodeFunctionData } from 'viem';\nimport { BaseClient, type ClientConfig, type TransactionOptions } from '@aastar/core';\nimport { accountActions, sbtActions, tokenActions, entryPointActions, stakingActions, registryActions, paymasterActions, superPaymasterActions } from '@aastar/core';\nimport { bundlerActions, type UserOperation, getUserOperationHash } from 'viem/account-abstraction';\n\nexport interface UserClientConfig extends ClientConfig {\n accountAddress: Address; // The AA account address\n sbtAddress?: Address;\n entryPointAddress?: Address;\n superPaymasterAddress?: Address; // For sponsorship queries\n gTokenStakingAddress?: Address; // For staking/investing\n registryAddress?: Address; // For role management\n gTokenAddress?: Address; // For fee payment approval\n bundlerClient?: any;\n}\n\nexport class UserClient extends BaseClient {\n public accountAddress: Address;\n public sbtAddress?: Address;\n public entryPointAddress?: Address;\n public gTokenStakingAddress?: Address;\n public registryAddress?: Address;\n public gTokenAddress?: Address;\n public bundlerClient?: any;\n\n constructor(config: UserClientConfig) {\n super(config);\n this.bundlerClient = config.bundlerClient;\n this.accountAddress = config.accountAddress;\n this.sbtAddress = config.sbtAddress;\n this.entryPointAddress = config.entryPointAddress;\n this.gTokenStakingAddress = config.gTokenStakingAddress;\n this.registryAddress = config.registryAddress;\n this.gTokenAddress = config.gTokenAddress;\n }\n\n /**\n * Deploy a new Smart Account (Supports multiple factory types)\n * Static helper to facilitate onboarding before instantiating the UserClient.\n * \n * @param client - WalletClient to sign the deployment transaction\n * @param params - Deployment parameters\n * @returns Object containing the deployed account address and transaction hash\n */\n static async deployAccount(\n client: any, \n params: {\n owner: Address;\n salt?: bigint;\n factoryAddress?: Address;\n publicClient?: any;\n accountType?: 'simple' | 'kernel' | 'safe' | string;\n customAbi?: any;\n }\n ): Promise<{ accountAddress: Address; hash: Hash }> {\n const { accountFactoryActions, SimpleAccountFactoryABI } = await import('@aastar/core');\n \n // 1. Determine Factory ABI (Ensure it's the raw ABI array)\n let abi = params.customAbi || (SimpleAccountFactoryABI?.abi || SimpleAccountFactoryABI);\n \n // In the future, we can add more built-in ABIs here based on accountType\n // if (params.accountType === 'kernel') abi = KernelFactoryABI;\n \n const factoryAddr = params.factoryAddress || '0x9406Cc6185a346906296840746125a0E44976454'; // Default v0.7 Factory\n const salt = params.salt || 0n;\n \n // Use publicClient for reading if provided, otherwise fallback to client (which might be a Full Client)\n const readClient = params.publicClient || client;\n \n // Use the generic actions with the selected ABI\n const factoryRead = accountFactoryActions(factoryAddr, abi)(readClient);\n const factoryWrite = accountFactoryActions(factoryAddr, abi)(client);\n \n // 1. Predict Address\n const accountAddress = await factoryRead.getAddress({\n owner: params.owner,\n salt\n });\n\n // 2. Deploy\n try {\n const hash = await factoryWrite.createAccount({\n owner: params.owner,\n salt,\n account: client.account\n });\n return { accountAddress, hash };\n } catch (error: any) {\n const messageParts = [\n error?.shortMessage,\n error?.message,\n error?.details,\n error?.cause?.shortMessage,\n error?.cause?.message,\n error?.cause?.details,\n error?.cause?.cause?.shortMessage,\n error?.cause?.cause?.message\n ].filter(Boolean);\n const message = messageParts.join(' ');\n if (message.includes('gas required exceeds allowance') || message.includes('intrinsic gas too low')) {\n const data = encodeFunctionData({\n abi,\n functionName: 'createAccount',\n args: [params.owner, salt]\n });\n const hash = await client.sendTransaction({\n to: factoryAddr,\n data,\n gas: 2_000_000n,\n account: client.account\n });\n return { accountAddress, hash };\n }\n throw error;\n }\n }\n\n // ========================================\n // 1. 账户基本操作 (基于 L1 simpleAccountActions)\n // ========================================\n\n /**\n * Get the nonce of the account from EntryPoint (more reliable for 4337)\n */\n async getNonce(key: bigint = 0n): Promise<bigint> {\n try {\n if (!this.entryPointAddress) {\n throw new Error('EntryPoint address required for this client');\n }\n const entryPoint = entryPointActions(this.entryPointAddress);\n return await entryPoint(this.getStartPublicClient()).getNonce({\n sender: this.accountAddress,\n key\n });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Get the owner of the AA account\n */\n async getOwner(): Promise<Address> {\n try {\n const account = accountActions(this.accountAddress);\n return await account(this.getStartPublicClient()).owner();\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Execute a transaction from the AA account\n */\n async execute(target: Address, value: bigint, data: Hex, options?: TransactionOptions): Promise<Hash> {\n try {\n const account = accountActions(this.accountAddress);\n \n // Use standard AA execute\n return await account(this.client).execute({\n dest: target,\n value,\n func: data,\n account: options?.account\n });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Execute a batch of transactions\n */\n async executeBatch(targets: Address[], values: bigint[], datas: Hex[], options?: TransactionOptions): Promise<Hash> {\n try {\n const account = accountActions(this.accountAddress);\n \n return await account(this.client).executeBatch({\n dest: targets,\n value: values,\n func: datas,\n account: options?.account\n });\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // identity 与 SBT (基于 L1 sbtActions)\n // ========================================\n\n /**\n * Get user's SBT balance\n */\n async getSBTBalance(): Promise<bigint> {\n try {\n if (!this.sbtAddress) throw new Error('SBT address required for this client');\n const sbt = sbtActions(this.sbtAddress);\n \n return await sbt(this.getStartPublicClient()).balanceOf({\n owner: this.accountAddress\n });\n } catch (error) {\n throw error;\n }\n }\n\n async mintSBT(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.sbtAddress) throw new Error('SBT address required for this client');\n const { encodeFunctionData } = await import('viem');\n \n const data = encodeFunctionData({\n abi: [{ name: 'mintForRole', type: 'function', inputs: [{ name: 'user', type: 'address' }, { name: 'roleId', type: 'bytes32' }, { name: 'roleData', type: 'bytes' }], outputs: [{ type: 'uint256' }] }],\n functionName: 'mintForRole',\n args: [this.accountAddress, roleId, '0x']\n });\n\n return await this.execute(this.sbtAddress, 0n, data, options);\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // 3. 资产管理 (基于 L1 tokenActions)\n // ========================================\n\n async transferToken(token: Address, to: Address, amount: bigint, options?: TransactionOptions): Promise<Hash> {\n try {\n const { encodeFunctionData } = await import('viem');\n const data = encodeFunctionData({\n abi: [{ name: 'transfer', type: 'function', inputs: [{ name: 'to', type: 'address' }, { name: 'amount', type: 'uint256' }], outputs: [{ type: 'bool' }] }],\n functionName: 'transfer',\n args: [to, amount]\n });\n\n return await this.execute(token, 0n, data, options);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Get Token Balance\n */\n async getTokenBalance(token: Address): Promise<bigint> {\n try {\n const tokens = tokenActions()(this.getStartPublicClient());\n \n return await tokens.balanceOf({\n token,\n account: this.accountAddress\n });\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // 4. 委托与质押 (Delegation & Staking)\n // ========================================\n\n async stakeForRole(roleId: Hex, amount: bigint, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.gTokenStakingAddress) throw new Error('GTokenStaking address required for this client');\n const { encodeFunctionData } = await import('viem');\n \n const data = encodeFunctionData({\n abi: [{ name: 'lockStake', type: 'function', inputs: [{ name: 'user', type: 'address' }, { name: 'roleId', type: 'bytes32' }, { name: 'stakeAmount', type: 'uint256' }, { name: 'entryBurn', type: 'uint256' }, { name: 'payer', type: 'address' }], outputs: [] }],\n functionName: 'lockStake',\n args: [this.accountAddress, roleId, amount, 0n, this.accountAddress]\n });\n\n return await this.execute(this.gTokenStakingAddress, 0n, data, options);\n } catch (error) {\n throw error;\n }\n }\n\n async unstakeFromRole(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.gTokenStakingAddress) throw new Error('GTokenStaking address required for this client');\n const { encodeFunctionData } = await import('viem');\n \n const data = encodeFunctionData({\n abi: [{ name: 'unlockAndTransfer', type: 'function', inputs: [{ name: 'user', type: 'address' }, { name: 'roleId', type: 'bytes32' }], outputs: [{ name: 'netAmount', type: 'uint256' }] }],\n functionName: 'unlockAndTransfer',\n args: [this.accountAddress, roleId]\n });\n\n return await this.execute(this.gTokenStakingAddress, 0n, data, options);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Get staked balance for a specific role\n */\n async getStakedBalance(roleId: Hex): Promise<bigint> {\n try {\n if (!this.gTokenStakingAddress) throw new Error('GTokenStaking address required for this client');\n const staking = stakingActions(this.gTokenStakingAddress);\n \n return await staking(this.getStartPublicClient()).getLockedStake({\n user: this.accountAddress,\n roleId\n });\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // 5. 生命周期管理 (Lifecycle)\n // ========================================\n\n async exitRole(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.registryAddress) throw new Error('Registry address required for this client');\n const { encodeFunctionData } = await import('viem');\n \n const data = encodeFunctionData({\n abi: [{ name: 'exitRole', type: 'function', inputs: [{ name: 'roleId', type: 'bytes32' }], outputs: [] }],\n functionName: 'exitRole',\n args: [roleId]\n });\n\n return await this.execute(this.registryAddress, 0n, data, options);\n } catch (error) {\n throw error;\n }\n }\n\n async leaveCommunity(community: Address, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.sbtAddress) throw new Error('SBT address required for this client');\n const { encodeFunctionData } = await import('viem');\n \n const data = encodeFunctionData({\n abi: [{ name: 'leaveCommunity', type: 'function', inputs: [{ name: 'comm', type: 'address' }], outputs: [] }],\n functionName: 'leaveCommunity',\n args: [community]\n });\n\n return await this.execute(this.sbtAddress, 0n, data, options);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Register as EndUser (One-click: Approve + Register)\n * Handles GToken approval to Staking contract and Role registration.\n */\n async registerAsEndUser(communityAddress: Address, stakeAmount: bigint, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.registryAddress) throw new Error('Registry address required for this client');\n if (!this.gTokenStakingAddress) throw new Error('GTokenStaking address required for this client');\n if (!this.gTokenAddress) throw new Error('GToken address required for this client');\n\n const { encodeAbiParameters, keccak256, toBytes, parseEther } = await import('viem');\n const ROLE_ENDUSER = keccak256(toBytes(\"ENDUSER\"));\n // Correct mapping for Registry Actions\n const registry = registryActions(this.registryAddress);\n const publicClient = this.getStartPublicClient();\n const tokens = tokenActions()(publicClient);\n\n // 1. Check Allowance\n const allowance = await tokens.allowance({\n token: this.gTokenAddress,\n owner: this.accountAddress,\n spender: this.gTokenStakingAddress\n });\n console.log(` 🔍 Debug Allowance: Account=${this.accountAddress}, Allowance=${allowance}, Needed=${stakeAmount}`);\n \n const txs: { target: Address, value: bigint, data: Hex }[] = [];\n\n if (allowance < stakeAmount) {\n const approveData = encodeFunctionData({\n abi: [{name:'approve', type:'function', inputs:[{type:'address'},{type:'uint256'}], outputs:[{type:'bool'}], stateMutability:'nonpayable'}],\n functionName: 'approve',\n args: [this.gTokenStakingAddress, parseEther('1000')]\n });\n txs.push({ target: this.gTokenAddress, value: 0n, data: approveData });\n }\n\n // 2. Construct Register Call\n // struct EndUserRoleData { address account; address community; string avatarURI; string ensName; uint256 stakeAmount; }\n const roleData = encodeAbiParameters(\n [\n { type: 'address', name: 'account' },\n { type: 'address', name: 'community' },\n { type: 'string', name: 'avatarURI' },\n { type: 'string', name: 'ensName' },\n { type: 'uint256', name: 'stakeAmount' }\n ],\n [\n this.accountAddress,\n communityAddress,\n '',\n '',\n stakeAmount\n ]\n );\n\n const registerData = encodeFunctionData({\n abi: [{ name: 'registerRoleSelf', type: 'function', inputs: [{type:'bytes32'}, {type:'bytes'}], outputs: [{type:'uint256'}], stateMutability: 'nonpayable' }],\n functionName: 'registerRoleSelf',\n args: [ROLE_ENDUSER, roleData]\n });\n \n txs.push({ target: this.registryAddress, value: 0n, data: registerData });\n \n console.log(` 🔍 Debug Onboard: Community=${communityAddress}, AA=${this.accountAddress}, Stake=${stakeAmount}`);\n console.log(` 🔍 Debug Batch: Txs=${txs.length}, Targets=${txs.map(t => t.target)}`);\n\n // 3. Execute separately for stability (Batch execution has issues on current AA deployment)\n const hashes: Hash[] = [];\n for (const tx of txs) {\n const h = await this.execute(tx.target, tx.value, tx.data, options);\n hashes.push(h);\n // Wait for each tx to ensure sequential state updates (approve -> register)\n await (this.getStartPublicClient() as any).waitForTransactionReceipt({ hash: h });\n }\n return hashes[hashes.length - 1];\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // 6. Gasless Execution (Advanced)\n // ========================================\n\n /**\n * Execute a transaction with Gasless Sponsorship\n */\n async executeGasless(params: {\n target: Address;\n value: bigint;\n data: Hex;\n paymaster: Address;\n paymasterType: 'V4' | 'Super';\n operator?: Address; // Added for SuperPaymaster\n maxRate?: bigint; // Added for SuperPaymaster\n }, options?: TransactionOptions): Promise<Hash> {\n try {\n const client = this.bundlerClient ? this.bundlerClient.extend(bundlerActions) : (this.client as any).extend(bundlerActions);\n \n const ep = this.requireEntryPoint();\n \n // 1. Prepare Call Data\n const callData = encodeFunctionData({\n abi: [{ name: 'execute', type: 'function', inputs: [{ name: 'dest', type: 'address' }, { name: 'value', type: 'uint256' }, { name: 'func', type: 'bytes' }], outputs: [] }],\n functionName: 'execute',\n args: [params.target, params.value, params.data]\n });\n\n // 3. Delegate to PaymasterClient for v0.7 Gasless Submission\n // This ensures we follow the exact same logic as successful demo scripts\n // We dynamic import to avoid circular dependencies if any\n const { PaymasterClient: SDKPaymasterClient } = await import('@aastar/paymaster');\n \n let verificationGasLimit: bigint | undefined;\n let paymasterVerificationGasLimit: bigint | undefined;\n let paymasterPostOpGasLimit: bigint | undefined;\n let autoEstimate = true;\n\n if (params.paymasterType === 'Super') {\n // Apply Smart Buffer Strategy via PaymasterUtils (Same as SuperPaymasterClient)\n const { tuneGasLimit } = await import('@aastar/paymaster');\n \n const est = await SDKPaymasterClient.estimateUserOperationGas(\n this.client,\n this.client, \n this.accountAddress,\n ep,\n params.paymaster,\n params.target, // placeholder\n this.bundlerClient?.transport?.url || (this.client.transport as any).url || '', \n callData,\n {\n operator: params.operator,\n factory: undefined,\n factoryData: undefined\n }\n );\n \n // Matches SuperPaymasterClient Logic exactly:\n const bundlerEstimate = est.paymasterVerificationGasLimit || 100000n;\n // Nominal 60k, Efficiency 0.45\n paymasterVerificationGasLimit = tuneGasLimit(bundlerEstimate, 60_000n, 0.45);\n \n // Safety Pad for VGL (Moderate, not 1M)\n const SAFETY_PAD = 80000n;\n verificationGasLimit = est.verificationGasLimit + SAFETY_PAD;\n \n // SuperPaymaster postOp calls burnFromWithOpHash (~40k gas) + storage writes.\n // Add 100k buffer; floor at 200k to prevent OOG. Pure BigInt to avoid Number precision loss.\n const _postOpBase = est.paymasterPostOpGasLimit + 100_000n;\n paymasterPostOpGasLimit = _postOpBase > 200_000n ? _postOpBase : 200_000n;\n \n autoEstimate = false; // logic handled\n }\n\n const txHash = await SDKPaymasterClient.submitGaslessUserOperation(\n this.client,\n this.client, // WalletClient acts as signer\n this.accountAddress,\n ep,\n params.paymaster,\n params.target, // placeholder for token if V4\n this.bundlerClient?.transport?.url || (this.client.transport as any).url || '', \n callData,\n {\n operator: params.operator,\n autoEstimate, \n verificationGasLimit,\n paymasterVerificationGasLimit,\n paymasterPostOpGasLimit\n }\n );\n\n return txHash;\n } catch (error: any) {\n console.error(\" ❌ executeGasless Error:\", error.message);\n throw error;\n }\n }\n}\n"]}
@@ -55,12 +55,12 @@ var CANONICAL_ADDRESSES = {
55
55
  // --- Sepolia (Chain ID: 11155111) ---
56
56
  // Source of truth: SuperPaymaster repo `deployments/config.sepolia.json`
57
57
  // AirAccount repo docs/e2e/E2E_TESTDATA_v0.18.0-beta.2.md
58
- // Latest sync: 2026-06-16SuperPaymaster v5.4.0-beta.1-redeploy (fresh Sepolia
59
- // redeploy, deployments/config.sepolia.json updateTime 2026-06-16) + AirAccount
60
- // contracts v0.19.0-beta.2 (pin only; surface identical to v0.18.0-beta.2, same addresses).
58
+ // Latest sync: 2026-06-20AirAccount contracts v0.20.0 (P-256/WebAuthn guardian + recovery
59
+ // relocated to AirAccountExtension; FULL Sepolia redeploy, docs/DEPLOYMENT-v0.20.0.md).
60
+ // SuperPaymaster remains v5.4.0-beta.1-redeploy (deployments/config.sepolia.json 2026-06-16).
61
61
  // SP proxy 0x0300... (impl 0x24a945...), Registry 0x3F92... (impl 0x177033...)
62
62
  // v5.4 keys: x402Facilitator 0x326Fc3..., policyRegistry 0x8c2488..., timelockController 0xB734df...
63
- // AirAccount v0.19.0-beta.2 factory 0x1b69... (NEW ctor: impl injected as arg 1).
63
+ // AirAccount v0.20.0 factory 0x99C9300d... (NEW ctor: impl injected as arg 1).
64
64
  // NOTE: #60 syncs the v0.18 read-layer + addresses ONLY; v0.18 runtime-signing
65
65
  // behavioral changes (BLS packer / #45 hash_to_curve binding) are a separate follow-up.
66
66
  // NOTE: `paymasterV4` below is a per-community AOA proxy (not in core config);
@@ -97,36 +97,39 @@ var CANONICAL_ADDRESSES = {
97
97
  agentReputationRegistry: "0x8004B663056A597Dffe9eCcC1965A193B7388713",
98
98
  // ERC-8004 agent validation registry (SP v5.4) — present in SP config.
99
99
  agentValidationRegistry: "0x8004Cb1BF31DAf7788923b405b754f57acEB4272",
100
- // --- AirAccount v0.19.0-beta.2 stack (FULL Sepolia redeploy 2026-06-16) ---
101
- // v0.19 has NO new Solidity logic (feature set identical to v0.18.0-beta.2), but it
102
- // bumped ACCOUNT_VERSION/FACTORY_VERSION/accountId() "0.19.0", which changes bytecode
103
- // and therefore redeployed the ENTIRE stack to fresh addresses. All 11 below moved —
104
- // the v0.18.0-beta.2 addresses are now stale. Verified by the v0.19 36-scenario on-chain
105
- // E2E (Safe-guardian recovery #42 + KMS contract-side #67) + DVT real-node validate=0.
106
- // Source of truth: AirAccount repo CHANGELOG.md [v0.19.0-beta.2] "Deployed (Sepolia 2026-06-16)".
107
- // NOTE: factory ctor is NEW impl injected as arg 1.
108
- aaStarBLSAlgorithm: "0x68c381Ad3A2e3380F22840008027E9Ec2783F43A",
109
- // v0.19.0-beta.2 (#45 on-chain hash_to_curve; Ownable2Step; aggregator() getter)
110
- aaStarValidator: "0xC20A986Bcd5bF5Cc2fE5fFde6b155B8419E0389e",
111
- // v0.19.0-beta.2 (ValidatorRouter, set-once validator)
112
- aaStarBLSAggregator: "0x77f7bf95B8602b7851f392F412257539242947e0",
113
- // v0.19.0-beta.2 (new ctor (blsAlgorithm, entryPoint))
114
- sessionKeyValidator: "0x70de2e36004d6Ddc24DEB80e1Ef76c03EdC0c2AE",
115
- // v0.19.0-beta.2 (cap + velocity)
116
- forceExitModule: "0xd882a16Ea37Be463D1885EF4a397Dbbf157dC211",
117
- // v0.19.0-beta.2 (TOCTOU re-verify)
118
- airAccountDelegate: "0xA8D7f70c9D36bC4a4eb14F0dCEE19053FCB3309f",
119
- // v0.19.0-beta.2
120
- calldataParserRegistry: "0xb8Af1C039dF88F6bD9fE36Ca683492a3c09e7D17",
121
- // v0.19.0-beta.2
122
- airAccountFactoryV7: "0x52c5190E7308Ea9B149157FF016cC99B6C6bf984",
123
- // v0.19.0-beta.2 (NEW ctor: implementation injected as arg 1)
124
- airAccountV7Impl: "0x7fe62d512f0b8238DE6Ff17175DcE40eA312bBF2",
125
- // v0.19.0-beta.2
126
- airAccountExtension: "0xD61C0F3DE6D98070E9986743d35A56d56855A249",
127
- // v0.19.0-beta.2 (module-install timelock)
128
- agentRegistry: "0x3895b3E6fEf4e121E6289dC7881A0eEd5283C652",
129
- // v0.19.0-beta.2 (bindFactory set-once)
100
+ // --- AirAccount v0.20.0 stack (FULL Sepolia redeploy 2026-06-20) ---
101
+ // v0.20.0 ships first-class P-256/WebAuthn guardian support (#119) and a diamond-lite
102
+ // refactor that relocates the cold ECDSA recovery path (propose/approve/execute/cancel)
103
+ // into AirAccountExtension, reached via the V7 fallback→delegatecall boundary (frees the
104
+ // main-account runtime from 11 B 1,258 B under EIP-170). The version bump
105
+ // (ACCOUNT_VERSION/FACTORY_VERSION "0.20.0") changes bytecode and therefore redeployed
106
+ // the ENTIRE stack to fresh addresses — all 11 below moved; the v0.19.0-beta.2 addresses
107
+ // are now stale. The recovery event topic0 (RecoveryProposed/Approved/CancelVoted) also
108
+ // changed (trailing uint8 guardianIdx). P-256 guardian feature is Batch 2 (SDK stubbed).
109
+ // Source of truth: AirAccount repo docs/DEPLOYMENT-v0.20.0.md "Core addresses"
110
+ // (Sepolia 2026-06-20). NOTE: factory ctor is NEW — impl injected as arg 1.
111
+ aaStarBLSAlgorithm: "0xAF525A161CB17e0A1b6254ef0B8d8473bdA05174",
112
+ // v0.20.0 (algId 0x01)
113
+ aaStarValidator: "0xfcDfd17a373E037c3F9C8ffE2c781915E7Ae6e11",
114
+ // v0.20.0 (ValidatorRouter, set-once validator)
115
+ aaStarBLSAggregator: "0x35775df9a4f4dB42Ea0C46118a12dDd0cEc70609",
116
+ // v0.20.0
117
+ sessionKeyValidator: "0x6810CfB7c72D16e044a17694fAa8076e517264D0",
118
+ // v0.20.0 (algId 0x08)
119
+ forceExitModule: "0x3fDe77868b74a7979A40a2293a1CD265fbe66EEc",
120
+ // v0.20.0
121
+ airAccountDelegate: "0xd2735E54C5f5f2BF523b8a9ddd0E183624c3f2c0",
122
+ // v0.20.0
123
+ calldataParserRegistry: "0x7dEea4544446826601014bD94d0F6432A67496F5",
124
+ // v0.20.0
125
+ airAccountFactoryV7: "0x99C9300d52EDD9f4B7135DEd1811fBa6FFa1DDC6",
126
+ // v0.20.0 (NEW ctor: implementation injected as arg 1)
127
+ airAccountV7Impl: "0xd51db7eB20FF99c8588281CBe1785681Bb17D473",
128
+ // v0.20.0
129
+ airAccountExtension: "0x5529f50811814E0a4966cFC21200DCeF9C3FCb5B",
130
+ // v0.20.0 (auto-deployed by impl ctor; recovery + P-256 guardian surface)
131
+ agentRegistry: "0xbcE1163817EEBA2E07d39424427B10937bF1D121",
132
+ // v0.20.0 (bindFactory set-once)
130
133
  // SP v5.4 PolicyRegistry (DVT layer-1), deployed on Sepolia.
131
134
  // Source of truth: SuperPaymaster repo deployments/config.sepolia.json (v5.4.0-beta.1).
132
135
  policyRegistry: "0x8c2488d46d5447418558c38AA6441720df656094",
@@ -389,5 +392,5 @@ exports.describeSupportedChains = describeSupportedChains;
389
392
  exports.getCanonicalAddresses = getCanonicalAddresses;
390
393
  exports.isSupportedChainId = isSupportedChainId;
391
394
  exports.listSupportedChainIds = listSupportedChainIds;
392
- //# sourceMappingURL=chunk-S5IKOOUR.cjs.map
393
- //# sourceMappingURL=chunk-S5IKOOUR.cjs.map
395
+ //# sourceMappingURL=chunk-MXJEULSE.cjs.map
396
+ //# sourceMappingURL=chunk-MXJEULSE.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-MXJEULSE.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 * 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"]}