@aastar/sdk 0.18.0 → 0.20.2

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 (103) hide show
  1. package/LICENSE +180 -21
  2. package/dist/UserClient-YUHCJJJL.js +6 -0
  3. package/dist/UserClient-YUHCJJJL.js.map +1 -0
  4. package/dist/account.d.ts +1 -0
  5. package/dist/account.js +6 -0
  6. package/dist/account.js.map +1 -0
  7. package/dist/admin.d.ts +1 -0
  8. package/dist/admin.js +6 -0
  9. package/dist/admin.js.map +1 -0
  10. package/dist/airaccount.d.ts +2 -0
  11. package/dist/airaccount.js +4501 -0
  12. package/dist/airaccount.js.map +1 -0
  13. package/dist/channel.d.ts +1 -0
  14. package/dist/channel.js +6 -0
  15. package/dist/channel.js.map +1 -0
  16. package/dist/chunk-4DVUM4MC.js +106 -0
  17. package/dist/chunk-4DVUM4MC.js.map +1 -0
  18. package/dist/chunk-4KRQXOTI.js +4421 -0
  19. package/dist/chunk-4KRQXOTI.js.map +1 -0
  20. package/dist/chunk-DI3E6PMI.js +426 -0
  21. package/dist/chunk-DI3E6PMI.js.map +1 -0
  22. package/dist/chunk-DSZ372PH.js +333 -0
  23. package/dist/chunk-DSZ372PH.js.map +1 -0
  24. package/dist/chunk-HVAB4TTT.js +116 -0
  25. package/dist/chunk-HVAB4TTT.js.map +1 -0
  26. package/dist/chunk-MPOMWT2J.js +1140 -0
  27. package/dist/chunk-MPOMWT2J.js.map +1 -0
  28. package/dist/chunk-NZGXB2C5.js +115 -0
  29. package/dist/chunk-NZGXB2C5.js.map +1 -0
  30. package/dist/chunk-O3Y7II3B.js +578 -0
  31. package/dist/chunk-O3Y7II3B.js.map +1 -0
  32. package/dist/chunk-OSPRJZ5T.js +113 -0
  33. package/dist/chunk-OSPRJZ5T.js.map +1 -0
  34. package/dist/chunk-PCLPYRTX.js +229 -0
  35. package/dist/chunk-PCLPYRTX.js.map +1 -0
  36. package/dist/chunk-PZ5AY32C.js +9 -0
  37. package/dist/chunk-PZ5AY32C.js.map +1 -0
  38. package/dist/chunk-XFI3AK32.js +416 -0
  39. package/dist/chunk-XFI3AK32.js.map +1 -0
  40. package/dist/chunk-YHM77LIP.js +432 -0
  41. package/dist/chunk-YHM77LIP.js.map +1 -0
  42. package/dist/chunk-ZSSNU3UF.js +42091 -0
  43. package/dist/chunk-ZSSNU3UF.js.map +1 -0
  44. package/dist/contract-addresses-JE3X6DFY.js +4 -0
  45. package/dist/contract-addresses-JE3X6DFY.js.map +1 -0
  46. package/dist/core.d.ts +13 -0
  47. package/dist/core.js +5 -0
  48. package/dist/core.js.map +1 -0
  49. package/dist/dapp.d.ts +1 -0
  50. package/dist/dapp.js +283 -0
  51. package/dist/dapp.js.map +1 -0
  52. package/dist/dist-GHTBO7CD.js +6 -0
  53. package/dist/dist-GHTBO7CD.js.map +1 -0
  54. package/dist/enduser.d.ts +1 -0
  55. package/dist/enduser.js +7 -0
  56. package/dist/enduser.js.map +1 -0
  57. package/dist/identity.d.ts +1 -0
  58. package/dist/identity.js +6 -0
  59. package/dist/identity.js.map +1 -0
  60. package/dist/index.d.ts +601 -13
  61. package/dist/index.js +1639 -28
  62. package/dist/index.js.map +1 -0
  63. package/dist/index.node-55LOPHNQ.js +5 -0
  64. package/dist/index.node-55LOPHNQ.js.map +1 -0
  65. package/dist/lib-VRTYVDUO.js +1861 -0
  66. package/dist/lib-VRTYVDUO.js.map +1 -0
  67. package/dist/operator.d.ts +1 -0
  68. package/dist/operator.js +6 -0
  69. package/dist/operator.js.map +1 -0
  70. package/dist/paymaster.d.ts +1 -0
  71. package/dist/paymaster.js +6 -0
  72. package/dist/paymaster.js.map +1 -0
  73. package/dist/tokens.d.ts +1 -0
  74. package/dist/tokens.js +6 -0
  75. package/dist/tokens.js.map +1 -0
  76. package/dist/x402.d.ts +1 -0
  77. package/dist/x402.js +6 -0
  78. package/dist/x402.js.map +1 -0
  79. package/package.json +87 -18
  80. package/dist/clients/ExperimentClient.d.ts +0 -34
  81. package/dist/clients/ExperimentClient.js +0 -58
  82. package/dist/clients/admin.d.ts +0 -11
  83. package/dist/clients/admin.js +0 -20
  84. package/dist/clients/community.d.ts +0 -40
  85. package/dist/clients/community.js +0 -300
  86. package/dist/clients/endUser.d.ts +0 -77
  87. package/dist/clients/endUser.js +0 -298
  88. package/dist/clients/operator.d.ts +0 -66
  89. package/dist/clients/operator.js +0 -209
  90. package/dist/errors/decoder.d.ts +0 -6
  91. package/dist/errors/decoder.js +0 -44
  92. package/dist/utils/errorHandler.d.ts +0 -40
  93. package/dist/utils/errorHandler.js +0 -114
  94. package/dist/utils/funding.d.ts +0 -115
  95. package/dist/utils/funding.js +0 -188
  96. package/dist/utils/keys.d.ts +0 -61
  97. package/dist/utils/keys.js +0 -130
  98. package/dist/utils/roleData.d.ts +0 -66
  99. package/dist/utils/roleData.js +0 -128
  100. package/dist/utils/testScenarios.d.ts +0 -33
  101. package/dist/utils/testScenarios.js +0 -85
  102. package/dist/utils/userOp.d.ts +0 -89
  103. package/dist/utils/userOp.js +0 -231
@@ -0,0 +1,113 @@
1
+ import { channelActions } from './chunk-ZSSNU3UF.js';
2
+
3
+ // ../channel/dist/voucher.js
4
+ var VOUCHER_TYPES = {
5
+ Voucher: [
6
+ { name: "channelId", type: "bytes32" },
7
+ { name: "cumulativeAmount", type: "uint128" }
8
+ ]
9
+ };
10
+ function getVoucherDomain(chainId, verifyingContract) {
11
+ return {
12
+ name: "MicroPaymentChannel",
13
+ version: "1.0.0",
14
+ chainId,
15
+ verifyingContract
16
+ };
17
+ }
18
+ async function signVoucher(walletClient, params) {
19
+ const domain = getVoucherDomain(params.chainId, params.verifyingContract);
20
+ const account = walletClient.account;
21
+ if (!account) {
22
+ throw new Error("WalletClient must have an account");
23
+ }
24
+ return walletClient.signTypedData({
25
+ account,
26
+ domain,
27
+ types: VOUCHER_TYPES,
28
+ primaryType: "Voucher",
29
+ message: {
30
+ channelId: params.channelId,
31
+ cumulativeAmount: params.cumulativeAmount
32
+ }
33
+ });
34
+ }
35
+
36
+ // ../channel/dist/ChannelClient.js
37
+ var ChannelClient = class {
38
+ readActions;
39
+ writeActions;
40
+ config;
41
+ constructor(config) {
42
+ this.config = config;
43
+ this.readActions = channelActions(config.channelAddress)(config.publicClient);
44
+ this.writeActions = channelActions(config.channelAddress)(config.walletClient);
45
+ }
46
+ async openChannel(channelConfig) {
47
+ return this.writeActions.openChannel({
48
+ payee: channelConfig.payee,
49
+ token: channelConfig.token,
50
+ deposit: channelConfig.deposit,
51
+ salt: channelConfig.salt,
52
+ authorizedSigner: channelConfig.authorizedSigner,
53
+ account: this.config.walletClient.account
54
+ });
55
+ }
56
+ async signVoucherOffline(channelId, cumulativeAmount) {
57
+ const signature = await signVoucher(this.config.walletClient, {
58
+ channelId,
59
+ cumulativeAmount,
60
+ chainId: this.config.chainId,
61
+ verifyingContract: this.config.channelAddress
62
+ });
63
+ return { channelId, cumulativeAmount, signature };
64
+ }
65
+ async settleChannel(voucher) {
66
+ return this.writeActions.settleChannel({
67
+ channelId: voucher.channelId,
68
+ cumulativeAmount: voucher.cumulativeAmount,
69
+ signature: voucher.signature,
70
+ account: this.config.walletClient.account
71
+ });
72
+ }
73
+ async closeChannel(voucher) {
74
+ return this.writeActions.closeChannel({
75
+ channelId: voucher.channelId,
76
+ cumulativeAmount: voucher.cumulativeAmount,
77
+ signature: voucher.signature,
78
+ account: this.config.walletClient.account
79
+ });
80
+ }
81
+ async topUpChannel(channelId, amount) {
82
+ return this.writeActions.topUpChannel({
83
+ channelId,
84
+ amount,
85
+ account: this.config.walletClient.account
86
+ });
87
+ }
88
+ async requestClose(channelId) {
89
+ return this.writeActions.requestCloseChannel({
90
+ channelId,
91
+ account: this.config.walletClient.account
92
+ });
93
+ }
94
+ async withdraw(channelId) {
95
+ return this.writeActions.withdrawChannel({
96
+ channelId,
97
+ account: this.config.walletClient.account
98
+ });
99
+ }
100
+ async getChannelState(channelId) {
101
+ return this.readActions.getChannel({ channelId });
102
+ }
103
+ async getCloseTimeout() {
104
+ return this.readActions.CLOSE_TIMEOUT();
105
+ }
106
+ async getVersion() {
107
+ return this.readActions.version();
108
+ }
109
+ };
110
+
111
+ export { ChannelClient, VOUCHER_TYPES, getVoucherDomain, signVoucher };
112
+ //# sourceMappingURL=chunk-OSPRJZ5T.js.map
113
+ //# sourceMappingURL=chunk-OSPRJZ5T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../channel/dist/voucher.js","../../channel/dist/ChannelClient.js"],"names":[],"mappings":"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","file":"chunk-OSPRJZ5T.js","sourcesContent":["export const VOUCHER_TYPES = {\n Voucher: [\n { name: 'channelId', type: 'bytes32' },\n { name: 'cumulativeAmount', type: 'uint128' },\n ],\n};\nexport function getVoucherDomain(chainId, verifyingContract) {\n return {\n name: 'MicroPaymentChannel',\n version: '1.0.0',\n chainId,\n verifyingContract,\n };\n}\nexport async function signVoucher(walletClient, params) {\n const domain = getVoucherDomain(params.chainId, params.verifyingContract);\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n return walletClient.signTypedData({\n account,\n domain,\n types: VOUCHER_TYPES,\n primaryType: 'Voucher',\n message: {\n channelId: params.channelId,\n cumulativeAmount: params.cumulativeAmount,\n },\n });\n}\n","import { channelActions } from '@aastar/core';\nimport { signVoucher } from './voucher.js';\nexport class ChannelClient {\n readActions;\n writeActions;\n config;\n constructor(config) {\n this.config = config;\n // Separate clients: publicClient for reads (no account required),\n // walletClient for writes. Unlike X402Client which is always write-first,\n // ChannelClient exposes read-heavy helpers (getChannel, verifyVoucher) that\n // callers may invoke without a wallet configured.\n this.readActions = channelActions(config.channelAddress)(config.publicClient);\n this.writeActions = channelActions(config.channelAddress)(config.walletClient);\n }\n async openChannel(channelConfig) {\n return this.writeActions.openChannel({\n payee: channelConfig.payee,\n token: channelConfig.token,\n deposit: channelConfig.deposit,\n salt: channelConfig.salt,\n authorizedSigner: channelConfig.authorizedSigner,\n account: this.config.walletClient.account,\n });\n }\n async signVoucherOffline(channelId, cumulativeAmount) {\n const signature = await signVoucher(this.config.walletClient, {\n channelId,\n cumulativeAmount,\n chainId: this.config.chainId,\n verifyingContract: this.config.channelAddress,\n });\n return { channelId, cumulativeAmount, signature };\n }\n async settleChannel(voucher) {\n return this.writeActions.settleChannel({\n channelId: voucher.channelId,\n cumulativeAmount: voucher.cumulativeAmount,\n signature: voucher.signature,\n account: this.config.walletClient.account,\n });\n }\n async closeChannel(voucher) {\n return this.writeActions.closeChannel({\n channelId: voucher.channelId,\n cumulativeAmount: voucher.cumulativeAmount,\n signature: voucher.signature,\n account: this.config.walletClient.account,\n });\n }\n async topUpChannel(channelId, amount) {\n return this.writeActions.topUpChannel({\n channelId,\n amount,\n account: this.config.walletClient.account,\n });\n }\n async requestClose(channelId) {\n return this.writeActions.requestCloseChannel({\n channelId,\n account: this.config.walletClient.account,\n });\n }\n async withdraw(channelId) {\n return this.writeActions.withdrawChannel({\n channelId,\n account: this.config.walletClient.account,\n });\n }\n async getChannelState(channelId) {\n return this.readActions.getChannel({ channelId });\n }\n async getCloseTimeout() {\n return this.readActions.CLOSE_TIMEOUT();\n }\n async getVersion() {\n return this.readActions.version();\n }\n}\n"]}
@@ -0,0 +1,229 @@
1
+ import { SuperPaymasterABI } from './chunk-ZSSNU3UF.js';
2
+ import { parseAbi, formatEther } from 'viem';
3
+
4
+ var STAKING_ABI = parseAbi([
5
+ "function stake(uint256)",
6
+ "function withdraw(uint256)"
7
+ ]);
8
+ var ERC20_ABI = parseAbi([
9
+ "function balanceOf(address) view returns (uint256)",
10
+ "function totalSupply() view returns (uint256)",
11
+ "function approve(address,uint256) returns (bool)",
12
+ "function transfer(address,uint256) returns (bool)"
13
+ ]);
14
+ var FinanceClient = class _FinanceClient {
15
+ publicClient;
16
+ walletClient;
17
+ /**
18
+ * Initialize FinanceClient
19
+ * @param publicClient The public client for queries
20
+ * @param walletClient The wallet client for transactions
21
+ */
22
+ constructor(publicClient, walletClient) {
23
+ this.publicClient = publicClient;
24
+ this.walletClient = walletClient;
25
+ }
26
+ // ========== Existing static methods (preserved for backward compatibility) ==========
27
+ /** @deprecated Use instance methods instead */
28
+ static async depositToPaymaster(wallet, paymaster, amount) {
29
+ return wallet.writeContract({
30
+ address: paymaster,
31
+ abi: SuperPaymasterABI,
32
+ functionName: "deposit",
33
+ args: [amount],
34
+ chain: wallet.chain
35
+ });
36
+ }
37
+ /** @deprecated Use instance methods instead */
38
+ static async depositViaTransferAndCall(wallet, token, paymaster, amount) {
39
+ const ERC1363_ABI = [{
40
+ name: "transferAndCall",
41
+ type: "function",
42
+ stateMutability: "nonpayable",
43
+ inputs: [{ type: "address", name: "to" }, { type: "uint256", name: "value" }],
44
+ outputs: [{ type: "bool" }]
45
+ }];
46
+ return wallet.writeContract({
47
+ address: token,
48
+ abi: ERC1363_ABI,
49
+ functionName: "transferAndCall",
50
+ args: [paymaster, amount],
51
+ chain: wallet.chain
52
+ });
53
+ }
54
+ /** @deprecated Use instance methods instead */
55
+ static async stakeGToken(wallet, stakingAddr, amount) {
56
+ return wallet.writeContract({
57
+ address: stakingAddr,
58
+ abi: STAKING_ABI,
59
+ functionName: "stake",
60
+ args: [amount],
61
+ chain: wallet.chain
62
+ });
63
+ }
64
+ /** @deprecated Use instance methods instead */
65
+ static async withdrawProtocolRevenue(wallet, paymaster, to, amount) {
66
+ return wallet.writeContract({
67
+ address: paymaster,
68
+ abi: SuperPaymasterABI,
69
+ functionName: "withdrawProtocolRevenue",
70
+ args: [to, amount],
71
+ chain: wallet.chain
72
+ });
73
+ }
74
+ /** @deprecated Use instance methods instead */
75
+ static async depositToEntryPoint(wallet, entryPoint, paymaster, amount) {
76
+ return wallet.writeContract({
77
+ address: entryPoint,
78
+ abi: parseAbi(["function depositTo(address) payable"]),
79
+ functionName: "depositTo",
80
+ args: [paymaster],
81
+ value: amount,
82
+ chain: wallet.chain
83
+ });
84
+ }
85
+ /** @deprecated Use instance methods instead */
86
+ static async getEntryPointBalance(client, entryPoint, account) {
87
+ return client.readContract({
88
+ address: entryPoint,
89
+ abi: parseAbi(["function balanceOf(address) view returns (uint256)"]),
90
+ functionName: "balanceOf",
91
+ args: [account]
92
+ });
93
+ }
94
+ /** @deprecated Use instance methods instead */
95
+ static async operatorDeposit(wallet, paymaster, amount) {
96
+ return wallet.writeContract({
97
+ address: paymaster,
98
+ abi: SuperPaymasterABI,
99
+ functionName: "deposit",
100
+ args: [amount],
101
+ chain: wallet.chain
102
+ });
103
+ }
104
+ /** @deprecated Use instance methods instead */
105
+ static async operatorNotifyDeposit(wallet, paymaster, amount) {
106
+ return wallet.writeContract({
107
+ address: paymaster,
108
+ abi: SuperPaymasterABI,
109
+ functionName: "notifyDeposit",
110
+ args: [amount],
111
+ chain: wallet.chain
112
+ });
113
+ }
114
+ // ========== New instance methods (business primitives) ==========
115
+ /**
116
+ * Get GToken balance
117
+ */
118
+ async getGTokenBalance(address) {
119
+ const { CORE_ADDRESSES } = await import('./index.node-55LOPHNQ.js');
120
+ return this.publicClient.readContract({
121
+ address: CORE_ADDRESSES.gToken,
122
+ abi: ERC20_ABI,
123
+ functionName: "balanceOf",
124
+ args: [address]
125
+ });
126
+ }
127
+ /**
128
+ * Get aPNTs balance
129
+ */
130
+ async getAPNTsBalance(address) {
131
+ const { CORE_ADDRESSES } = await import('./index.node-55LOPHNQ.js');
132
+ return this.publicClient.readContract({
133
+ address: CORE_ADDRESSES.aPNTs,
134
+ abi: ERC20_ABI,
135
+ functionName: "balanceOf",
136
+ args: [address]
137
+ });
138
+ }
139
+ /**
140
+ * One-step stake: Approve (if needed) + Stake
141
+ *
142
+ * @param amount Amount of GToken to stake
143
+ * @returns Transaction hash of the stake action
144
+ */
145
+ async approveAndStake(amount) {
146
+ const account = this.walletClient.account;
147
+ if (!account)
148
+ throw new Error("Account required");
149
+ const { CORE_ADDRESSES } = await import('./index.node-55LOPHNQ.js');
150
+ const gTokenAddress = CORE_ADDRESSES.gToken;
151
+ const stakingAddress = CORE_ADDRESSES.gTokenStaking;
152
+ const allowance = await this.publicClient.readContract({
153
+ address: gTokenAddress,
154
+ abi: parseAbi(["function allowance(address owner, address spender) view returns (uint256)"]),
155
+ functionName: "allowance",
156
+ args: [account.address, stakingAddress]
157
+ });
158
+ if (allowance < amount) {
159
+ console.log(`[FinanceClient] Approving ${formatEther(amount)} GToken...`);
160
+ const approveTx = await this.walletClient.writeContract({
161
+ address: gTokenAddress,
162
+ abi: parseAbi(["function approve(address spender, uint256 amount) returns (bool)"]),
163
+ functionName: "approve",
164
+ args: [stakingAddress, amount],
165
+ chain: this.walletClient.chain,
166
+ account
167
+ });
168
+ await this.publicClient.waitForTransactionReceipt({ hash: approveTx });
169
+ console.log(`[FinanceClient] Approved.`);
170
+ }
171
+ console.log(`[FinanceClient] Staking...`);
172
+ return _FinanceClient.stakeGToken(this.walletClient, stakingAddress, amount);
173
+ }
174
+ /**
175
+ * Get circulating supply (total - locked)
176
+ */
177
+ async getCirculatingSupply() {
178
+ const { CORE_ADDRESSES } = await import('./index.node-55LOPHNQ.js');
179
+ const gTokenAddress = CORE_ADDRESSES.gToken;
180
+ const total = await this.publicClient.readContract({
181
+ address: gTokenAddress,
182
+ abi: ERC20_ABI,
183
+ functionName: "totalSupply"
184
+ });
185
+ const locked = 0n;
186
+ return {
187
+ total,
188
+ locked,
189
+ circulating: total - locked
190
+ };
191
+ }
192
+ /**
193
+ * Get comprehensive tokenomics data
194
+ */
195
+ async getTokenomicsOverview() {
196
+ const { CORE_ADDRESSES } = await import('./index.node-55LOPHNQ.js');
197
+ const [totalSupply, totalStaked, blackholeBalance] = await Promise.all([
198
+ this.publicClient.readContract({
199
+ address: CORE_ADDRESSES.gToken,
200
+ abi: parseAbi(["function totalSupply() view returns (uint256)"]),
201
+ functionName: "totalSupply"
202
+ }),
203
+ this.publicClient.readContract({
204
+ address: CORE_ADDRESSES.gTokenStaking,
205
+ abi: parseAbi(["function totalStaked() view returns (uint256)"]),
206
+ functionName: "totalStaked"
207
+ }),
208
+ this.publicClient.readContract({
209
+ address: CORE_ADDRESSES.gToken,
210
+ abi: parseAbi(["function balanceOf(address) view returns (uint256)"]),
211
+ functionName: "balanceOf",
212
+ args: ["0x000000000000000000000000000000000000dEaD"]
213
+ })
214
+ ]);
215
+ const circulating = totalSupply - totalStaked - blackholeBalance;
216
+ const ratio = Number(formatEther(totalStaked)) / Number(formatEther(totalSupply)) * 100;
217
+ return {
218
+ totalSupply,
219
+ totalStaked,
220
+ totalBurned: blackholeBalance,
221
+ circulatingSupply: circulating,
222
+ stakingRatio: ratio
223
+ };
224
+ }
225
+ };
226
+
227
+ export { FinanceClient };
228
+ //# sourceMappingURL=chunk-PCLPYRTX.js.map
229
+ //# sourceMappingURL=chunk-PCLPYRTX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../tokens/dist/index.js"],"names":[],"mappings":"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","file":"chunk-PCLPYRTX.js","sourcesContent":["import { parseAbi, formatEther } from 'viem';\nimport { SuperPaymasterABI as SUPERPAYMASTER_ABI } from '@aastar/core';\nconst STAKING_ABI = parseAbi([\n 'function stake(uint256)',\n 'function withdraw(uint256)'\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]);\nexport class FinanceClient {\n publicClient;\n walletClient;\n /**\n * Initialize FinanceClient\n * @param publicClient The public client for queries\n * @param walletClient The wallet client for transactions\n */\n constructor(publicClient, walletClient) {\n this.publicClient = publicClient;\n this.walletClient = walletClient;\n }\n // ========== Existing static methods (preserved for backward compatibility) ==========\n /** @deprecated Use instance methods instead */\n static async depositToPaymaster(wallet, paymaster, amount) {\n return wallet.writeContract({\n address: paymaster,\n abi: SUPERPAYMASTER_ABI,\n functionName: 'deposit',\n args: [amount],\n chain: wallet.chain\n });\n }\n /** @deprecated Use instance methods instead */\n static async depositViaTransferAndCall(wallet, token, paymaster, amount) {\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 }];\n return wallet.writeContract({\n address: token,\n abi: ERC1363_ABI,\n functionName: 'transferAndCall',\n args: [paymaster, amount],\n chain: wallet.chain\n });\n }\n /** @deprecated Use instance methods instead */\n static async stakeGToken(wallet, stakingAddr, amount) {\n return wallet.writeContract({\n address: stakingAddr,\n abi: STAKING_ABI,\n functionName: 'stake',\n args: [amount],\n chain: wallet.chain\n });\n }\n /** @deprecated Use instance methods instead */\n static async withdrawProtocolRevenue(wallet, paymaster, to, amount) {\n return wallet.writeContract({\n address: paymaster,\n abi: SUPERPAYMASTER_ABI,\n functionName: 'withdrawProtocolRevenue',\n args: [to, amount],\n chain: wallet.chain\n });\n }\n /** @deprecated Use instance methods instead */\n static async depositToEntryPoint(wallet, entryPoint, paymaster, amount) {\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 });\n }\n /** @deprecated Use instance methods instead */\n static async getEntryPointBalance(client, entryPoint, account) {\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 /** @deprecated Use instance methods instead */\n static async operatorDeposit(wallet, paymaster, amount) {\n return wallet.writeContract({\n address: paymaster,\n abi: SUPERPAYMASTER_ABI,\n functionName: 'deposit',\n args: [amount],\n chain: wallet.chain\n });\n }\n /** @deprecated Use instance methods instead */\n static async operatorNotifyDeposit(wallet, paymaster, amount) {\n return wallet.writeContract({\n address: paymaster,\n abi: SUPERPAYMASTER_ABI,\n functionName: 'notifyDeposit',\n args: [amount],\n chain: wallet.chain\n });\n }\n // ========== New instance methods (business primitives) ==========\n /**\n * Get GToken balance\n */\n async getGTokenBalance(address) {\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 });\n }\n /**\n * Get aPNTs balance\n */\n async getAPNTsBalance(address) {\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 });\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) {\n const account = this.walletClient.account;\n if (!account)\n throw new Error(\"Account required\");\n const { CORE_ADDRESSES } = await import('@aastar/core');\n const gTokenAddress = CORE_ADDRESSES.gToken;\n const stakingAddress = CORE_ADDRESSES.gTokenStaking;\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 if (allowance < 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 // 2. Stake\n console.log(`[FinanceClient] Staking...`);\n return FinanceClient.stakeGToken(this.walletClient, stakingAddress, amount);\n }\n /**\n * Get circulating supply (total - locked)\n */\n async getCirculatingSupply() {\n const { CORE_ADDRESSES } = await import('@aastar/core');\n const gTokenAddress = CORE_ADDRESSES.gToken;\n const total = await this.publicClient.readContract({\n address: gTokenAddress,\n abi: ERC20_ABI,\n functionName: 'totalSupply'\n });\n // In a real scenario, we might query GTokenStaking's totalStaked\n const locked = 0n;\n return {\n total,\n locked,\n circulating: total - locked\n };\n }\n /**\n * Get comprehensive tokenomics data\n */\n async getTokenomicsOverview() {\n const { CORE_ADDRESSES } = await import('@aastar/core');\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 }),\n this.publicClient.readContract({\n address: CORE_ADDRESSES.gTokenStaking,\n abi: parseAbi(['function totalStaked() view returns (uint256)']),\n functionName: 'totalStaked'\n }),\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 })\n ]);\n const circulating = totalSupply - totalStaked - blackholeBalance;\n const ratio = Number(formatEther(totalStaked)) / Number(formatEther(totalSupply)) * 100;\n return {\n totalSupply,\n totalStaked,\n totalBurned: blackholeBalance,\n circulatingSupply: circulating,\n stakingRatio: ratio\n };\n }\n}\n"]}
@@ -0,0 +1,9 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __export = (target, all) => {
3
+ for (var name in all)
4
+ __defProp(target, name, { get: all[name], enumerable: true });
5
+ };
6
+
7
+ export { __export };
8
+ //# sourceMappingURL=chunk-PZ5AY32C.js.map
9
+ //# sourceMappingURL=chunk-PZ5AY32C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-PZ5AY32C.js"}