@aastar/sdk 0.22.0 → 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 (107) hide show
  1. package/dist/UserClient-J3JPDIG7.cjs +15 -0
  2. package/dist/{UserClient-AJOGJXOC.cjs.map → UserClient-J3JPDIG7.cjs.map} +1 -1
  3. package/dist/UserClient-XTHQ2AP3.js +6 -0
  4. package/dist/{UserClient-Y65JLJ23.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-VUNNHEND.js → chunk-2DDWYKF2.js} +9 -9
  16. package/dist/{chunk-VUNNHEND.js.map → chunk-2DDWYKF2.js.map} +1 -1
  17. package/dist/{chunk-MG72SGVS.cjs → chunk-2GZMRCQW.cjs} +5 -5
  18. package/dist/{chunk-MG72SGVS.cjs.map → chunk-2GZMRCQW.cjs.map} +1 -1
  19. package/dist/{chunk-T2GF4S3E.js → chunk-2UDF62XV.js} +6 -6
  20. package/dist/{chunk-T2GF4S3E.js.map → chunk-2UDF62XV.js.map} +1 -1
  21. package/dist/{chunk-XTF6MNIK.js → chunk-2WBSYPUY.js} +3 -3
  22. package/dist/{chunk-XTF6MNIK.js.map → chunk-2WBSYPUY.js.map} +1 -1
  23. package/dist/{chunk-2TS6T2WY.js → chunk-5G5SB6CP.js} +3 -3
  24. package/dist/{chunk-2TS6T2WY.js.map → chunk-5G5SB6CP.js.map} +1 -1
  25. package/dist/{chunk-BBZAD5G2.cjs → chunk-6I22EW6V.cjs} +11 -11
  26. package/dist/{chunk-BBZAD5G2.cjs.map → chunk-6I22EW6V.cjs.map} +1 -1
  27. package/dist/{chunk-6ISQM3SF.cjs → chunk-6PJAHZZ2.cjs} +26 -26
  28. package/dist/{chunk-6ISQM3SF.cjs.map → chunk-6PJAHZZ2.cjs.map} +1 -1
  29. package/dist/{chunk-RF3MSLRW.cjs → chunk-CGKPULZX.cjs} +16 -16
  30. package/dist/{chunk-RF3MSLRW.cjs.map → chunk-CGKPULZX.cjs.map} +1 -1
  31. package/dist/{chunk-SNVHOCU6.js → chunk-D23CZFOM.js} +3 -3
  32. package/dist/{chunk-SNVHOCU6.js.map → chunk-D23CZFOM.js.map} +1 -1
  33. package/dist/{chunk-7RNOKMAJ.cjs → chunk-E37CPC2U.cjs} +9 -9
  34. package/dist/{chunk-7RNOKMAJ.cjs.map → chunk-E37CPC2U.cjs.map} +1 -1
  35. package/dist/{chunk-LKSQASFZ.js → chunk-EZC7Q3SG.js} +3 -3
  36. package/dist/{chunk-LKSQASFZ.js.map → chunk-EZC7Q3SG.js.map} +1 -1
  37. package/dist/{chunk-JCK7VAZF.js → chunk-H5EQBNC6.js} +8 -8
  38. package/dist/{chunk-JCK7VAZF.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-TS5CXRNI.cjs → chunk-MFBTMF5U.cjs} +3 -3
  42. package/dist/{chunk-TS5CXRNI.cjs.map → chunk-MFBTMF5U.cjs.map} +1 -1
  43. package/dist/{chunk-XZDMKHKG.js → chunk-PFMCPSS4.js} +3 -3
  44. package/dist/{chunk-XZDMKHKG.js.map → chunk-PFMCPSS4.js.map} +1 -1
  45. package/dist/{chunk-7HO4IUHZ.cjs → chunk-PKYWLTIJ.cjs} +32 -32
  46. package/dist/{chunk-7HO4IUHZ.cjs.map → chunk-PKYWLTIJ.cjs.map} +1 -1
  47. package/dist/{chunk-MQMTICTP.js → chunk-SXLWFZFX.js} +3 -3
  48. package/dist/{chunk-MQMTICTP.js.map → chunk-SXLWFZFX.js.map} +1 -1
  49. package/dist/{chunk-UUT246S2.js → chunk-TM2LH4ZE.js} +3 -3
  50. package/dist/{chunk-UUT246S2.js.map → chunk-TM2LH4ZE.js.map} +1 -1
  51. package/dist/{chunk-R3N7L7RE.js → chunk-UMTCWOQV.js} +4 -4
  52. package/dist/{chunk-R3N7L7RE.js.map → chunk-UMTCWOQV.js.map} +1 -1
  53. package/dist/{chunk-DOVGH7HB.cjs → chunk-UQMMEDHO.cjs} +4 -4
  54. package/dist/{chunk-DOVGH7HB.cjs.map → chunk-UQMMEDHO.cjs.map} +1 -1
  55. package/dist/{chunk-FZLBMUPN.cjs → chunk-UULR2KA6.cjs} +5 -5
  56. package/dist/{chunk-FZLBMUPN.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-3OIVYXUG.cjs → chunk-W4ENVPZH.cjs} +6 -6
  60. package/dist/{chunk-3OIVYXUG.cjs.map → chunk-W4ENVPZH.cjs.map} +1 -1
  61. package/dist/{chunk-BLA57KBS.cjs → chunk-XFJSY5LG.cjs} +12 -12
  62. package/dist/{chunk-BLA57KBS.cjs.map → chunk-XFJSY5LG.cjs.map} +1 -1
  63. package/dist/core.cjs +202 -202
  64. package/dist/core.d.cts +3 -516
  65. package/dist/core.d.ts +3 -516
  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 +303 -303
  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-SCR3OCME.js → src-2P72LYVT.js} +3 -3
  88. package/dist/src-2P72LYVT.js.map +1 -0
  89. package/dist/{src-UQ4RDCJG.cjs → src-4Q2WFLO2.cjs} +204 -204
  90. package/dist/src-4Q2WFLO2.cjs.map +1 -0
  91. package/dist/{src-WGYHZSLY.cjs → src-HECKBVR2.cjs} +17 -17
  92. package/dist/src-HECKBVR2.cjs.map +1 -0
  93. package/dist/{src-MDGW57S5.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-AJOGJXOC.cjs +0 -15
  101. package/dist/UserClient-Y65JLJ23.js +0 -6
  102. package/dist/chunk-6OWZOTE7.js.map +0 -1
  103. package/dist/chunk-OVNOSAL3.cjs.map +0 -1
  104. package/dist/src-MDGW57S5.js.map +0 -1
  105. package/dist/src-SCR3OCME.js.map +0 -1
  106. package/dist/src-UQ4RDCJG.cjs.map +0 -1
  107. package/dist/src-WGYHZSLY.cjs.map +0 -1
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkTS5CXRNI_cjs = require('./chunk-TS5CXRNI.cjs');
3
+ var chunkMFBTMF5U_cjs = require('./chunk-MFBTMF5U.cjs');
4
4
  var viem = require('viem');
5
5
 
6
6
  // ../identity/src/mysbt.ts
7
7
  async function checkMySBT(client, sbtAddress, user) {
8
8
  const balance = await client.readContract({
9
9
  address: sbtAddress,
10
- abi: chunkTS5CXRNI_cjs.MySBTABI,
10
+ abi: chunkMFBTMF5U_cjs.MySBTABI,
11
11
  functionName: "balanceOf",
12
12
  args: [user]
13
13
  });
@@ -16,7 +16,7 @@ async function checkMySBT(client, sbtAddress, user) {
16
16
  async function getMySBTId(client, sbtAddress, user) {
17
17
  const tokenId = await client.readContract({
18
18
  address: sbtAddress,
19
- abi: chunkTS5CXRNI_cjs.MySBTABI,
19
+ abi: chunkMFBTMF5U_cjs.MySBTABI,
20
20
  functionName: "getUserSBT",
21
21
  args: [user]
22
22
  });
@@ -42,7 +42,7 @@ var ReputationClient = class {
42
42
  async computeScore(user, communities, ruleIds, activities) {
43
43
  return this.client.readContract({
44
44
  address: this.reputationAddress,
45
- abi: chunkTS5CXRNI_cjs.ReputationSystemABI,
45
+ abi: chunkMFBTMF5U_cjs.ReputationSystemABI,
46
46
  functionName: "computeScore",
47
47
  args: [user, communities, ruleIds, activities]
48
48
  });
@@ -111,5 +111,5 @@ var ReputationClient = class {
111
111
  exports.ReputationClient = ReputationClient;
112
112
  exports.checkMySBT = checkMySBT;
113
113
  exports.getMySBTId = getMySBTId;
114
- //# sourceMappingURL=chunk-3OIVYXUG.cjs.map
115
- //# sourceMappingURL=chunk-3OIVYXUG.cjs.map
114
+ //# sourceMappingURL=chunk-W4ENVPZH.cjs.map
115
+ //# sourceMappingURL=chunk-W4ENVPZH.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../identity/src/mysbt.ts","../../identity/src/index.ts"],"names":["MySBTABI","ReputationSystemABI","parseAbi"],"mappings":"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","file":"chunk-3OIVYXUG.cjs","sourcesContent":["\nimport { type Address, type PublicClient } from 'viem';\nimport { MySBTABI } from '@aastar/core';\n\n/**\n * Check if user holds MySBT token (identity verification).\n *\n * Does NOT swallow read errors: `balanceOf` returns 0 for a non-holder, so any\n * thrown error is an RPC/transport/contract failure — masking it as\n * `{ hasSBT: false }` would turn a transient RPC blip into a false \"no SBT\" and\n * wrongly fail eligibility checks. The error propagates so the caller can retry\n * or surface \"couldn't determine\" rather than \"no SBT\".\n */\nexport async function checkMySBT(\n client: any,\n sbtAddress: Address,\n user: Address\n): Promise<{ hasSBT: boolean; balance: bigint }> {\n const balance = await client.readContract({\n address: sbtAddress,\n abi: MySBTABI,\n functionName: 'balanceOf',\n args: [user]\n }) as bigint;\n\n return { hasSBT: balance > 0n, balance };\n}\n\n/**\n * Fetch MySBT token ID for a specific user.\n * MySBT exposes `getUserSBT(address) -> uint256` (alias of the `userToSBT`\n * mapping), which returns the user's tokenId or 0 when they hold no SBT.\n *\n * Returns the tokenId, or `null` ONLY for the genuine \"no SBT\" sentinel (id == 0).\n * Read errors are NOT swallowed (see {@link checkMySBT}): a transient RPC failure\n * must not be reported as \"no SBT\" (a false negative for eligibility). The error\n * propagates to the caller.\n */\nexport async function getMySBTId(\n client: any,\n sbtAddress: Address,\n user: Address\n): Promise<bigint | null> {\n const tokenId = await client.readContract({\n address: sbtAddress,\n abi: MySBTABI,\n functionName: 'getUserSBT',\n args: [user]\n }) as bigint;\n\n // tokenId 0 is the contract's sentinel for \"no SBT\" (ids start at 1).\n return tokenId > 0n ? tokenId : null;\n}\n","\nexport * from './mysbt.js';\n\nimport { createAAStarPublicClient, ReputationSystemABI, type PublicClient, type WalletClient } from '@aastar/core';\nimport { type Address, type Hash, parseAbi } from 'viem';\n\nexport class ReputationClient {\n /** @internal */\n private walletClient?: WalletClient;\n\n /**\n * Initialize ReputationClient\n * @param client The public client for queries\n * @param reputationAddress The address of the reputation system contract\n * @param walletClient Optional wallet client for write operations\n */\n constructor(\n private client: PublicClient, \n private reputationAddress: Address,\n walletClient?: WalletClient\n ) {\n this.walletClient = walletClient;\n }\n\n /**\n * Compute reputation score for a user\n */\n async computeScore(user: Address, communities: Address[], ruleIds: `0x${string}`[][], activities: bigint[][]): Promise<bigint> {\n return this.client.readContract({\n address: this.reputationAddress,\n abi: ReputationSystemABI as any,\n functionName: 'computeScore',\n args: [user, communities, ruleIds, activities]\n }) as Promise<bigint>;\n }\n\n /**\n * Get global reputation score for a user\n * @param user User address\n * @returns Reputation score\n */\n async getGlobalReputation(user: Address): Promise<number> {\n // Try to read score, if fails (e.g. invalid contract), return 0\n try {\n const score = await this.computeScore(user, [], [], []);\n return Number(score);\n } catch (e) {\n console.warn('Failed to read reputation from contract, defaulting to 0');\n return 0;\n }\n }\n\n /**\n * Get credit limit based on reputation\n * @param user User address\n * @returns Credit limit in wei (Mock logic closely tied to Reputation)\n */\n async getCreditLimit(user: Address): Promise<bigint> {\n const reputation = await this.getGlobalReputation(user);\n \n // Dynamic Credit Limit Logic:\n // Base: 0\n // Score > 50: +0.01 ETH\n // Score > 100: +0.05 ETH\n let limit = 0n;\n if (reputation > 50) limit += 10000000000000000n; // 0.01 ETH\n if (reputation > 100) limit += 40000000000000000n; // +0.04 -> 0.05 ETH\n\n return limit;\n }\n\n /**\n * Get reputation score breakdown\n * @param user User address\n * @returns Detailed reputation breakdown (Mock implementation awaiting contract V4)\n */\n async getReputationBreakdown(user: Address): Promise<{\n baseScore: number;\n stakingBonus: number;\n activityBonus: number;\n penaltyDeduction: number;\n total: number;\n }> {\n const total = await this.getGlobalReputation(user);\n \n // Heuristic breakdown\n return {\n baseScore: Math.floor(total * 0.5),\n stakingBonus: Math.floor(total * 0.3),\n activityBonus: Math.floor(total * 0.2),\n penaltyDeduction: 0,\n total\n };\n }\n\n /**\n * Submit reputation proof (off-chain data to on-chain)\n * @param params Proof parameters\n * @returns Transaction hash\n */\n async submitReputationProof(params: {\n proofType: 'github' | 'twitter' | 'on-chain-activity';\n proofData: string;\n signature: Hash;\n }): Promise<Hash> {\n if (!this.walletClient || !this.walletClient.account) {\n throw new Error(\"Wallet client required to submit proofs\");\n }\n\n // Using a generic 'submitProof' signature for now\n // In reality this would target the ReputationOracle or similar\n return this.walletClient.writeContract({\n address: this.reputationAddress,\n abi: parseAbi(['function submitProof(string,bytes32)']),\n functionName: 'submitProof',\n args: [params.proofData, params.signature],\n chain: this.walletClient.chain,\n account: this.walletClient.account\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../../identity/src/mysbt.ts","../../identity/src/index.ts"],"names":["MySBTABI","ReputationSystemABI","parseAbi"],"mappings":"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","file":"chunk-W4ENVPZH.cjs","sourcesContent":["\nimport { type Address, type PublicClient } from 'viem';\nimport { MySBTABI } from '@aastar/core';\n\n/**\n * Check if user holds MySBT token (identity verification).\n *\n * Does NOT swallow read errors: `balanceOf` returns 0 for a non-holder, so any\n * thrown error is an RPC/transport/contract failure — masking it as\n * `{ hasSBT: false }` would turn a transient RPC blip into a false \"no SBT\" and\n * wrongly fail eligibility checks. The error propagates so the caller can retry\n * or surface \"couldn't determine\" rather than \"no SBT\".\n */\nexport async function checkMySBT(\n client: any,\n sbtAddress: Address,\n user: Address\n): Promise<{ hasSBT: boolean; balance: bigint }> {\n const balance = await client.readContract({\n address: sbtAddress,\n abi: MySBTABI,\n functionName: 'balanceOf',\n args: [user]\n }) as bigint;\n\n return { hasSBT: balance > 0n, balance };\n}\n\n/**\n * Fetch MySBT token ID for a specific user.\n * MySBT exposes `getUserSBT(address) -> uint256` (alias of the `userToSBT`\n * mapping), which returns the user's tokenId or 0 when they hold no SBT.\n *\n * Returns the tokenId, or `null` ONLY for the genuine \"no SBT\" sentinel (id == 0).\n * Read errors are NOT swallowed (see {@link checkMySBT}): a transient RPC failure\n * must not be reported as \"no SBT\" (a false negative for eligibility). The error\n * propagates to the caller.\n */\nexport async function getMySBTId(\n client: any,\n sbtAddress: Address,\n user: Address\n): Promise<bigint | null> {\n const tokenId = await client.readContract({\n address: sbtAddress,\n abi: MySBTABI,\n functionName: 'getUserSBT',\n args: [user]\n }) as bigint;\n\n // tokenId 0 is the contract's sentinel for \"no SBT\" (ids start at 1).\n return tokenId > 0n ? tokenId : null;\n}\n","\nexport * from './mysbt.js';\n\nimport { createAAStarPublicClient, ReputationSystemABI, type PublicClient, type WalletClient } from '@aastar/core';\nimport { type Address, type Hash, parseAbi } from 'viem';\n\nexport class ReputationClient {\n /** @internal */\n private walletClient?: WalletClient;\n\n /**\n * Initialize ReputationClient\n * @param client The public client for queries\n * @param reputationAddress The address of the reputation system contract\n * @param walletClient Optional wallet client for write operations\n */\n constructor(\n private client: PublicClient, \n private reputationAddress: Address,\n walletClient?: WalletClient\n ) {\n this.walletClient = walletClient;\n }\n\n /**\n * Compute reputation score for a user\n */\n async computeScore(user: Address, communities: Address[], ruleIds: `0x${string}`[][], activities: bigint[][]): Promise<bigint> {\n return this.client.readContract({\n address: this.reputationAddress,\n abi: ReputationSystemABI as any,\n functionName: 'computeScore',\n args: [user, communities, ruleIds, activities]\n }) as Promise<bigint>;\n }\n\n /**\n * Get global reputation score for a user\n * @param user User address\n * @returns Reputation score\n */\n async getGlobalReputation(user: Address): Promise<number> {\n // Try to read score, if fails (e.g. invalid contract), return 0\n try {\n const score = await this.computeScore(user, [], [], []);\n return Number(score);\n } catch (e) {\n console.warn('Failed to read reputation from contract, defaulting to 0');\n return 0;\n }\n }\n\n /**\n * Get credit limit based on reputation\n * @param user User address\n * @returns Credit limit in wei (Mock logic closely tied to Reputation)\n */\n async getCreditLimit(user: Address): Promise<bigint> {\n const reputation = await this.getGlobalReputation(user);\n \n // Dynamic Credit Limit Logic:\n // Base: 0\n // Score > 50: +0.01 ETH\n // Score > 100: +0.05 ETH\n let limit = 0n;\n if (reputation > 50) limit += 10000000000000000n; // 0.01 ETH\n if (reputation > 100) limit += 40000000000000000n; // +0.04 -> 0.05 ETH\n\n return limit;\n }\n\n /**\n * Get reputation score breakdown\n * @param user User address\n * @returns Detailed reputation breakdown (Mock implementation awaiting contract V4)\n */\n async getReputationBreakdown(user: Address): Promise<{\n baseScore: number;\n stakingBonus: number;\n activityBonus: number;\n penaltyDeduction: number;\n total: number;\n }> {\n const total = await this.getGlobalReputation(user);\n \n // Heuristic breakdown\n return {\n baseScore: Math.floor(total * 0.5),\n stakingBonus: Math.floor(total * 0.3),\n activityBonus: Math.floor(total * 0.2),\n penaltyDeduction: 0,\n total\n };\n }\n\n /**\n * Submit reputation proof (off-chain data to on-chain)\n * @param params Proof parameters\n * @returns Transaction hash\n */\n async submitReputationProof(params: {\n proofType: 'github' | 'twitter' | 'on-chain-activity';\n proofData: string;\n signature: Hash;\n }): Promise<Hash> {\n if (!this.walletClient || !this.walletClient.account) {\n throw new Error(\"Wallet client required to submit proofs\");\n }\n\n // Using a generic 'submitProof' signature for now\n // In reality this would target the ReputationOracle or similar\n return this.walletClient.writeContract({\n address: this.reputationAddress,\n abi: parseAbi(['function submitProof(string,bytes32)']),\n functionName: 'submitProof',\n args: [params.proofData, params.signature],\n chain: this.walletClient.chain,\n account: this.walletClient.account\n });\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkTS5CXRNI_cjs = require('./chunk-TS5CXRNI.cjs');
3
+ var chunkMFBTMF5U_cjs = require('./chunk-MFBTMF5U.cjs');
4
4
  var viem = require('viem');
5
5
 
6
6
  var STAKING_ABI = viem.parseAbi([
@@ -28,7 +28,7 @@ var FinanceClient = class _FinanceClient {
28
28
  static async depositToPaymaster(wallet, paymaster, amount) {
29
29
  return wallet.writeContract({
30
30
  address: paymaster,
31
- abi: chunkTS5CXRNI_cjs.SuperPaymasterABI,
31
+ abi: chunkMFBTMF5U_cjs.SuperPaymasterABI,
32
32
  functionName: "deposit",
33
33
  args: [amount],
34
34
  chain: wallet.chain
@@ -65,7 +65,7 @@ var FinanceClient = class _FinanceClient {
65
65
  static async withdrawProtocolRevenue(wallet, paymaster, to, amount) {
66
66
  return wallet.writeContract({
67
67
  address: paymaster,
68
- abi: chunkTS5CXRNI_cjs.SuperPaymasterABI,
68
+ abi: chunkMFBTMF5U_cjs.SuperPaymasterABI,
69
69
  functionName: "withdrawProtocolRevenue",
70
70
  args: [to, amount],
71
71
  chain: wallet.chain
@@ -95,7 +95,7 @@ var FinanceClient = class _FinanceClient {
95
95
  static async operatorDeposit(wallet, paymaster, amount) {
96
96
  return wallet.writeContract({
97
97
  address: paymaster,
98
- abi: chunkTS5CXRNI_cjs.SuperPaymasterABI,
98
+ abi: chunkMFBTMF5U_cjs.SuperPaymasterABI,
99
99
  functionName: "deposit",
100
100
  args: [amount],
101
101
  chain: wallet.chain
@@ -105,7 +105,7 @@ var FinanceClient = class _FinanceClient {
105
105
  static async operatorNotifyDeposit(wallet, paymaster, amount) {
106
106
  return wallet.writeContract({
107
107
  address: paymaster,
108
- abi: chunkTS5CXRNI_cjs.SuperPaymasterABI,
108
+ abi: chunkMFBTMF5U_cjs.SuperPaymasterABI,
109
109
  functionName: "notifyDeposit",
110
110
  args: [amount],
111
111
  chain: wallet.chain
@@ -116,7 +116,7 @@ var FinanceClient = class _FinanceClient {
116
116
  * Get GToken balance
117
117
  */
118
118
  async getGTokenBalance(address) {
119
- const { CORE_ADDRESSES } = await import('./src-UQ4RDCJG.cjs');
119
+ const { CORE_ADDRESSES } = await import('./src-4Q2WFLO2.cjs');
120
120
  return this.publicClient.readContract({
121
121
  address: CORE_ADDRESSES.gToken,
122
122
  abi: ERC20_ABI,
@@ -128,7 +128,7 @@ var FinanceClient = class _FinanceClient {
128
128
  * Get aPNTs balance
129
129
  */
130
130
  async getAPNTsBalance(address) {
131
- const { CORE_ADDRESSES } = await import('./src-UQ4RDCJG.cjs');
131
+ const { CORE_ADDRESSES } = await import('./src-4Q2WFLO2.cjs');
132
132
  return this.publicClient.readContract({
133
133
  address: CORE_ADDRESSES.aPNTs,
134
134
  abi: ERC20_ABI,
@@ -145,7 +145,7 @@ var FinanceClient = class _FinanceClient {
145
145
  async approveAndStake(amount) {
146
146
  const account = this.walletClient.account;
147
147
  if (!account) throw new Error("Account required");
148
- const { CORE_ADDRESSES } = await import('./src-UQ4RDCJG.cjs');
148
+ const { CORE_ADDRESSES } = await import('./src-4Q2WFLO2.cjs');
149
149
  const gTokenAddress = CORE_ADDRESSES.gToken;
150
150
  const stakingAddress = CORE_ADDRESSES.gTokenStaking;
151
151
  const allowance = await this.publicClient.readContract({
@@ -174,7 +174,7 @@ var FinanceClient = class _FinanceClient {
174
174
  * Get circulating supply (total - locked)
175
175
  */
176
176
  async getCirculatingSupply() {
177
- const { CORE_ADDRESSES } = await import('./src-UQ4RDCJG.cjs');
177
+ const { CORE_ADDRESSES } = await import('./src-4Q2WFLO2.cjs');
178
178
  const gTokenAddress = CORE_ADDRESSES.gToken;
179
179
  const total = await this.publicClient.readContract({
180
180
  address: gTokenAddress,
@@ -192,7 +192,7 @@ var FinanceClient = class _FinanceClient {
192
192
  * Get comprehensive tokenomics data
193
193
  */
194
194
  async getTokenomicsOverview() {
195
- const { CORE_ADDRESSES } = await import('./src-UQ4RDCJG.cjs');
195
+ const { CORE_ADDRESSES } = await import('./src-4Q2WFLO2.cjs');
196
196
  const [totalSupply, totalStaked, blackholeBalance] = await Promise.all([
197
197
  this.publicClient.readContract({
198
198
  address: CORE_ADDRESSES.gToken,
@@ -224,5 +224,5 @@ var FinanceClient = class _FinanceClient {
224
224
  };
225
225
 
226
226
  exports.FinanceClient = FinanceClient;
227
- //# sourceMappingURL=chunk-BLA57KBS.cjs.map
228
- //# sourceMappingURL=chunk-BLA57KBS.cjs.map
227
+ //# sourceMappingURL=chunk-XFJSY5LG.cjs.map
228
+ //# sourceMappingURL=chunk-XFJSY5LG.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../tokens/src/index.ts"],"names":["parseAbi","SuperPaymasterABI","formatEther"],"mappings":"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","file":"chunk-BLA57KBS.cjs","sourcesContent":["import { type Address, parseAbi, type Hash, formatEther } from 'viem';\nimport { SuperPaymasterABI as SUPERPAYMASTER_ABI, CONTRACTS, type PublicClient, type WalletClient } from '@aastar/core';\n\nconst STAKING_ABI = parseAbi([\n 'function stake(uint256)',\n 'function withdraw(uint256)'\n]);\n\nconst ERC20_ABI = parseAbi([\n 'function balanceOf(address) view returns (uint256)',\n 'function totalSupply() view returns (uint256)',\n 'function approve(address,uint256) returns (bool)',\n 'function transfer(address,uint256) returns (bool)'\n]);\n\nexport class FinanceClient {\n /**\n * Initialize FinanceClient\n * @param publicClient The public client for queries\n * @param walletClient The wallet client for transactions\n */\n constructor(\n private publicClient: PublicClient,\n private walletClient: WalletClient\n ) {}\n\n // ========== Existing static methods (preserved for backward compatibility) ==========\n \n /** @deprecated Use instance methods instead */\n static async depositToPaymaster(wallet: WalletClient, paymaster: Address, amount: bigint) {\n return wallet.writeContract({\n address: paymaster,\n abi: SUPERPAYMASTER_ABI,\n functionName: 'deposit',\n args: [amount],\n chain: wallet.chain\n } as any);\n }\n\n /** @deprecated Use instance methods instead */\n static async depositViaTransferAndCall(wallet: WalletClient, token: Address, paymaster: Address, amount: bigint) {\n const ERC1363_ABI = [{\n name: 'transferAndCall',\n type: 'function',\n stateMutability: 'nonpayable',\n inputs: [{ type: 'address', name: 'to' }, { type: 'uint256', name: 'value' }],\n outputs: [{ type: 'bool' }]\n }] as const;\n\n return wallet.writeContract({\n address: token,\n abi: ERC1363_ABI,\n functionName: 'transferAndCall',\n args: [paymaster, amount],\n chain: wallet.chain\n } as any);\n }\n\n /** @deprecated Use instance methods instead */\n static async stakeGToken(wallet: WalletClient, stakingAddr: Address, amount: bigint) {\n return wallet.writeContract({\n address: stakingAddr,\n abi: STAKING_ABI,\n functionName: 'stake',\n args: [amount],\n chain: wallet.chain\n } as any);\n }\n\n /** @deprecated Use instance methods instead */\n static async withdrawProtocolRevenue(wallet: WalletClient, paymaster: Address, to: Address, amount: bigint) {\n return wallet.writeContract({\n address: paymaster,\n abi: SUPERPAYMASTER_ABI,\n functionName: 'withdrawProtocolRevenue',\n args: [to, amount],\n chain: wallet.chain\n } as any);\n }\n\n /** @deprecated Use instance methods instead */\n static async depositToEntryPoint(wallet: WalletClient, entryPoint: Address, paymaster: Address, amount: bigint) {\n return wallet.writeContract({\n address: entryPoint,\n abi: parseAbi(['function depositTo(address) payable']),\n functionName: 'depositTo',\n args: [paymaster],\n value: amount,\n chain: wallet.chain\n } as any);\n }\n\n /** @deprecated Use instance methods instead */\n static async getEntryPointBalance(client: any, entryPoint: Address, account: Address): Promise<bigint> {\n return client.readContract({\n address: entryPoint,\n abi: parseAbi(['function balanceOf(address) view returns (uint256)']),\n functionName: 'balanceOf',\n args: [account]\n });\n }\n\n /** @deprecated Use instance methods instead */\n static async operatorDeposit(wallet: WalletClient, paymaster: Address, amount: bigint) {\n return wallet.writeContract({\n address: paymaster,\n abi: SUPERPAYMASTER_ABI,\n functionName: 'deposit',\n args: [amount],\n chain: wallet.chain\n } as any);\n }\n\n /** @deprecated Use instance methods instead */\n static async operatorNotifyDeposit(wallet: WalletClient, paymaster: Address, amount: bigint) {\n return wallet.writeContract({\n address: paymaster,\n abi: SUPERPAYMASTER_ABI,\n functionName: 'notifyDeposit',\n args: [amount],\n chain: wallet.chain\n } as any);\n }\n\n // ========== New instance methods (business primitives) ==========\n\n /**\n * Get GToken balance\n */\n async getGTokenBalance(address: Address): Promise<bigint> {\n const { CORE_ADDRESSES } = await import('@aastar/core');\n return this.publicClient.readContract({\n address: CORE_ADDRESSES.gToken,\n abi: ERC20_ABI,\n functionName: 'balanceOf',\n args: [address]\n }) as Promise<bigint>;\n }\n\n /**\n * Get aPNTs balance\n */\n async getAPNTsBalance(address: Address): Promise<bigint> {\n const { CORE_ADDRESSES } = await import('@aastar/core');\n return this.publicClient.readContract({\n address: CORE_ADDRESSES.aPNTs,\n abi: ERC20_ABI,\n functionName: 'balanceOf',\n args: [address]\n }) as Promise<bigint>;\n }\n\n /**\n * One-step stake: Approve (if needed) + Stake\n * \n * @param amount Amount of GToken to stake\n * @returns Transaction hash of the stake action\n */\n async approveAndStake(amount: bigint): Promise<Hash> {\n const account = this.walletClient.account;\n if (!account) throw new Error(\"Account required\");\n\n const { CORE_ADDRESSES } = await import('@aastar/core');\n const gTokenAddress = CORE_ADDRESSES.gToken;\n const stakingAddress = CORE_ADDRESSES.gTokenStaking;\n \n // 1. Check Allowance\n const allowance = await this.publicClient.readContract({\n address: gTokenAddress,\n abi: parseAbi(['function allowance(address owner, address spender) view returns (uint256)']),\n functionName: 'allowance',\n args: [account.address, stakingAddress]\n }); // as bigint\n\n if ((allowance as bigint) < amount) {\n console.log(`[FinanceClient] Approving ${formatEther(amount)} GToken...`);\n const approveTx = await this.walletClient.writeContract({\n address: gTokenAddress,\n abi: parseAbi(['function approve(address spender, uint256 amount) returns (bool)']),\n functionName: 'approve',\n args: [stakingAddress, amount],\n chain: this.walletClient.chain,\n account\n });\n await this.publicClient.waitForTransactionReceipt({ hash: approveTx });\n console.log(`[FinanceClient] Approved.`);\n }\n\n // 2. Stake\n console.log(`[FinanceClient] Staking...`);\n return FinanceClient.stakeGToken(this.walletClient, stakingAddress, amount);\n }\n\n /**\n * Get circulating supply (total - locked)\n */\n async getCirculatingSupply(): Promise<{\n total: bigint;\n locked: bigint;\n circulating: bigint;\n }> {\n const { CORE_ADDRESSES } = await import('@aastar/core');\n const gTokenAddress = CORE_ADDRESSES.gToken;\n\n const total = await this.publicClient.readContract({\n address: gTokenAddress,\n abi: ERC20_ABI,\n functionName: 'totalSupply'\n }) as bigint;\n\n // In a real scenario, we might query GTokenStaking's totalStaked\n const locked = 0n;\n\n return {\n total,\n locked,\n circulating: total - locked\n };\n }\n\n /**\n * Get comprehensive tokenomics data\n */\n async getTokenomicsOverview(): Promise<{\n totalSupply: bigint;\n totalStaked: bigint;\n totalBurned: bigint;\n circulatingSupply: bigint;\n stakingRatio: number;\n }> {\n const { CORE_ADDRESSES } = await import('@aastar/core');\n \n const [totalSupply, totalStaked, blackholeBalance] = await Promise.all([\n this.publicClient.readContract({\n address: CORE_ADDRESSES.gToken,\n abi: parseAbi(['function totalSupply() view returns (uint256)']),\n functionName: 'totalSupply'\n }) as Promise<bigint>,\n this.publicClient.readContract({\n address: CORE_ADDRESSES.gTokenStaking,\n abi: parseAbi(['function totalStaked() view returns (uint256)']),\n functionName: 'totalStaked'\n }) as Promise<bigint>,\n this.publicClient.readContract({\n address: CORE_ADDRESSES.gToken,\n abi: parseAbi(['function balanceOf(address) view returns (uint256)']),\n functionName: 'balanceOf',\n args: ['0x000000000000000000000000000000000000dEaD']\n }) as Promise<bigint>\n ]);\n\n const circulating = totalSupply - totalStaked - blackholeBalance;\n const ratio = Number(formatEther(totalStaked)) / Number(formatEther(totalSupply)) * 100;\n\n return {\n totalSupply,\n totalStaked,\n totalBurned: blackholeBalance,\n circulatingSupply: circulating,\n stakingRatio: ratio\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../../tokens/src/index.ts"],"names":["parseAbi","SuperPaymasterABI","formatEther"],"mappings":"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","file":"chunk-XFJSY5LG.cjs","sourcesContent":["import { type Address, parseAbi, type Hash, formatEther } from 'viem';\nimport { SuperPaymasterABI as SUPERPAYMASTER_ABI, CONTRACTS, type PublicClient, type WalletClient } from '@aastar/core';\n\nconst STAKING_ABI = parseAbi([\n 'function stake(uint256)',\n 'function withdraw(uint256)'\n]);\n\nconst ERC20_ABI = parseAbi([\n 'function balanceOf(address) view returns (uint256)',\n 'function totalSupply() view returns (uint256)',\n 'function approve(address,uint256) returns (bool)',\n 'function transfer(address,uint256) returns (bool)'\n]);\n\nexport class FinanceClient {\n /**\n * Initialize FinanceClient\n * @param publicClient The public client for queries\n * @param walletClient The wallet client for transactions\n */\n constructor(\n private publicClient: PublicClient,\n private walletClient: WalletClient\n ) {}\n\n // ========== Existing static methods (preserved for backward compatibility) ==========\n \n /** @deprecated Use instance methods instead */\n static async depositToPaymaster(wallet: WalletClient, paymaster: Address, amount: bigint) {\n return wallet.writeContract({\n address: paymaster,\n abi: SUPERPAYMASTER_ABI,\n functionName: 'deposit',\n args: [amount],\n chain: wallet.chain\n } as any);\n }\n\n /** @deprecated Use instance methods instead */\n static async depositViaTransferAndCall(wallet: WalletClient, token: Address, paymaster: Address, amount: bigint) {\n const ERC1363_ABI = [{\n name: 'transferAndCall',\n type: 'function',\n stateMutability: 'nonpayable',\n inputs: [{ type: 'address', name: 'to' }, { type: 'uint256', name: 'value' }],\n outputs: [{ type: 'bool' }]\n }] as const;\n\n return wallet.writeContract({\n address: token,\n abi: ERC1363_ABI,\n functionName: 'transferAndCall',\n args: [paymaster, amount],\n chain: wallet.chain\n } as any);\n }\n\n /** @deprecated Use instance methods instead */\n static async stakeGToken(wallet: WalletClient, stakingAddr: Address, amount: bigint) {\n return wallet.writeContract({\n address: stakingAddr,\n abi: STAKING_ABI,\n functionName: 'stake',\n args: [amount],\n chain: wallet.chain\n } as any);\n }\n\n /** @deprecated Use instance methods instead */\n static async withdrawProtocolRevenue(wallet: WalletClient, paymaster: Address, to: Address, amount: bigint) {\n return wallet.writeContract({\n address: paymaster,\n abi: SUPERPAYMASTER_ABI,\n functionName: 'withdrawProtocolRevenue',\n args: [to, amount],\n chain: wallet.chain\n } as any);\n }\n\n /** @deprecated Use instance methods instead */\n static async depositToEntryPoint(wallet: WalletClient, entryPoint: Address, paymaster: Address, amount: bigint) {\n return wallet.writeContract({\n address: entryPoint,\n abi: parseAbi(['function depositTo(address) payable']),\n functionName: 'depositTo',\n args: [paymaster],\n value: amount,\n chain: wallet.chain\n } as any);\n }\n\n /** @deprecated Use instance methods instead */\n static async getEntryPointBalance(client: any, entryPoint: Address, account: Address): Promise<bigint> {\n return client.readContract({\n address: entryPoint,\n abi: parseAbi(['function balanceOf(address) view returns (uint256)']),\n functionName: 'balanceOf',\n args: [account]\n });\n }\n\n /** @deprecated Use instance methods instead */\n static async operatorDeposit(wallet: WalletClient, paymaster: Address, amount: bigint) {\n return wallet.writeContract({\n address: paymaster,\n abi: SUPERPAYMASTER_ABI,\n functionName: 'deposit',\n args: [amount],\n chain: wallet.chain\n } as any);\n }\n\n /** @deprecated Use instance methods instead */\n static async operatorNotifyDeposit(wallet: WalletClient, paymaster: Address, amount: bigint) {\n return wallet.writeContract({\n address: paymaster,\n abi: SUPERPAYMASTER_ABI,\n functionName: 'notifyDeposit',\n args: [amount],\n chain: wallet.chain\n } as any);\n }\n\n // ========== New instance methods (business primitives) ==========\n\n /**\n * Get GToken balance\n */\n async getGTokenBalance(address: Address): Promise<bigint> {\n const { CORE_ADDRESSES } = await import('@aastar/core');\n return this.publicClient.readContract({\n address: CORE_ADDRESSES.gToken,\n abi: ERC20_ABI,\n functionName: 'balanceOf',\n args: [address]\n }) as Promise<bigint>;\n }\n\n /**\n * Get aPNTs balance\n */\n async getAPNTsBalance(address: Address): Promise<bigint> {\n const { CORE_ADDRESSES } = await import('@aastar/core');\n return this.publicClient.readContract({\n address: CORE_ADDRESSES.aPNTs,\n abi: ERC20_ABI,\n functionName: 'balanceOf',\n args: [address]\n }) as Promise<bigint>;\n }\n\n /**\n * One-step stake: Approve (if needed) + Stake\n * \n * @param amount Amount of GToken to stake\n * @returns Transaction hash of the stake action\n */\n async approveAndStake(amount: bigint): Promise<Hash> {\n const account = this.walletClient.account;\n if (!account) throw new Error(\"Account required\");\n\n const { CORE_ADDRESSES } = await import('@aastar/core');\n const gTokenAddress = CORE_ADDRESSES.gToken;\n const stakingAddress = CORE_ADDRESSES.gTokenStaking;\n \n // 1. Check Allowance\n const allowance = await this.publicClient.readContract({\n address: gTokenAddress,\n abi: parseAbi(['function allowance(address owner, address spender) view returns (uint256)']),\n functionName: 'allowance',\n args: [account.address, stakingAddress]\n }); // as bigint\n\n if ((allowance as bigint) < amount) {\n console.log(`[FinanceClient] Approving ${formatEther(amount)} GToken...`);\n const approveTx = await this.walletClient.writeContract({\n address: gTokenAddress,\n abi: parseAbi(['function approve(address spender, uint256 amount) returns (bool)']),\n functionName: 'approve',\n args: [stakingAddress, amount],\n chain: this.walletClient.chain,\n account\n });\n await this.publicClient.waitForTransactionReceipt({ hash: approveTx });\n console.log(`[FinanceClient] Approved.`);\n }\n\n // 2. Stake\n console.log(`[FinanceClient] Staking...`);\n return FinanceClient.stakeGToken(this.walletClient, stakingAddress, amount);\n }\n\n /**\n * Get circulating supply (total - locked)\n */\n async getCirculatingSupply(): Promise<{\n total: bigint;\n locked: bigint;\n circulating: bigint;\n }> {\n const { CORE_ADDRESSES } = await import('@aastar/core');\n const gTokenAddress = CORE_ADDRESSES.gToken;\n\n const total = await this.publicClient.readContract({\n address: gTokenAddress,\n abi: ERC20_ABI,\n functionName: 'totalSupply'\n }) as bigint;\n\n // In a real scenario, we might query GTokenStaking's totalStaked\n const locked = 0n;\n\n return {\n total,\n locked,\n circulating: total - locked\n };\n }\n\n /**\n * Get comprehensive tokenomics data\n */\n async getTokenomicsOverview(): Promise<{\n totalSupply: bigint;\n totalStaked: bigint;\n totalBurned: bigint;\n circulatingSupply: bigint;\n stakingRatio: number;\n }> {\n const { CORE_ADDRESSES } = await import('@aastar/core');\n \n const [totalSupply, totalStaked, blackholeBalance] = await Promise.all([\n this.publicClient.readContract({\n address: CORE_ADDRESSES.gToken,\n abi: parseAbi(['function totalSupply() view returns (uint256)']),\n functionName: 'totalSupply'\n }) as Promise<bigint>,\n this.publicClient.readContract({\n address: CORE_ADDRESSES.gTokenStaking,\n abi: parseAbi(['function totalStaked() view returns (uint256)']),\n functionName: 'totalStaked'\n }) as Promise<bigint>,\n this.publicClient.readContract({\n address: CORE_ADDRESSES.gToken,\n abi: parseAbi(['function balanceOf(address) view returns (uint256)']),\n functionName: 'balanceOf',\n args: ['0x000000000000000000000000000000000000dEaD']\n }) as Promise<bigint>\n ]);\n\n const circulating = totalSupply - totalStaked - blackholeBalance;\n const ratio = Number(formatEther(totalStaked)) / Number(formatEther(totalSupply)) * 100;\n\n return {\n totalSupply,\n totalStaked,\n totalBurned: blackholeBalance,\n circulatingSupply: circulating,\n stakingRatio: ratio\n };\n }\n}\n"]}