@aastar/sdk 0.20.9 → 0.21.1

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 (117) hide show
  1. package/dist/UserClient-2JL52CNK.js +6 -0
  2. package/dist/{UserClient-AIIHB54I.js.map → UserClient-2JL52CNK.js.map} +1 -1
  3. package/dist/UserClient-QM2CQVRM.cjs +15 -0
  4. package/dist/{UserClient-2J6XMTNV.cjs.map → UserClient-QM2CQVRM.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-IC3G6YM2.js → chunk-6OWZOTE7.js} +113 -9
  22. package/dist/chunk-6OWZOTE7.js.map +1 -0
  23. package/dist/{chunk-FTJD2DWE.cjs → chunk-CIEYY3A6.cjs} +870 -83
  24. package/dist/chunk-CIEYY3A6.cjs.map +1 -0
  25. package/dist/{chunk-BN5WY5GM.js → chunk-DQBKE4ND.js} +4 -4
  26. package/dist/{chunk-BN5WY5GM.js.map → chunk-DQBKE4ND.js.map} +1 -1
  27. package/dist/{chunk-4EZD7LPE.js → chunk-E4CQFW75.js} +3 -3
  28. package/dist/{chunk-4EZD7LPE.js.map → chunk-E4CQFW75.js.map} +1 -1
  29. package/dist/{chunk-LXWIPTPX.js → chunk-ENSMYCU6.js} +3 -3
  30. package/dist/{chunk-LXWIPTPX.js.map → chunk-ENSMYCU6.js.map} +1 -1
  31. package/dist/{chunk-FJ7XECC5.js → chunk-EY2AJTGV.js} +3 -3
  32. package/dist/{chunk-FJ7XECC5.js.map → chunk-EY2AJTGV.js.map} +1 -1
  33. package/dist/{chunk-WQREDGUF.cjs → chunk-HT6LGLDM.cjs} +26 -26
  34. package/dist/{chunk-WQREDGUF.cjs.map → chunk-HT6LGLDM.cjs.map} +1 -1
  35. package/dist/{chunk-MRREGCWN.cjs → chunk-IJN776TA.cjs} +32 -32
  36. package/dist/{chunk-MRREGCWN.cjs.map → chunk-IJN776TA.cjs.map} +1 -1
  37. package/dist/{chunk-2RCJBWPO.cjs → chunk-IZN2COBP.cjs} +33 -17
  38. package/dist/chunk-IZN2COBP.cjs.map +1 -0
  39. package/dist/{chunk-TENYCMJ3.js → chunk-JYHDAOUT.js} +9 -9
  40. package/dist/{chunk-TENYCMJ3.js.map → chunk-JYHDAOUT.js.map} +1 -1
  41. package/dist/{chunk-PKCHRXFR.js → chunk-KZERVPUR.js} +3 -3
  42. package/dist/{chunk-PKCHRXFR.js.map → chunk-KZERVPUR.js.map} +1 -1
  43. package/dist/{chunk-6QYXGMCR.js → chunk-M5WFKETT.js} +833 -47
  44. package/dist/{chunk-FTJD2DWE.cjs.map → chunk-M5WFKETT.js.map} +1 -1
  45. package/dist/{chunk-HSVQIFIK.cjs → chunk-M7HXR7G5.cjs} +5 -5
  46. package/dist/{chunk-HSVQIFIK.cjs.map → chunk-M7HXR7G5.cjs.map} +1 -1
  47. package/dist/{chunk-MVEWJIPY.js → chunk-MKUILC7J.js} +25 -9
  48. package/dist/chunk-MKUILC7J.js.map +1 -0
  49. package/dist/{chunk-S5IKOOUR.cjs → chunk-MXJEULSE.cjs} +39 -36
  50. package/dist/chunk-MXJEULSE.cjs.map +1 -0
  51. package/dist/{chunk-TFLZETWB.cjs → chunk-OVNOSAL3.cjs} +113 -9
  52. package/dist/chunk-OVNOSAL3.cjs.map +1 -0
  53. package/dist/{chunk-GX7NROST.cjs → chunk-PED7PJQZ.cjs} +16 -16
  54. package/dist/{chunk-GX7NROST.cjs.map → chunk-PED7PJQZ.cjs.map} +1 -1
  55. package/dist/{chunk-G3UJC4EL.js → chunk-UCLK6LTB.js} +39 -36
  56. package/dist/chunk-UCLK6LTB.js.map +1 -0
  57. package/dist/{chunk-PAABYXS6.js → chunk-UP2S7C7R.js} +6 -6
  58. package/dist/{chunk-PAABYXS6.js.map → chunk-UP2S7C7R.js.map} +1 -1
  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.d.cts +13 -0
  91. package/dist/paymaster.d.ts +13 -0
  92. package/dist/paymaster.js +3 -3
  93. package/dist/{src-X5MIV3EB.js → src-CTYY6FNI.js} +5 -5
  94. package/dist/src-CTYY6FNI.js.map +1 -0
  95. package/dist/{src-TQKEO2I4.cjs → src-CUHI6G6W.cjs} +229 -225
  96. package/dist/src-CUHI6G6W.cjs.map +1 -0
  97. package/dist/{src-ENPA7D2S.cjs → src-X5IECEPM.cjs} +18 -18
  98. package/dist/src-X5IECEPM.cjs.map +1 -0
  99. package/dist/{src-L5SI5WNB.js → src-XCV6BTSV.js} +4 -4
  100. package/dist/{src-X5MIV3EB.js.map → src-XCV6BTSV.js.map} +1 -1
  101. package/dist/tokens.cjs +4 -4
  102. package/dist/tokens.js +3 -3
  103. package/dist/x402.cjs +26 -26
  104. package/dist/x402.js +3 -3
  105. package/package.json +113 -29
  106. package/dist/UserClient-2J6XMTNV.cjs +0 -15
  107. package/dist/UserClient-AIIHB54I.js +0 -6
  108. package/dist/chunk-2RCJBWPO.cjs.map +0 -1
  109. package/dist/chunk-6QYXGMCR.js.map +0 -1
  110. package/dist/chunk-G3UJC4EL.js.map +0 -1
  111. package/dist/chunk-IC3G6YM2.js.map +0 -1
  112. package/dist/chunk-MVEWJIPY.js.map +0 -1
  113. package/dist/chunk-S5IKOOUR.cjs.map +0 -1
  114. package/dist/chunk-TFLZETWB.cjs.map +0 -1
  115. package/dist/src-ENPA7D2S.cjs.map +0 -1
  116. package/dist/src-L5SI5WNB.js.map +0 -1
  117. package/dist/src-TQKEO2I4.cjs.map +0 -1
@@ -1,10 +1,10 @@
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 accountAbstraction = require('viem/account-abstraction');
6
6
 
7
- var UserClient = class extends chunkFTJD2DWE_cjs.BaseClient {
7
+ var UserClient = class extends chunkCIEYY3A6_cjs.BaseClient {
8
8
  accountAddress;
9
9
  sbtAddress;
10
10
  entryPointAddress;
@@ -31,7 +31,7 @@ var UserClient = class extends chunkFTJD2DWE_cjs.BaseClient {
31
31
  * @returns Object containing the deployed account address and transaction hash
32
32
  */
33
33
  static async deployAccount(client, params) {
34
- const { accountFactoryActions, SimpleAccountFactoryABI } = await import('./src-TQKEO2I4.cjs');
34
+ const { accountFactoryActions, SimpleAccountFactoryABI } = await import('./src-CUHI6G6W.cjs');
35
35
  let abi = params.customAbi || (SimpleAccountFactoryABI?.abi || SimpleAccountFactoryABI);
36
36
  const factoryAddr = params.factoryAddress || "0x9406Cc6185a346906296840746125a0E44976454";
37
37
  const salt = params.salt || 0n;
@@ -89,7 +89,7 @@ var UserClient = class extends chunkFTJD2DWE_cjs.BaseClient {
89
89
  if (!this.entryPointAddress) {
90
90
  throw new Error("EntryPoint address required for this client");
91
91
  }
92
- const entryPoint = chunkFTJD2DWE_cjs.entryPointActions(this.entryPointAddress);
92
+ const entryPoint = chunkCIEYY3A6_cjs.entryPointActions(this.entryPointAddress);
93
93
  return await entryPoint(this.getStartPublicClient()).getNonce({
94
94
  sender: this.accountAddress,
95
95
  key
@@ -103,7 +103,7 @@ var UserClient = class extends chunkFTJD2DWE_cjs.BaseClient {
103
103
  */
104
104
  async getOwner() {
105
105
  try {
106
- const account = chunkFTJD2DWE_cjs.accountActions(this.accountAddress);
106
+ const account = chunkCIEYY3A6_cjs.accountActions(this.accountAddress);
107
107
  return await account(this.getStartPublicClient()).owner();
108
108
  } catch (error) {
109
109
  throw error;
@@ -114,7 +114,7 @@ var UserClient = class extends chunkFTJD2DWE_cjs.BaseClient {
114
114
  */
115
115
  async execute(target, value, data, options) {
116
116
  try {
117
- const account = chunkFTJD2DWE_cjs.accountActions(this.accountAddress);
117
+ const account = chunkCIEYY3A6_cjs.accountActions(this.accountAddress);
118
118
  return await account(this.client).execute({
119
119
  dest: target,
120
120
  value,
@@ -130,7 +130,7 @@ var UserClient = class extends chunkFTJD2DWE_cjs.BaseClient {
130
130
  */
131
131
  async executeBatch(targets, values, datas, options) {
132
132
  try {
133
- const account = chunkFTJD2DWE_cjs.accountActions(this.accountAddress);
133
+ const account = chunkCIEYY3A6_cjs.accountActions(this.accountAddress);
134
134
  return await account(this.client).executeBatch({
135
135
  dest: targets,
136
136
  value: values,
@@ -150,7 +150,7 @@ var UserClient = class extends chunkFTJD2DWE_cjs.BaseClient {
150
150
  async getSBTBalance() {
151
151
  try {
152
152
  if (!this.sbtAddress) throw new Error("SBT address required for this client");
153
- const sbt = chunkFTJD2DWE_cjs.sbtActions(this.sbtAddress);
153
+ const sbt = chunkCIEYY3A6_cjs.sbtActions(this.sbtAddress);
154
154
  return await sbt(this.getStartPublicClient()).balanceOf({
155
155
  owner: this.accountAddress
156
156
  });
@@ -193,7 +193,7 @@ var UserClient = class extends chunkFTJD2DWE_cjs.BaseClient {
193
193
  */
194
194
  async getTokenBalance(token) {
195
195
  try {
196
- const tokens = chunkFTJD2DWE_cjs.tokenActions()(this.getStartPublicClient());
196
+ const tokens = chunkCIEYY3A6_cjs.tokenActions()(this.getStartPublicClient());
197
197
  return await tokens.balanceOf({
198
198
  token,
199
199
  account: this.accountAddress
@@ -239,7 +239,7 @@ var UserClient = class extends chunkFTJD2DWE_cjs.BaseClient {
239
239
  async getStakedBalance(roleId) {
240
240
  try {
241
241
  if (!this.gTokenStakingAddress) throw new Error("GTokenStaking address required for this client");
242
- const staking = chunkFTJD2DWE_cjs.stakingActions(this.gTokenStakingAddress);
242
+ const staking = chunkCIEYY3A6_cjs.stakingActions(this.gTokenStakingAddress);
243
243
  return await staking(this.getStartPublicClient()).getLockedStake({
244
244
  user: this.accountAddress,
245
245
  roleId
@@ -290,9 +290,9 @@ var UserClient = class extends chunkFTJD2DWE_cjs.BaseClient {
290
290
  if (!this.gTokenAddress) throw new Error("GToken address required for this client");
291
291
  const { encodeAbiParameters, keccak256, toBytes, parseEther } = await import('viem');
292
292
  const ROLE_ENDUSER = keccak256(toBytes("ENDUSER"));
293
- const registry = chunkFTJD2DWE_cjs.registryActions(this.registryAddress);
293
+ const registry = chunkCIEYY3A6_cjs.registryActions(this.registryAddress);
294
294
  const publicClient = this.getStartPublicClient();
295
- const tokens = chunkFTJD2DWE_cjs.tokenActions()(publicClient);
295
+ const tokens = chunkCIEYY3A6_cjs.tokenActions()(publicClient);
296
296
  const allowance = await tokens.allowance({
297
297
  token: this.gTokenAddress,
298
298
  owner: this.accountAddress,
@@ -358,13 +358,13 @@ var UserClient = class extends chunkFTJD2DWE_cjs.BaseClient {
358
358
  functionName: "execute",
359
359
  args: [params.target, params.value, params.data]
360
360
  });
361
- const { PaymasterClient: SDKPaymasterClient } = await import('./src-ENPA7D2S.cjs');
361
+ const { PaymasterClient: SDKPaymasterClient } = await import('./src-X5IECEPM.cjs');
362
362
  let verificationGasLimit;
363
363
  let paymasterVerificationGasLimit;
364
364
  let paymasterPostOpGasLimit;
365
365
  let autoEstimate = true;
366
366
  if (params.paymasterType === "Super") {
367
- const { tuneGasLimit } = await import('./src-ENPA7D2S.cjs');
367
+ const { tuneGasLimit } = await import('./src-X5IECEPM.cjs');
368
368
  const est = await SDKPaymasterClient.estimateUserOperationGas(
369
369
  this.client,
370
370
  this.client,
@@ -417,5 +417,5 @@ var UserClient = class extends chunkFTJD2DWE_cjs.BaseClient {
417
417
  };
418
418
 
419
419
  exports.UserClient = UserClient;
420
- //# sourceMappingURL=chunk-GX7NROST.cjs.map
421
- //# sourceMappingURL=chunk-GX7NROST.cjs.map
420
+ //# sourceMappingURL=chunk-PED7PJQZ.cjs.map
421
+ //# sourceMappingURL=chunk-PED7PJQZ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../enduser/src/UserClient.ts"],"names":["BaseClient","encodeFunctionData","entryPointActions","accountActions","sbtActions","tokenActions","stakingActions","registryActions","bundlerActions"],"mappings":"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","file":"chunk-GX7NROST.cjs","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":["BaseClient","encodeFunctionData","entryPointActions","accountActions","sbtActions","tokenActions","stakingActions","registryActions","bundlerActions"],"mappings":"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","file":"chunk-PED7PJQZ.cjs","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"]}
@@ -53,12 +53,12 @@ var CANONICAL_ADDRESSES = {
53
53
  // --- Sepolia (Chain ID: 11155111) ---
54
54
  // Source of truth: SuperPaymaster repo `deployments/config.sepolia.json`
55
55
  // AirAccount repo docs/e2e/E2E_TESTDATA_v0.18.0-beta.2.md
56
- // Latest sync: 2026-06-16SuperPaymaster v5.4.0-beta.1-redeploy (fresh Sepolia
57
- // redeploy, deployments/config.sepolia.json updateTime 2026-06-16) + AirAccount
58
- // contracts v0.19.0-beta.2 (pin only; surface identical to v0.18.0-beta.2, same addresses).
56
+ // Latest sync: 2026-06-20AirAccount contracts v0.20.0 (P-256/WebAuthn guardian + recovery
57
+ // relocated to AirAccountExtension; FULL Sepolia redeploy, docs/DEPLOYMENT-v0.20.0.md).
58
+ // SuperPaymaster remains v5.4.0-beta.1-redeploy (deployments/config.sepolia.json 2026-06-16).
59
59
  // SP proxy 0x0300... (impl 0x24a945...), Registry 0x3F92... (impl 0x177033...)
60
60
  // v5.4 keys: x402Facilitator 0x326Fc3..., policyRegistry 0x8c2488..., timelockController 0xB734df...
61
- // AirAccount v0.19.0-beta.2 factory 0x1b69... (NEW ctor: impl injected as arg 1).
61
+ // AirAccount v0.20.0 factory 0x99C9300d... (NEW ctor: impl injected as arg 1).
62
62
  // NOTE: #60 syncs the v0.18 read-layer + addresses ONLY; v0.18 runtime-signing
63
63
  // behavioral changes (BLS packer / #45 hash_to_curve binding) are a separate follow-up.
64
64
  // NOTE: `paymasterV4` below is a per-community AOA proxy (not in core config);
@@ -95,36 +95,39 @@ var CANONICAL_ADDRESSES = {
95
95
  agentReputationRegistry: "0x8004B663056A597Dffe9eCcC1965A193B7388713",
96
96
  // ERC-8004 agent validation registry (SP v5.4) — present in SP config.
97
97
  agentValidationRegistry: "0x8004Cb1BF31DAf7788923b405b754f57acEB4272",
98
- // --- AirAccount v0.19.0-beta.2 stack (FULL Sepolia redeploy 2026-06-16) ---
99
- // v0.19 has NO new Solidity logic (feature set identical to v0.18.0-beta.2), but it
100
- // bumped ACCOUNT_VERSION/FACTORY_VERSION/accountId() "0.19.0", which changes bytecode
101
- // and therefore redeployed the ENTIRE stack to fresh addresses. All 11 below moved —
102
- // the v0.18.0-beta.2 addresses are now stale. Verified by the v0.19 36-scenario on-chain
103
- // E2E (Safe-guardian recovery #42 + KMS contract-side #67) + DVT real-node validate=0.
104
- // Source of truth: AirAccount repo CHANGELOG.md [v0.19.0-beta.2] "Deployed (Sepolia 2026-06-16)".
105
- // NOTE: factory ctor is NEW impl injected as arg 1.
106
- aaStarBLSAlgorithm: "0x68c381Ad3A2e3380F22840008027E9Ec2783F43A",
107
- // v0.19.0-beta.2 (#45 on-chain hash_to_curve; Ownable2Step; aggregator() getter)
108
- aaStarValidator: "0xC20A986Bcd5bF5Cc2fE5fFde6b155B8419E0389e",
109
- // v0.19.0-beta.2 (ValidatorRouter, set-once validator)
110
- aaStarBLSAggregator: "0x77f7bf95B8602b7851f392F412257539242947e0",
111
- // v0.19.0-beta.2 (new ctor (blsAlgorithm, entryPoint))
112
- sessionKeyValidator: "0x70de2e36004d6Ddc24DEB80e1Ef76c03EdC0c2AE",
113
- // v0.19.0-beta.2 (cap + velocity)
114
- forceExitModule: "0xd882a16Ea37Be463D1885EF4a397Dbbf157dC211",
115
- // v0.19.0-beta.2 (TOCTOU re-verify)
116
- airAccountDelegate: "0xA8D7f70c9D36bC4a4eb14F0dCEE19053FCB3309f",
117
- // v0.19.0-beta.2
118
- calldataParserRegistry: "0xb8Af1C039dF88F6bD9fE36Ca683492a3c09e7D17",
119
- // v0.19.0-beta.2
120
- airAccountFactoryV7: "0x52c5190E7308Ea9B149157FF016cC99B6C6bf984",
121
- // v0.19.0-beta.2 (NEW ctor: implementation injected as arg 1)
122
- airAccountV7Impl: "0x7fe62d512f0b8238DE6Ff17175DcE40eA312bBF2",
123
- // v0.19.0-beta.2
124
- airAccountExtension: "0xD61C0F3DE6D98070E9986743d35A56d56855A249",
125
- // v0.19.0-beta.2 (module-install timelock)
126
- agentRegistry: "0x3895b3E6fEf4e121E6289dC7881A0eEd5283C652",
127
- // v0.19.0-beta.2 (bindFactory set-once)
98
+ // --- AirAccount v0.20.0 stack (FULL Sepolia redeploy 2026-06-20) ---
99
+ // v0.20.0 ships first-class P-256/WebAuthn guardian support (#119) and a diamond-lite
100
+ // refactor that relocates the cold ECDSA recovery path (propose/approve/execute/cancel)
101
+ // into AirAccountExtension, reached via the V7 fallback→delegatecall boundary (frees the
102
+ // main-account runtime from 11 B 1,258 B under EIP-170). The version bump
103
+ // (ACCOUNT_VERSION/FACTORY_VERSION "0.20.0") changes bytecode and therefore redeployed
104
+ // the ENTIRE stack to fresh addresses — all 11 below moved; the v0.19.0-beta.2 addresses
105
+ // are now stale. The recovery event topic0 (RecoveryProposed/Approved/CancelVoted) also
106
+ // changed (trailing uint8 guardianIdx). P-256 guardian feature is Batch 2 (SDK stubbed).
107
+ // Source of truth: AirAccount repo docs/DEPLOYMENT-v0.20.0.md "Core addresses"
108
+ // (Sepolia 2026-06-20). NOTE: factory ctor is NEW — impl injected as arg 1.
109
+ aaStarBLSAlgorithm: "0xAF525A161CB17e0A1b6254ef0B8d8473bdA05174",
110
+ // v0.20.0 (algId 0x01)
111
+ aaStarValidator: "0xfcDfd17a373E037c3F9C8ffE2c781915E7Ae6e11",
112
+ // v0.20.0 (ValidatorRouter, set-once validator)
113
+ aaStarBLSAggregator: "0x35775df9a4f4dB42Ea0C46118a12dDd0cEc70609",
114
+ // v0.20.0
115
+ sessionKeyValidator: "0x6810CfB7c72D16e044a17694fAa8076e517264D0",
116
+ // v0.20.0 (algId 0x08)
117
+ forceExitModule: "0x3fDe77868b74a7979A40a2293a1CD265fbe66EEc",
118
+ // v0.20.0
119
+ airAccountDelegate: "0xd2735E54C5f5f2BF523b8a9ddd0E183624c3f2c0",
120
+ // v0.20.0
121
+ calldataParserRegistry: "0x7dEea4544446826601014bD94d0F6432A67496F5",
122
+ // v0.20.0
123
+ airAccountFactoryV7: "0x99C9300d52EDD9f4B7135DEd1811fBa6FFa1DDC6",
124
+ // v0.20.0 (NEW ctor: implementation injected as arg 1)
125
+ airAccountV7Impl: "0xd51db7eB20FF99c8588281CBe1785681Bb17D473",
126
+ // v0.20.0
127
+ airAccountExtension: "0x5529f50811814E0a4966cFC21200DCeF9C3FCb5B",
128
+ // v0.20.0 (auto-deployed by impl ctor; recovery + P-256 guardian surface)
129
+ agentRegistry: "0xbcE1163817EEBA2E07d39424427B10937bF1D121",
130
+ // v0.20.0 (bindFactory set-once)
128
131
  // SP v5.4 PolicyRegistry (DVT layer-1), deployed on Sepolia.
129
132
  // Source of truth: SuperPaymaster repo deployments/config.sepolia.json (v5.4.0-beta.1).
130
133
  policyRegistry: "0x8c2488d46d5447418558c38AA6441720df656094",
@@ -355,5 +358,5 @@ var ALL_ADDRESSES = {
355
358
  };
356
359
 
357
360
  export { AGENT_IDENTITY_REGISTRY_ADDRESS, AGENT_REPUTATION_REGISTRY_ADDRESS, ALL_ADDRESSES, APNTS_ADDRESS, BLS_AGGREGATOR_ADDRESS, BLS_VALIDATOR_ADDRESS, BPS_DENOMINATOR, CANONICAL_ADDRESSES, CHAIN_MAINNET, CHAIN_SEPOLIA, COMMUNITY_OWNERS, CONTRACT_SRC_HASH, CORE_ADDRESSES, DEFAULT_APNTS_PRICE_USD, DEFAULT_CALL_GAS_LIMIT, DEFAULT_GAS_TOKEN_MINT_AMOUNT, DEFAULT_PRE_VERIFICATION_GAS, DEFAULT_TIMEOUT_MS, DEFAULT_TOKEN_NAME, DEFAULT_TOKEN_SYMBOL, DEFAULT_USDT_MINT_AMOUNT, DEFAULT_VERIFICATION_GAS_LIMIT, DVT_VALIDATOR_ADDRESS, ENTRY_POINT_ADDRESS, FAUCET_API_URL, GTOKEN_ADDRESS, GTOKEN_STAKING_ADDRESS, MAX_SERVICE_FEE, MICRO_PAYMENT_CHANNEL_ADDRESS, MONITORING_ADDRESSES, NODE_STAKE_AMOUNTS, OFFICIAL_ADDRESSES, PAYMASTER_ADDRESSES, PAYMASTER_FACTORY_ADDRESS, PAYMASTER_V4_ADDRESS, PAYMASTER_V4_IMPL_ADDRESS, REGISTRY_ADDRESS, REPUTATION_SYSTEM_ADDRESS, SBT_ADDRESS, SERVICE_FEE_RATE, SUPER_PAYMASTER_ADDRESS, TEST_ACCOUNT_ADDRESSES, TEST_ACCOUNT_POOL_SIZE, TEST_COMMUNITIES, TEST_TOKEN_ADDRESSES, TOKEN_ADDRESSES, XPNTS_FACTORY_ADDRESS, applyConfig, describeSupportedChains, getCanonicalAddresses, isSupportedChainId, listSupportedChainIds };
358
- //# sourceMappingURL=chunk-G3UJC4EL.js.map
359
- //# sourceMappingURL=chunk-G3UJC4EL.js.map
361
+ //# sourceMappingURL=chunk-UCLK6LTB.js.map
362
+ //# sourceMappingURL=chunk-UCLK6LTB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../core/src/addresses.ts","../../core/src/constants.ts","../../core/src/contract-addresses.ts"],"names":["chainId"],"mappings":"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","file":"chunk-UCLK6LTB.js","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"]}
@@ -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-CTYY6FNI.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-CTYY6FNI.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-UP2S7C7R.js.map
419
+ //# sourceMappingURL=chunk-UP2S7C7R.js.map