@aastar/core 0.16.7 → 0.16.11
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/dist/abis/PaymasterV4_2.json +1193 -0
- package/dist/abis/SuperPaymaster.json +1 -1
- package/dist/abis/aPNTs.json +1160 -0
- package/dist/abis/abi.config.json +3 -3
- package/dist/abis/index.d.ts +15 -104
- package/dist/abis/index.js +22 -46
- package/dist/actions/account.d.ts +0 -15
- package/dist/actions/account.js +143 -108
- package/dist/actions/aggregator.d.ts +68 -7
- package/dist/actions/aggregator.js +328 -28
- package/dist/actions/dvt.d.ts +33 -5
- package/dist/actions/dvt.js +238 -38
- package/dist/actions/entryPoint.d.ts +3 -63
- package/dist/actions/entryPoint.js +52 -184
- package/dist/actions/factory.d.ts +48 -115
- package/dist/actions/factory.js +638 -438
- package/dist/actions/faucet.d.ts +23 -27
- package/dist/actions/faucet.js +150 -289
- package/dist/actions/index.d.ts +1 -2
- package/dist/actions/index.js +2 -4
- package/dist/actions/paymaster.d.ts +147 -0
- package/dist/actions/paymaster.js +706 -0
- package/dist/actions/paymasterV4.d.ts +26 -95
- package/dist/actions/paymasterV4.js +28 -121
- package/dist/actions/registry.d.ts +116 -165
- package/dist/actions/registry.js +855 -654
- package/dist/actions/reputation.d.ts +74 -52
- package/dist/actions/reputation.js +548 -242
- package/dist/actions/sbt.d.ts +90 -100
- package/dist/actions/sbt.js +801 -518
- package/dist/actions/staking.d.ts +45 -32
- package/dist/actions/staking.js +431 -260
- package/dist/actions/superPaymaster.d.ts +140 -158
- package/dist/actions/superPaymaster.js +965 -631
- package/dist/actions/tokens.d.ts +130 -108
- package/dist/actions/tokens.js +470 -414
- package/dist/actions/validators.d.ts +0 -73
- package/dist/actions/validators.js +0 -94
- package/dist/clients/BaseClient.d.ts +3 -3
- package/dist/clients/BundlerClient.d.ts +55 -0
- package/dist/clients/BundlerClient.js +92 -0
- package/dist/communities.js +2 -2
- package/dist/constants.js +1 -28
- package/dist/contract-addresses.d.ts +5 -14
- package/dist/contract-addresses.js +3 -9
- package/dist/contract-versions.d.ts +138 -0
- package/dist/contract-versions.js +328 -0
- package/dist/contracts.d.ts +6 -24
- package/dist/contracts.js +2 -2
- package/dist/errors/index.d.ts +57 -0
- package/dist/errors/index.js +123 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/requirementChecker.d.ts +35 -1
- package/dist/requirementChecker.js +39 -1
- package/dist/roles.d.ts +50 -61
- package/dist/roles.js +50 -61
- package/dist/validators/index.d.ts +35 -0
- package/dist/validators/index.js +60 -0
- package/package.json +5 -13
package/dist/actions/staking.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { GTokenStakingABI } from '../abis/index.js';
|
|
2
|
+
import { validateAddress, validateAmount, validateRequired } from '../validators/index.js';
|
|
3
|
+
import { AAStarError } from '../errors/index.js';
|
|
2
4
|
export const stakingActions = (address) => (client) => ({
|
|
3
5
|
// Staking Operations
|
|
4
6
|
/**
|
|
@@ -6,325 +8,494 @@ export const stakingActions = (address) => (client) => ({
|
|
|
6
8
|
* @warning This is a low-level internal API. Use high-level clients instead.
|
|
7
9
|
*/
|
|
8
10
|
async lockStake({ user, roleId, stakeAmount, entryBurn, payer, account }) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
try {
|
|
12
|
+
validateAddress(user, 'user');
|
|
13
|
+
validateAddress(payer, 'payer');
|
|
14
|
+
validateAmount(stakeAmount, 'stakeAmount');
|
|
15
|
+
validateAmount(entryBurn, 'entryBurn');
|
|
16
|
+
return await client.writeContract({
|
|
17
|
+
address,
|
|
18
|
+
abi: GTokenStakingABI,
|
|
19
|
+
functionName: 'lockStake',
|
|
20
|
+
args: [user, roleId, stakeAmount, entryBurn, payer],
|
|
21
|
+
account: account,
|
|
22
|
+
chain: client.chain
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
throw AAStarError.fromViemError(error, 'lockStake');
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
async topUpStake({ user, roleId, stakeAmount, payer, account }) {
|
|
30
|
+
try {
|
|
31
|
+
validateAddress(user, 'user');
|
|
32
|
+
validateAddress(payer, 'payer');
|
|
33
|
+
validateAmount(stakeAmount, 'stakeAmount');
|
|
34
|
+
return await client.writeContract({
|
|
35
|
+
address,
|
|
36
|
+
abi: GTokenStakingABI,
|
|
37
|
+
functionName: 'topUpStake',
|
|
38
|
+
args: [user, roleId, stakeAmount, payer],
|
|
39
|
+
account: account,
|
|
40
|
+
chain: client.chain
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
throw AAStarError.fromViemError(error, 'topUpStake');
|
|
45
|
+
}
|
|
17
46
|
},
|
|
18
47
|
async unlockStake({ user, roleId, account }) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
48
|
+
try {
|
|
49
|
+
validateAddress(user, 'user');
|
|
50
|
+
validateRequired(roleId, 'roleId');
|
|
51
|
+
return await client.writeContract({
|
|
52
|
+
address,
|
|
53
|
+
abi: GTokenStakingABI,
|
|
54
|
+
functionName: 'unlockAndTransfer',
|
|
55
|
+
args: [user, roleId],
|
|
56
|
+
account: account,
|
|
57
|
+
chain: client.chain
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
throw AAStarError.fromViemError(error, 'unlockStake');
|
|
62
|
+
}
|
|
27
63
|
},
|
|
28
64
|
async unlockAndTransfer({ user, roleId, account }) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
account: account,
|
|
45
|
-
chain: client.chain
|
|
46
|
-
});
|
|
47
|
-
},
|
|
48
|
-
async topUpStake({ amount, account }) {
|
|
49
|
-
// topUpStake typically calls stake internally or is a distinct function. Assuming distinct based on request.
|
|
50
|
-
return client.writeContract({
|
|
51
|
-
address,
|
|
52
|
-
abi: GTokenStakingABI,
|
|
53
|
-
functionName: 'topUpStake',
|
|
54
|
-
args: [amount],
|
|
55
|
-
account: account,
|
|
56
|
-
chain: client.chain
|
|
57
|
-
});
|
|
58
|
-
},
|
|
59
|
-
async unstake({ amount, account }) {
|
|
60
|
-
return client.writeContract({
|
|
61
|
-
address,
|
|
62
|
-
abi: GTokenStakingABI,
|
|
63
|
-
functionName: 'unstake',
|
|
64
|
-
args: [amount],
|
|
65
|
-
account: account,
|
|
66
|
-
chain: client.chain
|
|
67
|
-
});
|
|
65
|
+
try {
|
|
66
|
+
validateAddress(user, 'user');
|
|
67
|
+
validateRequired(roleId, 'roleId');
|
|
68
|
+
return await client.writeContract({
|
|
69
|
+
address,
|
|
70
|
+
abi: GTokenStakingABI,
|
|
71
|
+
functionName: 'unlockAndTransfer',
|
|
72
|
+
args: [user, roleId],
|
|
73
|
+
account: account,
|
|
74
|
+
chain: client.chain
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
throw AAStarError.fromViemError(error, 'unlockAndTransfer');
|
|
79
|
+
}
|
|
68
80
|
},
|
|
69
81
|
// Slashing
|
|
70
|
-
async slash({ user,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
82
|
+
async slash({ user, amount, reason, account }) {
|
|
83
|
+
try {
|
|
84
|
+
validateAddress(user, 'user');
|
|
85
|
+
validateAmount(amount, 'amount');
|
|
86
|
+
return await client.writeContract({
|
|
87
|
+
address,
|
|
88
|
+
abi: GTokenStakingABI,
|
|
89
|
+
functionName: 'slash',
|
|
90
|
+
args: [user, amount, reason],
|
|
91
|
+
account: account,
|
|
92
|
+
chain: client.chain
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
throw AAStarError.fromViemError(error, 'slash');
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
async slashByDVT({ operator, roleId, penaltyAmount, reason, account }) {
|
|
100
|
+
try {
|
|
101
|
+
validateAddress(operator, 'operator');
|
|
102
|
+
validateRequired(roleId, 'roleId');
|
|
103
|
+
validateAmount(penaltyAmount, 'penaltyAmount');
|
|
104
|
+
return await client.writeContract({
|
|
105
|
+
address,
|
|
106
|
+
abi: GTokenStakingABI,
|
|
107
|
+
functionName: 'slashByDVT',
|
|
108
|
+
args: [operator, roleId, penaltyAmount, reason],
|
|
109
|
+
account: account,
|
|
110
|
+
chain: client.chain
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
throw AAStarError.fromViemError(error, 'slashByDVT');
|
|
115
|
+
}
|
|
89
116
|
},
|
|
90
117
|
async setAuthorizedSlasher({ slasher, authorized, account }) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
118
|
+
try {
|
|
119
|
+
validateAddress(slasher, 'slasher');
|
|
120
|
+
return await client.writeContract({
|
|
121
|
+
address,
|
|
122
|
+
abi: GTokenStakingABI,
|
|
123
|
+
functionName: 'setAuthorizedSlasher',
|
|
124
|
+
args: [slasher, authorized],
|
|
125
|
+
account: account,
|
|
126
|
+
chain: client.chain
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
throw AAStarError.fromViemError(error, 'setAuthorizedSlasher');
|
|
131
|
+
}
|
|
99
132
|
},
|
|
100
133
|
// Query Functions
|
|
101
134
|
async getStakeInfo({ operator, roleId }) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
135
|
+
try {
|
|
136
|
+
validateAddress(operator, 'operator');
|
|
137
|
+
validateRequired(roleId, 'roleId');
|
|
138
|
+
const res = await client.readContract({
|
|
139
|
+
address,
|
|
140
|
+
abi: GTokenStakingABI,
|
|
141
|
+
functionName: 'getStakeInfo',
|
|
142
|
+
args: [operator, roleId]
|
|
143
|
+
});
|
|
144
|
+
return {
|
|
145
|
+
amount: res.amount,
|
|
146
|
+
slashedAmount: res.slashedAmount,
|
|
147
|
+
stakedAt: res.stakedAt,
|
|
148
|
+
unstakeRequestedAt: res.unstakeRequestedAt
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
throw AAStarError.fromViemError(error, 'getStakeInfo');
|
|
153
|
+
}
|
|
108
154
|
},
|
|
109
155
|
async getStakingBalance({ user }) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
156
|
+
try {
|
|
157
|
+
validateAddress(user, 'user');
|
|
158
|
+
return await client.readContract({
|
|
159
|
+
address,
|
|
160
|
+
abi: GTokenStakingABI,
|
|
161
|
+
functionName: 'balanceOf',
|
|
162
|
+
args: [user]
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
throw AAStarError.fromViemError(error, 'getStakingBalance');
|
|
167
|
+
}
|
|
116
168
|
},
|
|
117
169
|
async getLockedStake({ user, roleId }) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
170
|
+
try {
|
|
171
|
+
validateAddress(user, 'user');
|
|
172
|
+
validateRequired(roleId, 'roleId');
|
|
173
|
+
return await client.readContract({
|
|
174
|
+
address,
|
|
175
|
+
abi: GTokenStakingABI,
|
|
176
|
+
functionName: 'getLockedStake',
|
|
177
|
+
args: [user, roleId]
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
throw AAStarError.fromViemError(error, 'getLockedStake');
|
|
182
|
+
}
|
|
124
183
|
},
|
|
125
184
|
async getUserRoleLocks({ user }) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
185
|
+
try {
|
|
186
|
+
validateAddress(user, 'user');
|
|
187
|
+
return await client.readContract({
|
|
188
|
+
address,
|
|
189
|
+
abi: GTokenStakingABI,
|
|
190
|
+
functionName: 'getUserRoleLocks',
|
|
191
|
+
args: [user]
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
throw AAStarError.fromViemError(error, 'getUserRoleLocks');
|
|
196
|
+
}
|
|
132
197
|
},
|
|
133
198
|
async hasRoleLock({ user, roleId }) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
199
|
+
try {
|
|
200
|
+
validateAddress(user, 'user');
|
|
201
|
+
validateRequired(roleId, 'roleId');
|
|
202
|
+
return await client.readContract({
|
|
203
|
+
address,
|
|
204
|
+
abi: GTokenStakingABI,
|
|
205
|
+
functionName: 'hasRoleLock',
|
|
206
|
+
args: [user, roleId]
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
throw AAStarError.fromViemError(error, 'hasRoleLock');
|
|
211
|
+
}
|
|
140
212
|
},
|
|
141
213
|
async availableBalance({ user }) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
214
|
+
try {
|
|
215
|
+
validateAddress(user, 'user');
|
|
216
|
+
return await client.readContract({
|
|
217
|
+
address,
|
|
218
|
+
abi: GTokenStakingABI,
|
|
219
|
+
functionName: 'availableBalance',
|
|
220
|
+
args: [user]
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
throw AAStarError.fromViemError(error, 'availableBalance');
|
|
225
|
+
}
|
|
148
226
|
},
|
|
149
227
|
async previewExitFee({ user, roleId }) {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
228
|
+
try {
|
|
229
|
+
validateAddress(user, 'user');
|
|
230
|
+
validateRequired(roleId, 'roleId');
|
|
231
|
+
const [fee, netAmount] = await client.readContract({
|
|
232
|
+
address,
|
|
233
|
+
abi: GTokenStakingABI,
|
|
234
|
+
functionName: 'previewExitFee',
|
|
235
|
+
args: [user, roleId]
|
|
236
|
+
});
|
|
237
|
+
return { fee, netAmount };
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
throw AAStarError.fromViemError(error, 'previewExitFee');
|
|
241
|
+
}
|
|
156
242
|
},
|
|
157
243
|
// Admin Functions
|
|
158
244
|
async setRegistry({ registry, account }) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
245
|
+
try {
|
|
246
|
+
validateAddress(registry, 'registry');
|
|
247
|
+
return await client.writeContract({
|
|
248
|
+
address,
|
|
249
|
+
abi: GTokenStakingABI,
|
|
250
|
+
functionName: 'setRegistry',
|
|
251
|
+
args: [registry],
|
|
252
|
+
account: account,
|
|
253
|
+
chain: client.chain
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
throw AAStarError.fromViemError(error, 'setRegistry');
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
async setRoleExitFee({ roleId, feePercent, minFee, account }) {
|
|
261
|
+
try {
|
|
262
|
+
validateRequired(roleId, 'roleId');
|
|
263
|
+
validateAmount(feePercent, 'feePercent');
|
|
264
|
+
validateAmount(minFee, 'minFee');
|
|
265
|
+
return await client.writeContract({
|
|
266
|
+
address,
|
|
267
|
+
abi: GTokenStakingABI,
|
|
268
|
+
functionName: 'setRoleExitFee',
|
|
269
|
+
args: [roleId, feePercent, minFee],
|
|
270
|
+
account: account,
|
|
271
|
+
chain: client.chain
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
throw AAStarError.fromViemError(error, 'setRoleExitFee');
|
|
276
|
+
}
|
|
187
277
|
},
|
|
188
278
|
async setTreasury({ treasury, account }) {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
279
|
+
try {
|
|
280
|
+
validateAddress(treasury, 'treasury');
|
|
281
|
+
return await client.writeContract({
|
|
282
|
+
address,
|
|
283
|
+
abi: GTokenStakingABI,
|
|
284
|
+
functionName: 'setTreasury',
|
|
285
|
+
args: [treasury],
|
|
286
|
+
account: account,
|
|
287
|
+
chain: client.chain
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
throw AAStarError.fromViemError(error, 'setTreasury');
|
|
292
|
+
}
|
|
197
293
|
},
|
|
198
294
|
// View Functions
|
|
199
295
|
async stakes({ user }) {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
296
|
+
try {
|
|
297
|
+
validateAddress(user, 'user');
|
|
298
|
+
const res = await client.readContract({
|
|
299
|
+
address,
|
|
300
|
+
abi: GTokenStakingABI,
|
|
301
|
+
functionName: 'stakes',
|
|
302
|
+
args: [user]
|
|
303
|
+
});
|
|
304
|
+
if (Array.isArray(res)) {
|
|
305
|
+
return {
|
|
306
|
+
amount: res[0],
|
|
307
|
+
slashedAmount: res[1],
|
|
308
|
+
stakedAt: res[2],
|
|
309
|
+
unstakeRequestedAt: res[3]
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
return res;
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
throw AAStarError.fromViemError(error, 'stakes');
|
|
316
|
+
}
|
|
206
317
|
},
|
|
207
318
|
async roleLocks({ user, roleId }) {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
319
|
+
try {
|
|
320
|
+
validateAddress(user, 'user');
|
|
321
|
+
validateRequired(roleId, 'roleId');
|
|
322
|
+
const res = await client.readContract({
|
|
323
|
+
address,
|
|
324
|
+
abi: GTokenStakingABI,
|
|
325
|
+
functionName: 'roleLocks',
|
|
326
|
+
args: [user, roleId]
|
|
327
|
+
});
|
|
328
|
+
if (Array.isArray(res)) {
|
|
329
|
+
return {
|
|
330
|
+
amount: res[0],
|
|
331
|
+
entryBurn: res[1],
|
|
332
|
+
lockedAt: Number(res[2]),
|
|
333
|
+
roleId: res[3],
|
|
334
|
+
metadata: res[4]
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
return res;
|
|
338
|
+
}
|
|
339
|
+
catch (error) {
|
|
340
|
+
throw AAStarError.fromViemError(error, 'roleLocks');
|
|
341
|
+
}
|
|
214
342
|
},
|
|
215
343
|
async roleExitConfigs({ roleId }) {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
344
|
+
try {
|
|
345
|
+
validateRequired(roleId, 'roleId');
|
|
346
|
+
const [feePercent, minFee] = await client.readContract({
|
|
347
|
+
address,
|
|
348
|
+
abi: GTokenStakingABI,
|
|
349
|
+
functionName: 'roleExitConfigs',
|
|
350
|
+
args: [roleId]
|
|
351
|
+
});
|
|
352
|
+
return { feePercent, minFee };
|
|
353
|
+
}
|
|
354
|
+
catch (error) {
|
|
355
|
+
throw AAStarError.fromViemError(error, 'roleExitConfigs');
|
|
356
|
+
}
|
|
222
357
|
},
|
|
223
358
|
async userActiveRoles({ user, index }) {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
359
|
+
try {
|
|
360
|
+
validateAddress(user, 'user');
|
|
361
|
+
return await client.readContract({
|
|
362
|
+
address,
|
|
363
|
+
abi: GTokenStakingABI,
|
|
364
|
+
functionName: 'userActiveRoles',
|
|
365
|
+
args: [user, index]
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
throw AAStarError.fromViemError(error, 'userActiveRoles');
|
|
370
|
+
}
|
|
230
371
|
},
|
|
231
372
|
async authorizedSlashers({ slasher }) {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
args: [account]
|
|
245
|
-
});
|
|
246
|
-
},
|
|
247
|
-
async balanceOf({ account }) {
|
|
248
|
-
// GTokenStaking might implement balanceOf if it's an ERC20-like or just tracking stakes
|
|
249
|
-
return client.readContract({
|
|
250
|
-
address,
|
|
251
|
-
abi: GTokenStakingABI,
|
|
252
|
-
functionName: 'balanceOf',
|
|
253
|
-
args: [account]
|
|
254
|
-
});
|
|
373
|
+
try {
|
|
374
|
+
validateAddress(slasher, 'slasher');
|
|
375
|
+
return await client.readContract({
|
|
376
|
+
address,
|
|
377
|
+
abi: GTokenStakingABI,
|
|
378
|
+
functionName: 'authorizedSlashers',
|
|
379
|
+
args: [slasher]
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
catch (error) {
|
|
383
|
+
throw AAStarError.fromViemError(error, 'authorizedSlashers');
|
|
384
|
+
}
|
|
255
385
|
},
|
|
256
386
|
async totalStaked() {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
387
|
+
try {
|
|
388
|
+
return await client.readContract({
|
|
389
|
+
address,
|
|
390
|
+
abi: GTokenStakingABI,
|
|
391
|
+
functionName: 'totalStaked',
|
|
392
|
+
args: []
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
catch (error) {
|
|
396
|
+
throw AAStarError.fromViemError(error, 'totalStaked');
|
|
397
|
+
}
|
|
263
398
|
},
|
|
264
399
|
async getTotalStaked() {
|
|
265
400
|
return this.totalStaked();
|
|
266
401
|
},
|
|
267
402
|
async treasury() {
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
403
|
+
try {
|
|
404
|
+
return await client.readContract({
|
|
405
|
+
address,
|
|
406
|
+
abi: GTokenStakingABI,
|
|
407
|
+
functionName: 'treasury',
|
|
408
|
+
args: []
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
catch (error) {
|
|
412
|
+
throw AAStarError.fromViemError(error, 'treasury');
|
|
413
|
+
}
|
|
274
414
|
},
|
|
275
415
|
async owner() {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
416
|
+
try {
|
|
417
|
+
return await client.readContract({
|
|
418
|
+
address,
|
|
419
|
+
abi: GTokenStakingABI,
|
|
420
|
+
functionName: 'owner',
|
|
421
|
+
args: []
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
catch (error) {
|
|
425
|
+
throw AAStarError.fromViemError(error, 'owner');
|
|
426
|
+
}
|
|
282
427
|
},
|
|
283
428
|
// Ownership
|
|
284
|
-
async
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
429
|
+
async transferOwnership({ newOwner, account }) {
|
|
430
|
+
try {
|
|
431
|
+
validateAddress(newOwner, 'newOwner');
|
|
432
|
+
return await client.writeContract({
|
|
433
|
+
address,
|
|
434
|
+
abi: GTokenStakingABI,
|
|
435
|
+
functionName: 'transferOwnership',
|
|
436
|
+
args: [newOwner],
|
|
437
|
+
account: account,
|
|
438
|
+
chain: client.chain
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
catch (error) {
|
|
442
|
+
throw AAStarError.fromViemError(error, 'transferOwnership');
|
|
443
|
+
}
|
|
293
444
|
},
|
|
294
445
|
async renounceOwnership({ account }) {
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
446
|
+
try {
|
|
447
|
+
return await client.writeContract({
|
|
448
|
+
address,
|
|
449
|
+
abi: GTokenStakingABI,
|
|
450
|
+
functionName: 'renounceOwnership',
|
|
451
|
+
args: [],
|
|
452
|
+
account: account,
|
|
453
|
+
chain: client.chain
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
catch (error) {
|
|
457
|
+
throw AAStarError.fromViemError(error, 'renounceOwnership');
|
|
458
|
+
}
|
|
303
459
|
},
|
|
304
460
|
// Version
|
|
305
461
|
async version() {
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
462
|
+
try {
|
|
463
|
+
return await client.readContract({
|
|
464
|
+
address,
|
|
465
|
+
abi: GTokenStakingABI,
|
|
466
|
+
functionName: 'version',
|
|
467
|
+
args: []
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
catch (error) {
|
|
471
|
+
throw AAStarError.fromViemError(error, 'version');
|
|
472
|
+
}
|
|
312
473
|
},
|
|
313
474
|
// Constants
|
|
314
475
|
async REGISTRY() {
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
476
|
+
try {
|
|
477
|
+
return await client.readContract({
|
|
478
|
+
address,
|
|
479
|
+
abi: GTokenStakingABI,
|
|
480
|
+
functionName: 'REGISTRY',
|
|
481
|
+
args: []
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
catch (error) {
|
|
485
|
+
throw AAStarError.fromViemError(error, 'REGISTRY');
|
|
486
|
+
}
|
|
321
487
|
},
|
|
322
488
|
async GTOKEN() {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
489
|
+
try {
|
|
490
|
+
return await client.readContract({
|
|
491
|
+
address,
|
|
492
|
+
abi: GTokenStakingABI,
|
|
493
|
+
functionName: 'GTOKEN',
|
|
494
|
+
args: []
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
catch (error) {
|
|
498
|
+
throw AAStarError.fromViemError(error, 'GTOKEN');
|
|
499
|
+
}
|
|
329
500
|
}
|
|
330
501
|
});
|