@aastar/sdk 0.18.0 → 0.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +180 -21
- package/dist/UserClient-YUHCJJJL.js +6 -0
- package/dist/UserClient-YUHCJJJL.js.map +1 -0
- package/dist/account.d.ts +1 -0
- package/dist/account.js +6 -0
- package/dist/account.js.map +1 -0
- package/dist/admin.d.ts +1 -0
- package/dist/admin.js +6 -0
- package/dist/admin.js.map +1 -0
- package/dist/airaccount.d.ts +2 -0
- package/dist/airaccount.js +4501 -0
- package/dist/airaccount.js.map +1 -0
- package/dist/channel.d.ts +1 -0
- package/dist/channel.js +6 -0
- package/dist/channel.js.map +1 -0
- package/dist/chunk-4DVUM4MC.js +106 -0
- package/dist/chunk-4DVUM4MC.js.map +1 -0
- package/dist/chunk-4KRQXOTI.js +4421 -0
- package/dist/chunk-4KRQXOTI.js.map +1 -0
- package/dist/chunk-6JCYPTSH.js +281 -0
- package/dist/chunk-6JCYPTSH.js.map +1 -0
- package/dist/chunk-DI3E6PMI.js +426 -0
- package/dist/chunk-DI3E6PMI.js.map +1 -0
- package/dist/chunk-DSZ372PH.js +333 -0
- package/dist/chunk-DSZ372PH.js.map +1 -0
- package/dist/chunk-HVAB4TTT.js +116 -0
- package/dist/chunk-HVAB4TTT.js.map +1 -0
- package/dist/chunk-MPOMWT2J.js +1140 -0
- package/dist/chunk-MPOMWT2J.js.map +1 -0
- package/dist/chunk-NZGXB2C5.js +115 -0
- package/dist/chunk-NZGXB2C5.js.map +1 -0
- package/dist/chunk-O3Y7II3B.js +578 -0
- package/dist/chunk-O3Y7II3B.js.map +1 -0
- package/dist/chunk-OSPRJZ5T.js +113 -0
- package/dist/chunk-OSPRJZ5T.js.map +1 -0
- package/dist/chunk-PCLPYRTX.js +229 -0
- package/dist/chunk-PCLPYRTX.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +9 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-XFI3AK32.js +416 -0
- package/dist/chunk-XFI3AK32.js.map +1 -0
- package/dist/chunk-YHM77LIP.js +432 -0
- package/dist/chunk-YHM77LIP.js.map +1 -0
- package/dist/chunk-ZSSNU3UF.js +42091 -0
- package/dist/chunk-ZSSNU3UF.js.map +1 -0
- package/dist/contract-addresses-JE3X6DFY.js +4 -0
- package/dist/contract-addresses-JE3X6DFY.js.map +1 -0
- package/dist/core.d.ts +13 -0
- package/dist/core.js +5 -0
- package/dist/core.js.map +1 -0
- package/dist/dapp.d.ts +1 -0
- package/dist/dapp.js +7 -0
- package/dist/dapp.js.map +1 -0
- package/dist/dist-GHTBO7CD.js +6 -0
- package/dist/dist-GHTBO7CD.js.map +1 -0
- package/dist/enduser.d.ts +1 -0
- package/dist/enduser.js +7 -0
- package/dist/enduser.js.map +1 -0
- package/dist/identity.d.ts +1 -0
- package/dist/identity.js +6 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +601 -12
- package/dist/index.js +1640 -28
- package/dist/index.js.map +1 -0
- package/dist/index.node-55LOPHNQ.js +5 -0
- package/dist/index.node-55LOPHNQ.js.map +1 -0
- package/dist/lib-VRTYVDUO.js +1861 -0
- package/dist/lib-VRTYVDUO.js.map +1 -0
- package/dist/operator.d.ts +1 -0
- package/dist/operator.js +6 -0
- package/dist/operator.js.map +1 -0
- package/dist/paymaster.d.ts +1 -0
- package/dist/paymaster.js +6 -0
- package/dist/paymaster.js.map +1 -0
- package/dist/tokens.d.ts +1 -0
- package/dist/tokens.js +6 -0
- package/dist/tokens.js.map +1 -0
- package/dist/x402.d.ts +1 -0
- package/dist/x402.js +6 -0
- package/dist/x402.js.map +1 -0
- package/package.json +87 -18
- package/dist/clients/ExperimentClient.d.ts +0 -34
- package/dist/clients/ExperimentClient.js +0 -58
- package/dist/clients/admin.d.ts +0 -11
- package/dist/clients/admin.js +0 -20
- package/dist/clients/community.d.ts +0 -40
- package/dist/clients/community.js +0 -300
- package/dist/clients/endUser.d.ts +0 -77
- package/dist/clients/endUser.js +0 -298
- package/dist/clients/operator.d.ts +0 -66
- package/dist/clients/operator.js +0 -209
- package/dist/errors/decoder.d.ts +0 -6
- package/dist/errors/decoder.js +0 -44
- package/dist/utils/errorHandler.d.ts +0 -40
- package/dist/utils/errorHandler.js +0 -114
- package/dist/utils/funding.d.ts +0 -115
- package/dist/utils/funding.js +0 -188
- package/dist/utils/keys.d.ts +0 -61
- package/dist/utils/keys.js +0 -130
- package/dist/utils/roleData.d.ts +0 -66
- package/dist/utils/roleData.js +0 -128
- package/dist/utils/testScenarios.d.ts +0 -33
- package/dist/utils/testScenarios.js +0 -85
- package/dist/utils/userOp.d.ts +0 -89
- 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"}
|