@aastar/sdk 0.21.1 → 0.23.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 (110) hide show
  1. package/dist/UserClient-J3JPDIG7.cjs +15 -0
  2. package/dist/{UserClient-QM2CQVRM.cjs.map → UserClient-J3JPDIG7.cjs.map} +1 -1
  3. package/dist/UserClient-XTHQ2AP3.js +6 -0
  4. package/dist/{UserClient-2JL52CNK.js.map → UserClient-XTHQ2AP3.js.map} +1 -1
  5. package/dist/account.cjs +7 -7
  6. package/dist/account.js +2 -2
  7. package/dist/admin.cjs +3 -3
  8. package/dist/admin.js +2 -2
  9. package/dist/airaccount.cjs +117 -97
  10. package/dist/airaccount.d.cts +2 -1
  11. package/dist/airaccount.d.ts +2 -1
  12. package/dist/airaccount.js +2 -2
  13. package/dist/channel.cjs +6 -6
  14. package/dist/channel.js +2 -2
  15. package/dist/{chunk-JYHDAOUT.js → chunk-2DDWYKF2.js} +9 -9
  16. package/dist/{chunk-JYHDAOUT.js.map → chunk-2DDWYKF2.js.map} +1 -1
  17. package/dist/{chunk-3HZEIFBW.cjs → chunk-2GZMRCQW.cjs} +5 -5
  18. package/dist/{chunk-3HZEIFBW.cjs.map → chunk-2GZMRCQW.cjs.map} +1 -1
  19. package/dist/{chunk-UP2S7C7R.js → chunk-2UDF62XV.js} +6 -6
  20. package/dist/{chunk-UP2S7C7R.js.map → chunk-2UDF62XV.js.map} +1 -1
  21. package/dist/{chunk-KZERVPUR.js → chunk-2WBSYPUY.js} +3 -3
  22. package/dist/{chunk-KZERVPUR.js.map → chunk-2WBSYPUY.js.map} +1 -1
  23. package/dist/{chunk-M5WFKETT.js → chunk-5G5SB6CP.js} +1512 -66
  24. package/dist/chunk-5G5SB6CP.js.map +1 -0
  25. package/dist/{chunk-IZN2COBP.cjs → chunk-6I22EW6V.cjs} +11 -11
  26. package/dist/{chunk-IZN2COBP.cjs.map → chunk-6I22EW6V.cjs.map} +1 -1
  27. package/dist/{chunk-HT6LGLDM.cjs → chunk-6PJAHZZ2.cjs} +26 -26
  28. package/dist/{chunk-HT6LGLDM.cjs.map → chunk-6PJAHZZ2.cjs.map} +1 -1
  29. package/dist/{chunk-PED7PJQZ.cjs → chunk-CGKPULZX.cjs} +16 -16
  30. package/dist/{chunk-PED7PJQZ.cjs.map → chunk-CGKPULZX.cjs.map} +1 -1
  31. package/dist/{chunk-MKUILC7J.js → chunk-D23CZFOM.js} +3 -3
  32. package/dist/{chunk-MKUILC7J.js.map → chunk-D23CZFOM.js.map} +1 -1
  33. package/dist/{chunk-Z4GZ6DQA.cjs → chunk-E37CPC2U.cjs} +9 -9
  34. package/dist/{chunk-Z4GZ6DQA.cjs.map → chunk-E37CPC2U.cjs.map} +1 -1
  35. package/dist/{chunk-EY2AJTGV.js → chunk-EZC7Q3SG.js} +3 -3
  36. package/dist/{chunk-EY2AJTGV.js.map → chunk-EZC7Q3SG.js.map} +1 -1
  37. package/dist/{chunk-5NKU5NT5.js → chunk-H5EQBNC6.js} +8 -8
  38. package/dist/{chunk-5NKU5NT5.js.map → chunk-H5EQBNC6.js.map} +1 -1
  39. package/dist/{chunk-OVNOSAL3.cjs → chunk-LAZA3JD7.cjs} +182 -6
  40. package/dist/chunk-LAZA3JD7.cjs.map +1 -0
  41. package/dist/{chunk-CIEYY3A6.cjs → chunk-MFBTMF5U.cjs} +1541 -64
  42. package/dist/chunk-MFBTMF5U.cjs.map +1 -0
  43. package/dist/{chunk-E4CQFW75.js → chunk-PFMCPSS4.js} +3 -3
  44. package/dist/{chunk-E4CQFW75.js.map → chunk-PFMCPSS4.js.map} +1 -1
  45. package/dist/{chunk-IJN776TA.cjs → chunk-PKYWLTIJ.cjs} +32 -32
  46. package/dist/{chunk-IJN776TA.cjs.map → chunk-PKYWLTIJ.cjs.map} +1 -1
  47. package/dist/{chunk-ENSMYCU6.js → chunk-SXLWFZFX.js} +3 -3
  48. package/dist/{chunk-ENSMYCU6.js.map → chunk-SXLWFZFX.js.map} +1 -1
  49. package/dist/{chunk-57XLR2NT.js → chunk-TM2LH4ZE.js} +3 -3
  50. package/dist/{chunk-57XLR2NT.js.map → chunk-TM2LH4ZE.js.map} +1 -1
  51. package/dist/{chunk-DQBKE4ND.js → chunk-UMTCWOQV.js} +4 -4
  52. package/dist/{chunk-DQBKE4ND.js.map → chunk-UMTCWOQV.js.map} +1 -1
  53. package/dist/{chunk-5JFYTJOE.cjs → chunk-UQMMEDHO.cjs} +4 -4
  54. package/dist/{chunk-5JFYTJOE.cjs.map → chunk-UQMMEDHO.cjs.map} +1 -1
  55. package/dist/{chunk-M7HXR7G5.cjs → chunk-UULR2KA6.cjs} +5 -5
  56. package/dist/{chunk-M7HXR7G5.cjs.map → chunk-UULR2KA6.cjs.map} +1 -1
  57. package/dist/{chunk-6OWZOTE7.js → chunk-V65JXHM6.js} +178 -7
  58. package/dist/chunk-V65JXHM6.js.map +1 -0
  59. package/dist/{chunk-WR4OZUXR.cjs → chunk-W4ENVPZH.cjs} +6 -6
  60. package/dist/{chunk-WR4OZUXR.cjs.map → chunk-W4ENVPZH.cjs.map} +1 -1
  61. package/dist/{chunk-Y4EJX7UA.cjs → chunk-XFJSY5LG.cjs} +12 -12
  62. package/dist/{chunk-Y4EJX7UA.cjs.map → chunk-XFJSY5LG.cjs.map} +1 -1
  63. package/dist/core.cjs +295 -171
  64. package/dist/core.d.cts +329 -507
  65. package/dist/core.d.ts +329 -507
  66. package/dist/core.js +1 -1
  67. package/dist/dapp.cjs +5 -5
  68. package/dist/dapp.js +2 -2
  69. package/dist/enduser.cjs +6 -6
  70. package/dist/enduser.js +3 -3
  71. package/dist/identity.cjs +5 -5
  72. package/dist/identity.js +2 -2
  73. package/dist/index.cjs +396 -272
  74. package/dist/index.d.cts +4 -2
  75. package/dist/index.d.ts +4 -2
  76. package/dist/index.js +15 -15
  77. package/dist/initConfig-D8jgrcDb.d.cts +518 -0
  78. package/dist/initConfig-D8jgrcDb.d.ts +518 -0
  79. package/dist/kms.cjs +117 -97
  80. package/dist/kms.d.cts +183 -3
  81. package/dist/kms.d.ts +183 -3
  82. package/dist/kms.js +2 -2
  83. package/dist/operator.cjs +6 -6
  84. package/dist/operator.js +2 -2
  85. package/dist/paymaster.cjs +15 -15
  86. package/dist/paymaster.js +2 -2
  87. package/dist/src-2P72LYVT.js +5 -0
  88. package/dist/src-2P72LYVT.js.map +1 -0
  89. package/dist/{src-CUHI6G6W.cjs → src-4Q2WFLO2.cjs} +297 -173
  90. package/dist/src-4Q2WFLO2.cjs.map +1 -0
  91. package/dist/{src-X5IECEPM.cjs → src-HECKBVR2.cjs} +17 -17
  92. package/dist/src-HECKBVR2.cjs.map +1 -0
  93. package/dist/{src-CTYY6FNI.js → src-KLP4Q2Y3.js} +4 -4
  94. package/dist/src-KLP4Q2Y3.js.map +1 -0
  95. package/dist/tokens.cjs +3 -3
  96. package/dist/tokens.js +2 -2
  97. package/dist/x402.cjs +25 -25
  98. package/dist/x402.js +2 -2
  99. package/package.json +1 -1
  100. package/dist/UserClient-2JL52CNK.js +0 -6
  101. package/dist/UserClient-QM2CQVRM.cjs +0 -15
  102. package/dist/chunk-6OWZOTE7.js.map +0 -1
  103. package/dist/chunk-CIEYY3A6.cjs.map +0 -1
  104. package/dist/chunk-M5WFKETT.js.map +0 -1
  105. package/dist/chunk-OVNOSAL3.cjs.map +0 -1
  106. package/dist/src-CTYY6FNI.js.map +0 -1
  107. package/dist/src-CUHI6G6W.cjs.map +0 -1
  108. package/dist/src-X5IECEPM.cjs.map +0 -1
  109. package/dist/src-XCV6BTSV.js +0 -5
  110. package/dist/src-XCV6BTSV.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkCIEYY3A6_cjs = require('./chunk-CIEYY3A6.cjs');
3
+ var chunkMFBTMF5U_cjs = require('./chunk-MFBTMF5U.cjs');
4
4
  var viem = require('viem');
5
5
 
6
- var CommunityClient = class extends chunkCIEYY3A6_cjs.BaseClient {
6
+ var CommunityClient = class extends chunkMFBTMF5U_cjs.BaseClient {
7
7
  sbtAddress;
8
8
  factoryAddress;
9
9
  reputationAddress;
@@ -28,7 +28,7 @@ var CommunityClient = class extends chunkCIEYY3A6_cjs.BaseClient {
28
28
  if (!this.factoryAddress) {
29
29
  throw new Error("Factory address required for this client");
30
30
  }
31
- const factory = chunkCIEYY3A6_cjs.xPNTsFactoryActions(this.factoryAddress);
31
+ const factory = chunkMFBTMF5U_cjs.xPNTsFactoryActions(this.factoryAddress);
32
32
  return await factory(this.client).createToken({
33
33
  name: params.name,
34
34
  symbol: params.tokenSymbol,
@@ -47,7 +47,7 @@ var CommunityClient = class extends chunkCIEYY3A6_cjs.BaseClient {
47
47
  try {
48
48
  const target = communityAddress || this.getAddress();
49
49
  const registryAddr = this.requireRegistry();
50
- const registry = chunkCIEYY3A6_cjs.registryActions(registryAddr);
50
+ const registry = chunkMFBTMF5U_cjs.registryActions(registryAddr);
51
51
  const publicClient = this.getStartPublicClient();
52
52
  const API_ROLE_COMMUNITY = await registry(publicClient).ROLE_COMMUNITY();
53
53
  let metadataHex;
@@ -105,12 +105,12 @@ var CommunityClient = class extends chunkCIEYY3A6_cjs.BaseClient {
105
105
  async registerAsCommunity(params, options) {
106
106
  try {
107
107
  const registryAddr = this.requireRegistry();
108
- const registry = chunkCIEYY3A6_cjs.registryActions(registryAddr);
108
+ const registry = chunkMFBTMF5U_cjs.registryActions(registryAddr);
109
109
  const gTokenStakingAddr = this.requireGTokenStaking();
110
110
  const gTokenAddr = this.requireGToken();
111
111
  const roleCommunity = await registry(this.getStartPublicClient()).ROLE_COMMUNITY();
112
112
  const stakeAmount = params.stakeAmount || viem.parseEther("30");
113
- const gToken = chunkCIEYY3A6_cjs.tokenActions();
113
+ const gToken = chunkMFBTMF5U_cjs.tokenActions();
114
114
  const allowance = await gToken(this.getStartPublicClient()).allowance({
115
115
  token: gTokenAddr,
116
116
  owner: this.getAddress(),
@@ -153,7 +153,7 @@ var CommunityClient = class extends chunkCIEYY3A6_cjs.BaseClient {
153
153
  async setupCommunity(params, options) {
154
154
  const hashes = [];
155
155
  let tokenAddress = "0x0000000000000000000000000000000000000000";
156
- const registry = chunkCIEYY3A6_cjs.registryActions(this.requireRegistry())(this.getStartPublicClient());
156
+ const registry = chunkMFBTMF5U_cjs.registryActions(this.requireRegistry())(this.getStartPublicClient());
157
157
  const ROLE_COMMUNITY = await registry.ROLE_COMMUNITY();
158
158
  const hasRole = await registry.hasRole({ roleId: ROLE_COMMUNITY, user: this.getAddress() });
159
159
  if (!hasRole) {
@@ -170,7 +170,7 @@ var CommunityClient = class extends chunkCIEYY3A6_cjs.BaseClient {
170
170
  await this.getStartPublicClient().waitForTransactionReceipt({ hash: hReg });
171
171
  }
172
172
  if (this.factoryAddress) {
173
- const factoryReader = chunkCIEYY3A6_cjs.xPNTsFactoryActions(this.factoryAddress)(this.getStartPublicClient());
173
+ const factoryReader = chunkMFBTMF5U_cjs.xPNTsFactoryActions(this.factoryAddress)(this.getStartPublicClient());
174
174
  const existingToken = await factoryReader.getTokenAddress({ community: this.getAddress() });
175
175
  if (existingToken && existingToken !== "0x0000000000000000000000000000000000000000") {
176
176
  tokenAddress = existingToken;
@@ -203,7 +203,7 @@ var CommunityClient = class extends chunkCIEYY3A6_cjs.BaseClient {
203
203
  async airdropSBT(users, roleId, options) {
204
204
  try {
205
205
  if (!this.sbtAddress) throw new Error("SBT address required for this client");
206
- const sbt = chunkCIEYY3A6_cjs.sbtActions(this.sbtAddress);
206
+ const sbt = chunkMFBTMF5U_cjs.sbtActions(this.sbtAddress);
207
207
  if (users.length === 1) {
208
208
  const roleIdHex = `0x${roleId.toString(16).padStart(64, "0")}`;
209
209
  return await sbt(this.client).mintForRole({
@@ -224,7 +224,7 @@ var CommunityClient = class extends chunkCIEYY3A6_cjs.BaseClient {
224
224
  async setReputationRule(ruleId, ruleConfig, options) {
225
225
  try {
226
226
  if (!this.reputationAddress) throw new Error("Reputation address required for this client");
227
- const reputation = chunkCIEYY3A6_cjs.reputationActions(this.reputationAddress);
227
+ const reputation = chunkMFBTMF5U_cjs.reputationActions(this.reputationAddress);
228
228
  const ruleIdHex = `0x${ruleId.toString(16).padStart(64, "0")}`;
229
229
  return await reputation(this.client).setReputationRule({
230
230
  ruleId: ruleIdHex,
@@ -244,7 +244,7 @@ var CommunityClient = class extends chunkCIEYY3A6_cjs.BaseClient {
244
244
  async revokeMembership(userAddr, options) {
245
245
  try {
246
246
  if (!this.sbtAddress) throw new Error("SBT address required for this client");
247
- const sbt = chunkCIEYY3A6_cjs.sbtActions(this.sbtAddress);
247
+ const sbt = chunkMFBTMF5U_cjs.sbtActions(this.sbtAddress);
248
248
  return await sbt(this.client).burnSBT({
249
249
  user: userAddr,
250
250
  account: options?.account
@@ -258,7 +258,7 @@ var CommunityClient = class extends chunkCIEYY3A6_cjs.BaseClient {
258
258
  */
259
259
  async transferCommunityTokenOwnership(tokenAddress, newOwner, options) {
260
260
  try {
261
- const token = chunkCIEYY3A6_cjs.tokenActions()(this.client);
261
+ const token = chunkMFBTMF5U_cjs.tokenActions()(this.client);
262
262
  return await token.transferOwnership({
263
263
  token: tokenAddress,
264
264
  newOwner,
@@ -269,7 +269,7 @@ var CommunityClient = class extends chunkCIEYY3A6_cjs.BaseClient {
269
269
  }
270
270
  }
271
271
  };
272
- var UserLifecycle = class extends chunkCIEYY3A6_cjs.BaseClient {
272
+ var UserLifecycle = class extends chunkMFBTMF5U_cjs.BaseClient {
273
273
  accountAddress;
274
274
  registryAddress;
275
275
  sbtAddress;
@@ -298,7 +298,7 @@ var UserLifecycle = class extends chunkCIEYY3A6_cjs.BaseClient {
298
298
  */
299
299
  async checkEligibility(community) {
300
300
  const publicClient = this.getStartPublicClient();
301
- chunkCIEYY3A6_cjs.registryActions(this.registryAddress)(publicClient);
301
+ chunkMFBTMF5U_cjs.registryActions(this.registryAddress)(publicClient);
302
302
  return true;
303
303
  }
304
304
  /**
@@ -308,8 +308,8 @@ var UserLifecycle = class extends chunkCIEYY3A6_cjs.BaseClient {
308
308
  */
309
309
  async onboard(community, stakeAmount = viem.parseEther("0.4")) {
310
310
  try {
311
- const registry = chunkCIEYY3A6_cjs.registryActions(this.registryAddress)(this.getStartPublicClient());
312
- const userClient = await import('./UserClient-QM2CQVRM.cjs').then((m) => new m.UserClient({
311
+ const registry = chunkMFBTMF5U_cjs.registryActions(this.registryAddress)(this.getStartPublicClient());
312
+ const userClient = await import('./UserClient-J3JPDIG7.cjs').then((m) => new m.UserClient({
313
313
  ...this.config,
314
314
  accountAddress: this.accountAddress,
315
315
  registryAddress: this.registryAddress,
@@ -352,7 +352,7 @@ var UserLifecycle = class extends chunkCIEYY3A6_cjs.BaseClient {
352
352
  if (!this.gaslessConfig) {
353
353
  throw new Error("Gasless configuration not enabled. Call enableGasless() first.");
354
354
  }
355
- const userClient = await import('./UserClient-QM2CQVRM.cjs').then((m) => new m.UserClient({
355
+ const userClient = await import('./UserClient-J3JPDIG7.cjs').then((m) => new m.UserClient({
356
356
  ...this.config,
357
357
  accountAddress: this.accountAddress,
358
358
  // Pass minimal config needed for execution
@@ -360,7 +360,7 @@ var UserLifecycle = class extends chunkCIEYY3A6_cjs.BaseClient {
360
360
  bundlerClient: this.config.bundlerClient
361
361
  }));
362
362
  const paymasterType = this.gaslessConfig.policy === "CREDIT" ? "Super" : "V4";
363
- const registry = chunkCIEYY3A6_cjs.registryActions(this.registryAddress)(this.client);
363
+ const registry = chunkMFBTMF5U_cjs.registryActions(this.registryAddress)(this.client);
364
364
  const paymasterAddress = await registry.SUPER_PAYMASTER();
365
365
  return await userClient.executeGasless({
366
366
  target: params.target,
@@ -372,7 +372,7 @@ var UserLifecycle = class extends chunkCIEYY3A6_cjs.BaseClient {
372
372
  });
373
373
  }
374
374
  async claimSBT(roleId, options) {
375
- const userClient = await import('./UserClient-QM2CQVRM.cjs').then((m) => new m.UserClient({
375
+ const userClient = await import('./UserClient-J3JPDIG7.cjs').then((m) => new m.UserClient({
376
376
  ...this.config,
377
377
  accountAddress: this.accountAddress,
378
378
  sbtAddress: this.sbtAddress
@@ -384,7 +384,7 @@ var UserLifecycle = class extends chunkCIEYY3A6_cjs.BaseClient {
384
384
  // ===========================================
385
385
  async getMyReputation() {
386
386
  const publicClient = this.getStartPublicClient();
387
- const registry = chunkCIEYY3A6_cjs.registryActions(this.registryAddress)(publicClient);
387
+ const registry = chunkMFBTMF5U_cjs.registryActions(this.registryAddress)(publicClient);
388
388
  const [score, creditLimit] = await Promise.all([
389
389
  registry.globalReputation({ user: this.accountAddress }),
390
390
  registry.getCreditLimit({ user: this.accountAddress })
@@ -397,14 +397,14 @@ var UserLifecycle = class extends chunkCIEYY3A6_cjs.BaseClient {
397
397
  };
398
398
  }
399
399
  async getCreditLimit() {
400
- const registry = chunkCIEYY3A6_cjs.registryActions(this.registryAddress)(this.client);
400
+ const registry = chunkMFBTMF5U_cjs.registryActions(this.registryAddress)(this.client);
401
401
  return await registry.getCreditLimit({ user: this.accountAddress });
402
402
  }
403
403
  // ===========================================
404
404
  // 4. Exit Phase (Cleanup)
405
405
  // ===========================================
406
406
  async leaveCommunity(community, options) {
407
- const userClient = await import('./UserClient-QM2CQVRM.cjs').then((m) => new m.UserClient({
407
+ const userClient = await import('./UserClient-J3JPDIG7.cjs').then((m) => new m.UserClient({
408
408
  ...this.config,
409
409
  accountAddress: this.accountAddress,
410
410
  sbtAddress: this.sbtAddress
@@ -412,7 +412,7 @@ var UserLifecycle = class extends chunkCIEYY3A6_cjs.BaseClient {
412
412
  return await userClient.leaveCommunity(community, options);
413
413
  }
414
414
  async exitRole(roleId, options) {
415
- const userClient = await import('./UserClient-QM2CQVRM.cjs').then((m) => new m.UserClient({
415
+ const userClient = await import('./UserClient-J3JPDIG7.cjs').then((m) => new m.UserClient({
416
416
  ...this.config,
417
417
  accountAddress: this.accountAddress,
418
418
  registryAddress: this.registryAddress
@@ -420,7 +420,7 @@ var UserLifecycle = class extends chunkCIEYY3A6_cjs.BaseClient {
420
420
  return await userClient.exitRole(roleId, options);
421
421
  }
422
422
  async unstakeAll(roleId, options) {
423
- const userClient = await import('./UserClient-QM2CQVRM.cjs').then((m) => new m.UserClient({
423
+ const userClient = await import('./UserClient-J3JPDIG7.cjs').then((m) => new m.UserClient({
424
424
  ...this.config,
425
425
  accountAddress: this.accountAddress,
426
426
  gTokenStakingAddress: this.gTokenStakingAddress
@@ -431,5 +431,5 @@ var UserLifecycle = class extends chunkCIEYY3A6_cjs.BaseClient {
431
431
 
432
432
  exports.CommunityClient = CommunityClient;
433
433
  exports.UserLifecycle = UserLifecycle;
434
- //# sourceMappingURL=chunk-HT6LGLDM.cjs.map
435
- //# sourceMappingURL=chunk-HT6LGLDM.cjs.map
434
+ //# sourceMappingURL=chunk-6PJAHZZ2.cjs.map
435
+ //# sourceMappingURL=chunk-6PJAHZZ2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../enduser/src/CommunityClient.ts","../../enduser/src/UserLifecycle.ts"],"names":["BaseClient","xPNTsFactoryActions","registryActions","stakeAmount","parseAbiParameters","parseEther","tokenActions","encodeAbiParameters","sbtActions","reputationActions"],"mappings":"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","file":"chunk-HT6LGLDM.cjs","sourcesContent":["import { type Address, type Hash, type Hex, parseEther, encodeAbiParameters, parseAbiParameters } from 'viem';\nimport { BaseClient, type ClientConfig, type TransactionOptions } from '@aastar/core';\nimport { registryActions, sbtActions, xPNTsFactoryActions, reputationActions, tokenActions } from '@aastar/core';\n\nexport interface CommunityClientConfig extends ClientConfig {\n sbtAddress?: Address;\n factoryAddress?: Address;\n reputationAddress?: Address;\n}\n\nexport interface CreateCommunityParams {\n name: string;\n tokenSymbol: string;\n ensName?: string;\n description?: string;\n}\n\nexport interface CommunityInfo {\n address: Address; // Community ID (hash) usually, but here likely the SBT/profile? No, Community in Registry is bytes32 ID.\n // Wait, Registry defines Community as a Role (ROLE_COMMUNITY).\n // The \"Community\" entity usually implies a collection of contracts (Token, maybe Paymaster).\n}\n\n/**\n * Client for Community Managers (`ROLE_COMMUNITY`)\n */\nexport class CommunityClient extends BaseClient {\n public sbtAddress?: Address;\n public factoryAddress?: Address;\n public reputationAddress?: Address;\n\n constructor(config: CommunityClientConfig) {\n super(config);\n this.sbtAddress = config.sbtAddress;\n this.factoryAddress = config.factoryAddress;\n this.reputationAddress = config.reputationAddress;\n }\n\n // ========================================\n // 1. 社区创建与配置\n // ========================================\n\n /**\n * Create a new Community Token (xPNTs) and register it.\n * Note: In the current architecture, creating a community often involves:\n * 1. Registering the ROLE_COMMUNITY on Registry (if not exists) -> usually manual or self-register\n * 2. Deploying a Token (xPNTs) via Factory\n * 3. Linking the Token to the Community in Registry\n */\n async createCommunityToken(params: CreateCommunityParams, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.factoryAddress) {\n throw new Error('Factory address required for this client');\n }\n const factory = xPNTsFactoryActions(this.factoryAddress);\n\n // 1. Deploy Token\n // Note: The address calculation should be handled via event parsing or predictive deployment\n // For now, returning the transaction hash as per L1 pattern\n return await factory(this.client).createToken({\n name: params.name,\n symbol: params.tokenSymbol,\n community: this.getAddress(),\n account: options?.account\n });\n } catch (error) {\n // Error is likely already an AAStarError from L1, but we wrap it for context\n throw error; \n }\n }\n\n /**\n * Get Community Details (Decodes Role Metadata)\n * @param communityAddress - The address of the community manager (defaults to self)\n */\n async getCommunityInfo(communityAddress?: Address): Promise<{\n name: string;\n ensName: string;\n website: string;\n description: string;\n logoURI: string;\n stakeAmount: bigint;\n }> {\n try {\n const target = communityAddress || this.getAddress();\n const registryAddr = this.requireRegistry();\n const registry = registryActions(registryAddr);\n const publicClient = this.getStartPublicClient();\n \n // 1. Get Role ID\n const API_ROLE_COMMUNITY = await registry(publicClient).ROLE_COMMUNITY();\n\n // 2. Fetch Metadata (Hex).\n // NOTE: in the deployed v5 Registry, `roleMetadata` is an INTERNAL mapping with no\n // public getter (the rich community profile — name/website/logo — is written on\n // registerRole but not readable on-chain). When the getter is absent the call\n // reverts; degrade gracefully to the on-chain-readable fields (stake) with an\n // empty profile rather than throwing, so callers can still resolve the community.\n let metadataHex: Hex | undefined;\n try {\n metadataHex = await registry(publicClient).roleMetadata({\n roleId: API_ROLE_COMMUNITY,\n user: target\n });\n } catch (err) {\n // Degrade ONLY on contract-level \"no getter / reverted\" errors — the deployed\n // v5 Registry genuinely lacks a public roleMetadata getter. Re-throw genuine\n // transport/RPC errors so a transient network failure is not silently masked as\n // \"no community profile\".\n const m = (err instanceof Error ? `${err.message} ${(err as { cause?: { message?: string } }).cause?.message ?? ''}` : String(err)).toLowerCase();\n const isContractGap =\n m.includes('revert') || m.includes('returned no data') ||\n m.includes('does not exist') || m.includes('is not a function') ||\n m.includes('no data was returned');\n if (!isContractGap) throw err;\n metadataHex = undefined;\n }\n\n if (!metadataHex || metadataHex === '0x') {\n let stakeAmount = 0n;\n try {\n stakeAmount = await registry(publicClient).roleStakes({ roleId: API_ROLE_COMMUNITY, user: target });\n } catch { /* stake unreadable too — leave 0 */ }\n return { name: '', ensName: '', website: '', description: '', logoURI: '', stakeAmount };\n }\n\n // 3. Decode\n // struct CommunityRoleData { string name; string ensName; string website; string description; string logoURI; uint256 stakeAmount; }\n let dataToDecode = metadataHex;\n \n // Check for common 'bytes' or 'tuple' wrapper offset (0x20)\n if (metadataHex.startsWith('0x0000000000000000000000000000000000000000000000000000000000000020')) {\n dataToDecode = `0x${metadataHex.slice(66)}`; \n }\n\n const { decodeAbiParameters, parseAbiParameters } = await import('viem');\n const [name, ensName, website, description, logoURI, stakeAmount] = decodeAbiParameters(\n parseAbiParameters('string, string, string, string, string, uint256'),\n dataToDecode as Hex\n );\n\n return {\n name,\n ensName,\n website,\n description,\n logoURI,\n stakeAmount\n };\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Register self as a Community Manager.\n * This method handles all necessary steps:\n * 1. Checks and approves GToken to GTokenStaking\n * 2. Encodes CommunityRoleData with provided parameters\n * 3. Calls registerRoleSelf on Registry\n * \n * @param params Community registration parameters\n * @param options Transaction options\n * @returns Transaction hash\n */\n async registerAsCommunity(params: {\n name: string;\n ensName?: string;\n website?: string;\n description?: string;\n logoURI?: string;\n stakeAmount?: bigint;\n }, options?: TransactionOptions): Promise<Hash> {\n try {\n const registryAddr = this.requireRegistry();\n const registry = registryActions(registryAddr);\n const gTokenStakingAddr = this.requireGTokenStaking();\n const gTokenAddr = this.requireGToken();\n \n // 1. Get ROLE_COMMUNITY\n const roleCommunity = await registry(this.getStartPublicClient()).ROLE_COMMUNITY();\n \n // 2. Prepare stake amount (default 30 GToken as per Registry config)\n const stakeAmount = params.stakeAmount || parseEther('30');\n \n // 3. Check and approve GToken to GTokenStaking if needed\n const gToken = tokenActions();\n \n const allowance = await gToken(this.getStartPublicClient()).allowance({\n token: gTokenAddr,\n owner: this.getAddress(),\n spender: gTokenStakingAddr\n });\n \n if (allowance < stakeAmount) {\n const approveHash = await gToken(this.client).approve({\n token: gTokenAddr,\n spender: gTokenStakingAddr,\n amount: stakeAmount * BigInt(2), // Approve 2x for future use\n account: options?.account\n });\n await (this.getStartPublicClient() as any).waitForTransactionReceipt({ hash: approveHash });\n }\n \n // 4. Encode CommunityRoleData\n // struct CommunityRoleData { string name; string ensName; string website; string description; string logoURI; uint256 stakeAmount; }\n const communityData = encodeAbiParameters(\n parseAbiParameters('string, string, string, string, string, uint256'),\n [\n params.name,\n params.ensName || '',\n params.website || '',\n params.description || `${params.name} Community`,\n params.logoURI || '',\n stakeAmount\n ]\n );\n \n // 5. Register role\n return await registry(this.client).registerRoleSelf({\n roleId: roleCommunity,\n data: communityData,\n account: options?.account\n });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * One-click Setup: Register Community + Deploy Token\n * Orchestrates the complete community initialization flow.\n */\n async setupCommunity(params: {\n name: string;\n tokenName: string;\n tokenSymbol: string;\n description?: string;\n logoURI?: string;\n website?: string;\n stakeAmount?: bigint;\n }, options?: TransactionOptions): Promise<{ tokenAddress: Address; hashes: Hash[] }> {\n const hashes: Hash[] = [];\n let tokenAddress: Address = '0x0000000000000000000000000000000000000000';\n\n // 1. Register as Community (Idempotent check handled inside or by registry)\n // We should check hasRole first to avoid errors if already registered\n const registry = registryActions(this.requireRegistry())(this.getStartPublicClient());\n const ROLE_COMMUNITY = await registry.ROLE_COMMUNITY();\n const hasRole = await registry.hasRole({ roleId: ROLE_COMMUNITY, user: this.getAddress() });\n\n if (!hasRole) {\n const hReg = await this.registerAsCommunity({\n name: params.name,\n ensName: params.website, // Mapping website to ENS param for now as per legacy behavior\n website: params.website,\n description: params.description,\n logoURI: params.logoURI,\n stakeAmount: params.stakeAmount\n }, options);\n hashes.push(hReg);\n \n // Critical: Factory requires caller to be registered in Registry.\n // We must wait for the registration to be mined.\n await (this.getStartPublicClient() as any).waitForTransactionReceipt({ hash: hReg });\n }\n\n // 2. Deploy Token (Idempotent check via Factory)\n if (this.factoryAddress) {\n const factoryReader = xPNTsFactoryActions(this.factoryAddress)(this.getStartPublicClient());\n const existingToken = await factoryReader.getTokenAddress({ community: this.getAddress() });\n\n if (existingToken && existingToken !== '0x0000000000000000000000000000000000000000') {\n tokenAddress = existingToken;\n } else {\n const hToken = await this.createCommunityToken({\n name: params.tokenName,\n tokenSymbol: params.tokenSymbol,\n description: params.description\n }, options);\n hashes.push(hToken);\n \n // Critical: Wait for token deployment to fetch the address\n await (this.getStartPublicClient() as any).waitForTransactionReceipt({ hash: hToken });\n \n // Fetch the actual address (with retries for latency)\n for (let i = 0; i < 5; i++) {\n tokenAddress = await factoryReader.getTokenAddress({ community: this.getAddress() });\n if (tokenAddress && tokenAddress !== '0x0000000000000000000000000000000000000000') break;\n await new Promise(r => setTimeout(r, 2000));\n }\n \n if (!tokenAddress || tokenAddress === '0x0000000000000000000000000000000000000000') {\n console.warn(`Warning: Token address not found after 10s. Factory might be slow indexing.`);\n }\n }\n }\n\n return { tokenAddress, hashes };\n }\n\n // ========================================\n // 2. 成员管理\n // ========================================\n\n /**\n * Airdrop SBTs to users to make them members\n */\n async airdropSBT(users: Address[], roleId: bigint, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.sbtAddress) throw new Error('SBT address required for this client');\n const sbt = sbtActions(this.sbtAddress);\n\n if (users.length === 1) {\n // Convert roleId to Hex (bytes32)\n const roleIdHex = `0x${roleId.toString(16).padStart(64, '0')}` as Hash;\n\n return await sbt(this.client).mintForRole({\n user: users[0],\n roleId: roleIdHex,\n roleData: '0x',\n account: options?.account\n });\n }\n \n throw new Error('Batch airdrop not fully implemented in L1 yet, use single user');\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // 3. 信誉系统\n // ========================================\n\n async setReputationRule(ruleId: bigint, ruleConfig: any, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.reputationAddress) throw new Error('Reputation address required for this client');\n const reputation = reputationActions(this.reputationAddress);\n \n const ruleIdHex = `0x${ruleId.toString(16).padStart(64, '0')}` as Hash;\n\n return await reputation(this.client).setReputationRule({\n ruleId: ruleIdHex,\n rule: ruleConfig,\n account: options?.account\n });\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // 4. 管理功能\n // ========================================\n\n /**\n * Revoke membership (Burn SBT)\n */\n async revokeMembership(userAddr: Address, options?: TransactionOptions): Promise<Hash> {\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.client).burnSBT({\n user: userAddr,\n account: options?.account\n });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Transfer ownership of the Community Token\n */\n async transferCommunityTokenOwnership(tokenAddress: Address, newOwner: Address, options?: TransactionOptions): Promise<Hash> {\n try {\n const token = tokenActions()(this.client);\n \n return await token.transferOwnership({\n token: tokenAddress,\n newOwner,\n account: options?.account\n });\n } catch (error) {\n throw error;\n }\n }\n}\n","import { type Address, type Hash, type Hex, parseEther } from 'viem';\nimport { BaseClient, type ClientConfig, type TransactionOptions } from '@aastar/core';\nimport { registryActions, sbtActions, tokenActions, stakingActions, entryPointActions } from '@aastar/core'; // L2/L1 Actions\n\nexport interface GaslessConfig {\n paymasterUrl: string;\n policy?: 'CREDIT' | 'TOKEN' | 'SPONSORED';\n}\n\nexport interface UserLifecycleConfig extends ClientConfig {\n accountAddress: Address;\n registryAddress: Address;\n sbtAddress: Address;\n gTokenAddress: Address;\n gTokenStakingAddress: Address;\n entryPointAddress: Address;\n gasless?: GaslessConfig; // Optional gasless config\n}\n\nexport interface OnboardResult {\n success: boolean;\n sbtId?: bigint;\n txHash?: Hash;\n}\n\nexport interface ReputationData {\n score: bigint;\n level: bigint;\n creditLimit: bigint;\n}\n\n/**\n * UserLifecycle - L3 Pattern\n * \n * Responsibilities:\n * 1. Managing the complete lifecycle of an End User (Onboard -> Operate -> Exit)\n * 2. Providing a unified interface for Gasless operations\n * 3. Abstracting underlying contract interactions via L2 Actions\n */\nexport class UserLifecycle extends BaseClient {\n public accountAddress: Address;\n public registryAddress: Address;\n public sbtAddress: Address;\n public gTokenAddress: Address;\n public gTokenStakingAddress: Address;\n public entryPointAddress: Address;\n public gaslessConfig?: GaslessConfig;\n\n public config: UserLifecycleConfig;\n\n constructor(config: UserLifecycleConfig) {\n super(config);\n this.config = config;\n this.accountAddress = config.accountAddress;\n this.registryAddress = config.registryAddress;\n this.sbtAddress = config.sbtAddress;\n this.gTokenAddress = config.gTokenAddress;\n this.gTokenStakingAddress = config.gTokenStakingAddress;\n this.entryPointAddress = config.entryPointAddress;\n this.gaslessConfig = config.gasless;\n }\n\n // ===========================================\n // 1. Onboarding Phase (Registration)\n // ===========================================\n\n /**\n * Check if user is eligible to join a community\n * @param community Address of the community\n */\n async checkEligibility(community: Address): Promise<boolean> {\n // Validation logic (e.g., check blacklist or whitelist via Registry)\n const publicClient = this.getStartPublicClient();\n const registry = registryActions(this.registryAddress)(publicClient);\n // Placeholder: simplistic check, real logic might involve community specific rules\n return true; \n }\n\n /**\n * One-click Onboarding: Approve -> Stake -> Register -> Mint SBT\n * @param community Address of the community to join\n * @param stakeAmount Amount of GToken to stake (default 0.4 GT)\n */\n async onboard(community: Address, stakeAmount: bigint = parseEther('0.4')): Promise<OnboardResult> {\n try {\n const registry = registryActions(this.registryAddress)(this.getStartPublicClient());\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n registryAddress: this.registryAddress,\n gTokenStakingAddress: this.gTokenStakingAddress,\n gTokenAddress: this.gTokenAddress,\n sbtAddress: this.sbtAddress\n }));\n\n // Use UserClient's batch execution capability for atomic onboarding\n const txHash = await userClient.registerAsEndUser(community, stakeAmount);\n \n // Post-check: Verify role with retry\n let hasRole = false;\n for (let i = 0; i < 5; i++) {\n hasRole = await registry.hasRole({ \n roleId: await registry.ROLE_ENDUSER(), \n user: this.accountAddress \n });\n if (hasRole) break;\n await new Promise(r => setTimeout(r, 2000));\n }\n\n return {\n success: hasRole,\n txHash\n };\n } catch (error) {\n console.error(\"Onboarding failed:\", error);\n return { success: false };\n }\n }\n\n /**\n * Enable or update Gasless configuration\n */\n async enableGasless(config: GaslessConfig): Promise<void> {\n this.gaslessConfig = config;\n // In future: verify paymaster connection here\n }\n\n // ===========================================\n // 2. Operational Phase (Execute & Interact)\n // ===========================================\n\n /**\n * Execute a transaction effectively using Gasless configuration if available\n */\n async executeGaslessTx(params: {\n target: Address;\n value: bigint;\n data: Hex;\n operator?: Address; // Optional specific operator\n }): Promise<Hash> {\n if (!this.gaslessConfig) {\n throw new Error(\"Gasless configuration not enabled. Call enableGasless() first.\");\n }\n\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n // Pass minimal config needed for execution\n entryPointAddress: this.entryPointAddress,\n bundlerClient: (this.config as any).bundlerClient \n }));\n\n // Determine Paymaster Type based on policy\n const paymasterType = this.gaslessConfig.policy === 'CREDIT' ? 'Super' : 'V4'; \n // Note: Real implementation needs to resolve actual Paymaster Address from Registry/Config\n // This is a placeholder address resolution\n const registry = registryActions(this.registryAddress)(this.client);\n const paymasterAddress = await registry.SUPER_PAYMASTER(); \n\n return await userClient.executeGasless({\n target: params.target,\n value: params.value,\n data: params.data,\n paymaster: paymasterAddress,\n paymasterType,\n operator: params.operator\n });\n }\n\n async claimSBT(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n sbtAddress: this.sbtAddress\n }));\n return await userClient.mintSBT(roleId, options);\n }\n\n // ===========================================\n // 3. Query Phase (Info & Stats)\n // ===========================================\n\n async getMyReputation(): Promise<ReputationData> {\n const publicClient = this.getStartPublicClient();\n const registry = registryActions(this.registryAddress)(publicClient);\n \n const [score, creditLimit] = await Promise.all([\n registry.globalReputation({ user: this.accountAddress }),\n registry.getCreditLimit({ user: this.accountAddress })\n ]);\n\n return {\n score,\n level: 0n, // TODO: Add level calculation logic\n creditLimit\n };\n }\n\n async getCreditLimit(): Promise<bigint> {\n const registry = registryActions(this.registryAddress)(this.client);\n return await registry.getCreditLimit({ user: this.accountAddress });\n }\n\n // ===========================================\n // 4. Exit Phase (Cleanup)\n // ===========================================\n\n async leaveCommunity(community: Address, options?: TransactionOptions): Promise<Hash> {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n sbtAddress: this.sbtAddress\n }));\n return await userClient.leaveCommunity(community, options);\n }\n\n async exitRole(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n registryAddress: this.registryAddress\n }));\n return await userClient.exitRole(roleId, options);\n }\n\n async unstakeAll(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n gTokenStakingAddress: this.gTokenStakingAddress\n }));\n return await userClient.unstakeFromRole(roleId, options);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../enduser/src/CommunityClient.ts","../../enduser/src/UserLifecycle.ts"],"names":["BaseClient","xPNTsFactoryActions","registryActions","stakeAmount","parseAbiParameters","parseEther","tokenActions","encodeAbiParameters","sbtActions","reputationActions"],"mappings":"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","file":"chunk-6PJAHZZ2.cjs","sourcesContent":["import { type Address, type Hash, type Hex, parseEther, encodeAbiParameters, parseAbiParameters } from 'viem';\nimport { BaseClient, type ClientConfig, type TransactionOptions } from '@aastar/core';\nimport { registryActions, sbtActions, xPNTsFactoryActions, reputationActions, tokenActions } from '@aastar/core';\n\nexport interface CommunityClientConfig extends ClientConfig {\n sbtAddress?: Address;\n factoryAddress?: Address;\n reputationAddress?: Address;\n}\n\nexport interface CreateCommunityParams {\n name: string;\n tokenSymbol: string;\n ensName?: string;\n description?: string;\n}\n\nexport interface CommunityInfo {\n address: Address; // Community ID (hash) usually, but here likely the SBT/profile? No, Community in Registry is bytes32 ID.\n // Wait, Registry defines Community as a Role (ROLE_COMMUNITY).\n // The \"Community\" entity usually implies a collection of contracts (Token, maybe Paymaster).\n}\n\n/**\n * Client for Community Managers (`ROLE_COMMUNITY`)\n */\nexport class CommunityClient extends BaseClient {\n public sbtAddress?: Address;\n public factoryAddress?: Address;\n public reputationAddress?: Address;\n\n constructor(config: CommunityClientConfig) {\n super(config);\n this.sbtAddress = config.sbtAddress;\n this.factoryAddress = config.factoryAddress;\n this.reputationAddress = config.reputationAddress;\n }\n\n // ========================================\n // 1. 社区创建与配置\n // ========================================\n\n /**\n * Create a new Community Token (xPNTs) and register it.\n * Note: In the current architecture, creating a community often involves:\n * 1. Registering the ROLE_COMMUNITY on Registry (if not exists) -> usually manual or self-register\n * 2. Deploying a Token (xPNTs) via Factory\n * 3. Linking the Token to the Community in Registry\n */\n async createCommunityToken(params: CreateCommunityParams, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.factoryAddress) {\n throw new Error('Factory address required for this client');\n }\n const factory = xPNTsFactoryActions(this.factoryAddress);\n\n // 1. Deploy Token\n // Note: The address calculation should be handled via event parsing or predictive deployment\n // For now, returning the transaction hash as per L1 pattern\n return await factory(this.client).createToken({\n name: params.name,\n symbol: params.tokenSymbol,\n community: this.getAddress(),\n account: options?.account\n });\n } catch (error) {\n // Error is likely already an AAStarError from L1, but we wrap it for context\n throw error; \n }\n }\n\n /**\n * Get Community Details (Decodes Role Metadata)\n * @param communityAddress - The address of the community manager (defaults to self)\n */\n async getCommunityInfo(communityAddress?: Address): Promise<{\n name: string;\n ensName: string;\n website: string;\n description: string;\n logoURI: string;\n stakeAmount: bigint;\n }> {\n try {\n const target = communityAddress || this.getAddress();\n const registryAddr = this.requireRegistry();\n const registry = registryActions(registryAddr);\n const publicClient = this.getStartPublicClient();\n \n // 1. Get Role ID\n const API_ROLE_COMMUNITY = await registry(publicClient).ROLE_COMMUNITY();\n\n // 2. Fetch Metadata (Hex).\n // NOTE: in the deployed v5 Registry, `roleMetadata` is an INTERNAL mapping with no\n // public getter (the rich community profile — name/website/logo — is written on\n // registerRole but not readable on-chain). When the getter is absent the call\n // reverts; degrade gracefully to the on-chain-readable fields (stake) with an\n // empty profile rather than throwing, so callers can still resolve the community.\n let metadataHex: Hex | undefined;\n try {\n metadataHex = await registry(publicClient).roleMetadata({\n roleId: API_ROLE_COMMUNITY,\n user: target\n });\n } catch (err) {\n // Degrade ONLY on contract-level \"no getter / reverted\" errors — the deployed\n // v5 Registry genuinely lacks a public roleMetadata getter. Re-throw genuine\n // transport/RPC errors so a transient network failure is not silently masked as\n // \"no community profile\".\n const m = (err instanceof Error ? `${err.message} ${(err as { cause?: { message?: string } }).cause?.message ?? ''}` : String(err)).toLowerCase();\n const isContractGap =\n m.includes('revert') || m.includes('returned no data') ||\n m.includes('does not exist') || m.includes('is not a function') ||\n m.includes('no data was returned');\n if (!isContractGap) throw err;\n metadataHex = undefined;\n }\n\n if (!metadataHex || metadataHex === '0x') {\n let stakeAmount = 0n;\n try {\n stakeAmount = await registry(publicClient).roleStakes({ roleId: API_ROLE_COMMUNITY, user: target });\n } catch { /* stake unreadable too — leave 0 */ }\n return { name: '', ensName: '', website: '', description: '', logoURI: '', stakeAmount };\n }\n\n // 3. Decode\n // struct CommunityRoleData { string name; string ensName; string website; string description; string logoURI; uint256 stakeAmount; }\n let dataToDecode = metadataHex;\n \n // Check for common 'bytes' or 'tuple' wrapper offset (0x20)\n if (metadataHex.startsWith('0x0000000000000000000000000000000000000000000000000000000000000020')) {\n dataToDecode = `0x${metadataHex.slice(66)}`; \n }\n\n const { decodeAbiParameters, parseAbiParameters } = await import('viem');\n const [name, ensName, website, description, logoURI, stakeAmount] = decodeAbiParameters(\n parseAbiParameters('string, string, string, string, string, uint256'),\n dataToDecode as Hex\n );\n\n return {\n name,\n ensName,\n website,\n description,\n logoURI,\n stakeAmount\n };\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Register self as a Community Manager.\n * This method handles all necessary steps:\n * 1. Checks and approves GToken to GTokenStaking\n * 2. Encodes CommunityRoleData with provided parameters\n * 3. Calls registerRoleSelf on Registry\n * \n * @param params Community registration parameters\n * @param options Transaction options\n * @returns Transaction hash\n */\n async registerAsCommunity(params: {\n name: string;\n ensName?: string;\n website?: string;\n description?: string;\n logoURI?: string;\n stakeAmount?: bigint;\n }, options?: TransactionOptions): Promise<Hash> {\n try {\n const registryAddr = this.requireRegistry();\n const registry = registryActions(registryAddr);\n const gTokenStakingAddr = this.requireGTokenStaking();\n const gTokenAddr = this.requireGToken();\n \n // 1. Get ROLE_COMMUNITY\n const roleCommunity = await registry(this.getStartPublicClient()).ROLE_COMMUNITY();\n \n // 2. Prepare stake amount (default 30 GToken as per Registry config)\n const stakeAmount = params.stakeAmount || parseEther('30');\n \n // 3. Check and approve GToken to GTokenStaking if needed\n const gToken = tokenActions();\n \n const allowance = await gToken(this.getStartPublicClient()).allowance({\n token: gTokenAddr,\n owner: this.getAddress(),\n spender: gTokenStakingAddr\n });\n \n if (allowance < stakeAmount) {\n const approveHash = await gToken(this.client).approve({\n token: gTokenAddr,\n spender: gTokenStakingAddr,\n amount: stakeAmount * BigInt(2), // Approve 2x for future use\n account: options?.account\n });\n await (this.getStartPublicClient() as any).waitForTransactionReceipt({ hash: approveHash });\n }\n \n // 4. Encode CommunityRoleData\n // struct CommunityRoleData { string name; string ensName; string website; string description; string logoURI; uint256 stakeAmount; }\n const communityData = encodeAbiParameters(\n parseAbiParameters('string, string, string, string, string, uint256'),\n [\n params.name,\n params.ensName || '',\n params.website || '',\n params.description || `${params.name} Community`,\n params.logoURI || '',\n stakeAmount\n ]\n );\n \n // 5. Register role\n return await registry(this.client).registerRoleSelf({\n roleId: roleCommunity,\n data: communityData,\n account: options?.account\n });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * One-click Setup: Register Community + Deploy Token\n * Orchestrates the complete community initialization flow.\n */\n async setupCommunity(params: {\n name: string;\n tokenName: string;\n tokenSymbol: string;\n description?: string;\n logoURI?: string;\n website?: string;\n stakeAmount?: bigint;\n }, options?: TransactionOptions): Promise<{ tokenAddress: Address; hashes: Hash[] }> {\n const hashes: Hash[] = [];\n let tokenAddress: Address = '0x0000000000000000000000000000000000000000';\n\n // 1. Register as Community (Idempotent check handled inside or by registry)\n // We should check hasRole first to avoid errors if already registered\n const registry = registryActions(this.requireRegistry())(this.getStartPublicClient());\n const ROLE_COMMUNITY = await registry.ROLE_COMMUNITY();\n const hasRole = await registry.hasRole({ roleId: ROLE_COMMUNITY, user: this.getAddress() });\n\n if (!hasRole) {\n const hReg = await this.registerAsCommunity({\n name: params.name,\n ensName: params.website, // Mapping website to ENS param for now as per legacy behavior\n website: params.website,\n description: params.description,\n logoURI: params.logoURI,\n stakeAmount: params.stakeAmount\n }, options);\n hashes.push(hReg);\n \n // Critical: Factory requires caller to be registered in Registry.\n // We must wait for the registration to be mined.\n await (this.getStartPublicClient() as any).waitForTransactionReceipt({ hash: hReg });\n }\n\n // 2. Deploy Token (Idempotent check via Factory)\n if (this.factoryAddress) {\n const factoryReader = xPNTsFactoryActions(this.factoryAddress)(this.getStartPublicClient());\n const existingToken = await factoryReader.getTokenAddress({ community: this.getAddress() });\n\n if (existingToken && existingToken !== '0x0000000000000000000000000000000000000000') {\n tokenAddress = existingToken;\n } else {\n const hToken = await this.createCommunityToken({\n name: params.tokenName,\n tokenSymbol: params.tokenSymbol,\n description: params.description\n }, options);\n hashes.push(hToken);\n \n // Critical: Wait for token deployment to fetch the address\n await (this.getStartPublicClient() as any).waitForTransactionReceipt({ hash: hToken });\n \n // Fetch the actual address (with retries for latency)\n for (let i = 0; i < 5; i++) {\n tokenAddress = await factoryReader.getTokenAddress({ community: this.getAddress() });\n if (tokenAddress && tokenAddress !== '0x0000000000000000000000000000000000000000') break;\n await new Promise(r => setTimeout(r, 2000));\n }\n \n if (!tokenAddress || tokenAddress === '0x0000000000000000000000000000000000000000') {\n console.warn(`Warning: Token address not found after 10s. Factory might be slow indexing.`);\n }\n }\n }\n\n return { tokenAddress, hashes };\n }\n\n // ========================================\n // 2. 成员管理\n // ========================================\n\n /**\n * Airdrop SBTs to users to make them members\n */\n async airdropSBT(users: Address[], roleId: bigint, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.sbtAddress) throw new Error('SBT address required for this client');\n const sbt = sbtActions(this.sbtAddress);\n\n if (users.length === 1) {\n // Convert roleId to Hex (bytes32)\n const roleIdHex = `0x${roleId.toString(16).padStart(64, '0')}` as Hash;\n\n return await sbt(this.client).mintForRole({\n user: users[0],\n roleId: roleIdHex,\n roleData: '0x',\n account: options?.account\n });\n }\n \n throw new Error('Batch airdrop not fully implemented in L1 yet, use single user');\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // 3. 信誉系统\n // ========================================\n\n async setReputationRule(ruleId: bigint, ruleConfig: any, options?: TransactionOptions): Promise<Hash> {\n try {\n if (!this.reputationAddress) throw new Error('Reputation address required for this client');\n const reputation = reputationActions(this.reputationAddress);\n \n const ruleIdHex = `0x${ruleId.toString(16).padStart(64, '0')}` as Hash;\n\n return await reputation(this.client).setReputationRule({\n ruleId: ruleIdHex,\n rule: ruleConfig,\n account: options?.account\n });\n } catch (error) {\n throw error;\n }\n }\n\n // ========================================\n // 4. 管理功能\n // ========================================\n\n /**\n * Revoke membership (Burn SBT)\n */\n async revokeMembership(userAddr: Address, options?: TransactionOptions): Promise<Hash> {\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.client).burnSBT({\n user: userAddr,\n account: options?.account\n });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Transfer ownership of the Community Token\n */\n async transferCommunityTokenOwnership(tokenAddress: Address, newOwner: Address, options?: TransactionOptions): Promise<Hash> {\n try {\n const token = tokenActions()(this.client);\n \n return await token.transferOwnership({\n token: tokenAddress,\n newOwner,\n account: options?.account\n });\n } catch (error) {\n throw error;\n }\n }\n}\n","import { type Address, type Hash, type Hex, parseEther } from 'viem';\nimport { BaseClient, type ClientConfig, type TransactionOptions } from '@aastar/core';\nimport { registryActions, sbtActions, tokenActions, stakingActions, entryPointActions } from '@aastar/core'; // L2/L1 Actions\n\nexport interface GaslessConfig {\n paymasterUrl: string;\n policy?: 'CREDIT' | 'TOKEN' | 'SPONSORED';\n}\n\nexport interface UserLifecycleConfig extends ClientConfig {\n accountAddress: Address;\n registryAddress: Address;\n sbtAddress: Address;\n gTokenAddress: Address;\n gTokenStakingAddress: Address;\n entryPointAddress: Address;\n gasless?: GaslessConfig; // Optional gasless config\n}\n\nexport interface OnboardResult {\n success: boolean;\n sbtId?: bigint;\n txHash?: Hash;\n}\n\nexport interface ReputationData {\n score: bigint;\n level: bigint;\n creditLimit: bigint;\n}\n\n/**\n * UserLifecycle - L3 Pattern\n * \n * Responsibilities:\n * 1. Managing the complete lifecycle of an End User (Onboard -> Operate -> Exit)\n * 2. Providing a unified interface for Gasless operations\n * 3. Abstracting underlying contract interactions via L2 Actions\n */\nexport class UserLifecycle extends BaseClient {\n public accountAddress: Address;\n public registryAddress: Address;\n public sbtAddress: Address;\n public gTokenAddress: Address;\n public gTokenStakingAddress: Address;\n public entryPointAddress: Address;\n public gaslessConfig?: GaslessConfig;\n\n public config: UserLifecycleConfig;\n\n constructor(config: UserLifecycleConfig) {\n super(config);\n this.config = config;\n this.accountAddress = config.accountAddress;\n this.registryAddress = config.registryAddress;\n this.sbtAddress = config.sbtAddress;\n this.gTokenAddress = config.gTokenAddress;\n this.gTokenStakingAddress = config.gTokenStakingAddress;\n this.entryPointAddress = config.entryPointAddress;\n this.gaslessConfig = config.gasless;\n }\n\n // ===========================================\n // 1. Onboarding Phase (Registration)\n // ===========================================\n\n /**\n * Check if user is eligible to join a community\n * @param community Address of the community\n */\n async checkEligibility(community: Address): Promise<boolean> {\n // Validation logic (e.g., check blacklist or whitelist via Registry)\n const publicClient = this.getStartPublicClient();\n const registry = registryActions(this.registryAddress)(publicClient);\n // Placeholder: simplistic check, real logic might involve community specific rules\n return true; \n }\n\n /**\n * One-click Onboarding: Approve -> Stake -> Register -> Mint SBT\n * @param community Address of the community to join\n * @param stakeAmount Amount of GToken to stake (default 0.4 GT)\n */\n async onboard(community: Address, stakeAmount: bigint = parseEther('0.4')): Promise<OnboardResult> {\n try {\n const registry = registryActions(this.registryAddress)(this.getStartPublicClient());\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n registryAddress: this.registryAddress,\n gTokenStakingAddress: this.gTokenStakingAddress,\n gTokenAddress: this.gTokenAddress,\n sbtAddress: this.sbtAddress\n }));\n\n // Use UserClient's batch execution capability for atomic onboarding\n const txHash = await userClient.registerAsEndUser(community, stakeAmount);\n \n // Post-check: Verify role with retry\n let hasRole = false;\n for (let i = 0; i < 5; i++) {\n hasRole = await registry.hasRole({ \n roleId: await registry.ROLE_ENDUSER(), \n user: this.accountAddress \n });\n if (hasRole) break;\n await new Promise(r => setTimeout(r, 2000));\n }\n\n return {\n success: hasRole,\n txHash\n };\n } catch (error) {\n console.error(\"Onboarding failed:\", error);\n return { success: false };\n }\n }\n\n /**\n * Enable or update Gasless configuration\n */\n async enableGasless(config: GaslessConfig): Promise<void> {\n this.gaslessConfig = config;\n // In future: verify paymaster connection here\n }\n\n // ===========================================\n // 2. Operational Phase (Execute & Interact)\n // ===========================================\n\n /**\n * Execute a transaction effectively using Gasless configuration if available\n */\n async executeGaslessTx(params: {\n target: Address;\n value: bigint;\n data: Hex;\n operator?: Address; // Optional specific operator\n }): Promise<Hash> {\n if (!this.gaslessConfig) {\n throw new Error(\"Gasless configuration not enabled. Call enableGasless() first.\");\n }\n\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n // Pass minimal config needed for execution\n entryPointAddress: this.entryPointAddress,\n bundlerClient: (this.config as any).bundlerClient \n }));\n\n // Determine Paymaster Type based on policy\n const paymasterType = this.gaslessConfig.policy === 'CREDIT' ? 'Super' : 'V4'; \n // Note: Real implementation needs to resolve actual Paymaster Address from Registry/Config\n // This is a placeholder address resolution\n const registry = registryActions(this.registryAddress)(this.client);\n const paymasterAddress = await registry.SUPER_PAYMASTER(); \n\n return await userClient.executeGasless({\n target: params.target,\n value: params.value,\n data: params.data,\n paymaster: paymasterAddress,\n paymasterType,\n operator: params.operator\n });\n }\n\n async claimSBT(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n sbtAddress: this.sbtAddress\n }));\n return await userClient.mintSBT(roleId, options);\n }\n\n // ===========================================\n // 3. Query Phase (Info & Stats)\n // ===========================================\n\n async getMyReputation(): Promise<ReputationData> {\n const publicClient = this.getStartPublicClient();\n const registry = registryActions(this.registryAddress)(publicClient);\n \n const [score, creditLimit] = await Promise.all([\n registry.globalReputation({ user: this.accountAddress }),\n registry.getCreditLimit({ user: this.accountAddress })\n ]);\n\n return {\n score,\n level: 0n, // TODO: Add level calculation logic\n creditLimit\n };\n }\n\n async getCreditLimit(): Promise<bigint> {\n const registry = registryActions(this.registryAddress)(this.client);\n return await registry.getCreditLimit({ user: this.accountAddress });\n }\n\n // ===========================================\n // 4. Exit Phase (Cleanup)\n // ===========================================\n\n async leaveCommunity(community: Address, options?: TransactionOptions): Promise<Hash> {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n sbtAddress: this.sbtAddress\n }));\n return await userClient.leaveCommunity(community, options);\n }\n\n async exitRole(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n registryAddress: this.registryAddress\n }));\n return await userClient.exitRole(roleId, options);\n }\n\n async unstakeAll(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n gTokenStakingAddress: this.gTokenStakingAddress\n }));\n return await userClient.unstakeFromRole(roleId, options);\n }\n}\n"]}
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkCIEYY3A6_cjs = require('./chunk-CIEYY3A6.cjs');
3
+ var chunkMFBTMF5U_cjs = require('./chunk-MFBTMF5U.cjs');
4
4
  var viem = require('viem');
5
5
  var accountAbstraction = require('viem/account-abstraction');
6
6
 
7
- var UserClient = class extends chunkCIEYY3A6_cjs.BaseClient {
7
+ var UserClient = class extends chunkMFBTMF5U_cjs.BaseClient {
8
8
  accountAddress;
9
9
  sbtAddress;
10
10
  entryPointAddress;
@@ -31,7 +31,7 @@ var UserClient = class extends chunkCIEYY3A6_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-CUHI6G6W.cjs');
34
+ const { accountFactoryActions, SimpleAccountFactoryABI } = await import('./src-4Q2WFLO2.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 chunkCIEYY3A6_cjs.BaseClient {
89
89
  if (!this.entryPointAddress) {
90
90
  throw new Error("EntryPoint address required for this client");
91
91
  }
92
- const entryPoint = chunkCIEYY3A6_cjs.entryPointActions(this.entryPointAddress);
92
+ const entryPoint = chunkMFBTMF5U_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 chunkCIEYY3A6_cjs.BaseClient {
103
103
  */
104
104
  async getOwner() {
105
105
  try {
106
- const account = chunkCIEYY3A6_cjs.accountActions(this.accountAddress);
106
+ const account = chunkMFBTMF5U_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 chunkCIEYY3A6_cjs.BaseClient {
114
114
  */
115
115
  async execute(target, value, data, options) {
116
116
  try {
117
- const account = chunkCIEYY3A6_cjs.accountActions(this.accountAddress);
117
+ const account = chunkMFBTMF5U_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 chunkCIEYY3A6_cjs.BaseClient {
130
130
  */
131
131
  async executeBatch(targets, values, datas, options) {
132
132
  try {
133
- const account = chunkCIEYY3A6_cjs.accountActions(this.accountAddress);
133
+ const account = chunkMFBTMF5U_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 chunkCIEYY3A6_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 = chunkCIEYY3A6_cjs.sbtActions(this.sbtAddress);
153
+ const sbt = chunkMFBTMF5U_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 chunkCIEYY3A6_cjs.BaseClient {
193
193
  */
194
194
  async getTokenBalance(token) {
195
195
  try {
196
- const tokens = chunkCIEYY3A6_cjs.tokenActions()(this.getStartPublicClient());
196
+ const tokens = chunkMFBTMF5U_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 chunkCIEYY3A6_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 = chunkCIEYY3A6_cjs.stakingActions(this.gTokenStakingAddress);
242
+ const staking = chunkMFBTMF5U_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 chunkCIEYY3A6_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 = chunkCIEYY3A6_cjs.registryActions(this.registryAddress);
293
+ const registry = chunkMFBTMF5U_cjs.registryActions(this.registryAddress);
294
294
  const publicClient = this.getStartPublicClient();
295
- const tokens = chunkCIEYY3A6_cjs.tokenActions()(publicClient);
295
+ const tokens = chunkMFBTMF5U_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 chunkCIEYY3A6_cjs.BaseClient {
358
358
  functionName: "execute",
359
359
  args: [params.target, params.value, params.data]
360
360
  });
361
- const { PaymasterClient: SDKPaymasterClient } = await import('./src-X5IECEPM.cjs');
361
+ const { PaymasterClient: SDKPaymasterClient } = await import('./src-HECKBVR2.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-X5IECEPM.cjs');
367
+ const { tuneGasLimit } = await import('./src-HECKBVR2.cjs');
368
368
  const est = await SDKPaymasterClient.estimateUserOperationGas(
369
369
  this.client,
370
370
  this.client,
@@ -417,5 +417,5 @@ var UserClient = class extends chunkCIEYY3A6_cjs.BaseClient {
417
417
  };
418
418
 
419
419
  exports.UserClient = UserClient;
420
- //# sourceMappingURL=chunk-PED7PJQZ.cjs.map
421
- //# sourceMappingURL=chunk-PED7PJQZ.cjs.map
420
+ //# sourceMappingURL=chunk-CGKPULZX.cjs.map
421
+ //# sourceMappingURL=chunk-CGKPULZX.cjs.map