@continuumdao/continuum-node-sdk 1.3.4 → 1.3.6

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mpa-billing-actions.d.ts","sourceRoot":"","sources":["../../../src/core/mpc/mpa-billing-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAU1D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAM5C,MAAM,MAAM,iBAAiB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACvC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,iBAAS,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;irBA8ZvB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAwF06N,CAAC;mCAA6lC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yeAAumoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
@@ -0,0 +1,408 @@
1
+ import { createPublicClient, defineChain, getAddress, http, } from 'viem';
2
+ import { ERC20_ALLOWANCE_ABI, KEY_GEN_ADDRESS_KIND_ETHEREUM, MPA_DEPOSIT_ONLY_NONCE, MPA_WALLET_CONTRACT_CONFIG, MPA_WALLET_READ_ABI, } from '../../config/mpa-wallet.js';
3
+ import { fetchKeyGenResult } from '../keygen-read.js';
4
+ import { fetchGlobalNonceByKeyGenId } from '../keygen-read.js';
5
+ import { computeVpnHostBinding } from '../vpn/vpn-host-binding.js';
6
+ import { shouldSyncKeyGenMonthAfterDeposit } from './mpa-billing-helpers.js';
7
+ import { fetchMergedMpaWalletStatus } from './mpa-fee-status.js';
8
+ import { nodeId } from '../general.js';
9
+ function getMpaPublicClient() {
10
+ const chain = defineChain({
11
+ id: MPA_WALLET_CONTRACT_CONFIG.chainId,
12
+ name: 'Linea Mainnet',
13
+ nativeCurrency: { decimals: 18, name: 'Ether', symbol: 'ETH' },
14
+ rpcUrls: { default: { http: [MPA_WALLET_CONTRACT_CONFIG.rpcUrl] } },
15
+ });
16
+ return createPublicClient({
17
+ chain,
18
+ transport: http(MPA_WALLET_CONTRACT_CONFIG.rpcUrl),
19
+ });
20
+ }
21
+ export function mpaContractAddress() {
22
+ return MPA_WALLET_CONTRACT_CONFIG.contractAddress;
23
+ }
24
+ function billingAddressFromEth(eth) {
25
+ return getAddress(eth.startsWith('0x') ? eth : `0x${eth}`);
26
+ }
27
+ function isWithdrawAuthority(executor, authority) {
28
+ if (authority == null || String(authority).trim() === '')
29
+ return false;
30
+ try {
31
+ return executor.toLowerCase() === getAddress(String(authority)).toLowerCase();
32
+ }
33
+ catch {
34
+ return false;
35
+ }
36
+ }
37
+ async function resolveKeyGenExecutor(config, keyGenId) {
38
+ const kg = await fetchKeyGenResult(config, keyGenId);
39
+ if (!kg.ok)
40
+ return kg;
41
+ const eth = kg.data.ethereumaddress?.trim();
42
+ if (!eth) {
43
+ return { ok: false, reason: 'KeyGen has no ethereum address.' };
44
+ }
45
+ return { ok: true, data: { keyGenResult: kg.data, billingAddress: billingAddressFromEth(eth) } };
46
+ }
47
+ async function resolveGlobalNonce(config, keyGenId, billingAddress, explicit) {
48
+ if (explicit != null)
49
+ return { ok: true, data: explicit };
50
+ const fromNode = await fetchGlobalNonceByKeyGenId(config, keyGenId);
51
+ if (fromNode.ok)
52
+ return fromNode;
53
+ const client = getMpaPublicClient();
54
+ const nonce = await client.getTransactionCount({ address: billingAddress, blockTag: 'pending' });
55
+ return { ok: true, data: nonce };
56
+ }
57
+ async function resolveNodeKey(config) {
58
+ const self = await nodeId(config);
59
+ if (!self.ok)
60
+ return self;
61
+ return { ok: true, data: self.data.nodeId };
62
+ }
63
+ async function resolveVpnHost(config, hostIpAddress, nodeKeyOverride) {
64
+ let nodeKey = nodeKeyOverride?.trim();
65
+ if (!nodeKey) {
66
+ const self = await resolveNodeKey(config);
67
+ if (!self.ok)
68
+ return self;
69
+ nodeKey = self.data;
70
+ }
71
+ return {
72
+ ok: true,
73
+ data: { nodeKey, hostBinding: computeVpnHostBinding(nodeKey, hostIpAddress) },
74
+ };
75
+ }
76
+ async function fetchFeeTokenAddress(client) {
77
+ return client.readContract({
78
+ address: mpaContractAddress(),
79
+ abi: MPA_WALLET_READ_ABI,
80
+ functionName: 'FEE_TOKEN',
81
+ });
82
+ }
83
+ export async function appendFeeTokenApproveIfNeeded(client, actions, billingAddress, amountWei) {
84
+ const mpa = mpaContractAddress();
85
+ const feeToken = await fetchFeeTokenAddress(client);
86
+ const allowance = await client.readContract({
87
+ address: feeToken,
88
+ abi: ERC20_ALLOWANCE_ABI,
89
+ functionName: 'allowance',
90
+ args: [billingAddress, mpa],
91
+ });
92
+ if (allowance < amountWei) {
93
+ actions.push({
94
+ signature: 'approve(address,uint256)',
95
+ contractAddress: feeToken,
96
+ args: [
97
+ { name: 'spender', type: 'address', value: mpa },
98
+ { name: 'amount', type: 'uint256', value: amountWei.toString() },
99
+ ],
100
+ });
101
+ }
102
+ return feeToken;
103
+ }
104
+ export function buildRegisterVpnActions(nodeKey, hostBinding) {
105
+ const mpa = mpaContractAddress();
106
+ return [
107
+ {
108
+ signature: 'registerVpn(string,bytes32)',
109
+ contractAddress: mpa,
110
+ args: [
111
+ { name: 'nodeKey', type: 'string', value: nodeKey },
112
+ { name: 'hostBinding', type: 'bytes32', value: String(hostBinding) },
113
+ ],
114
+ },
115
+ ];
116
+ }
117
+ export function buildSyncVpnBillingActions(nodeKey, hostBinding) {
118
+ const mpa = mpaContractAddress();
119
+ return [
120
+ {
121
+ signature: 'syncVpnBilling(string,bytes32)',
122
+ contractAddress: mpa,
123
+ args: [
124
+ { name: 'nodeKey', type: 'string', value: nodeKey },
125
+ { name: 'hostBinding', type: 'bytes32', value: String(hostBinding) },
126
+ ],
127
+ },
128
+ ];
129
+ }
130
+ export function buildVpnDepositActions(input) {
131
+ const mpa = mpaContractAddress();
132
+ return [
133
+ {
134
+ signature: 'depositVpn(string,bytes32,uint256,bool)',
135
+ contractAddress: mpa,
136
+ args: [
137
+ { name: 'nodeKey', type: 'string', value: input.nodeKey },
138
+ { name: 'hostBinding', type: 'bytes32', value: String(input.hostBinding) },
139
+ { name: 'amount', type: 'uint256', value: input.amountWei.toString() },
140
+ { name: 'activate', type: 'bool', value: String(input.activateOnDeposit ?? false) },
141
+ ],
142
+ },
143
+ ];
144
+ }
145
+ export function buildWithdrawVpnCreditActions(nodeKey, hostBinding, amountWei) {
146
+ const mpa = mpaContractAddress();
147
+ return [
148
+ {
149
+ signature: 'withdrawVpnCredit(string,bytes32,uint256)',
150
+ contractAddress: mpa,
151
+ args: [
152
+ { name: 'nodeKey', type: 'string', value: nodeKey },
153
+ { name: 'hostBinding', type: 'bytes32', value: String(hostBinding) },
154
+ { name: 'amount', type: 'uint256', value: amountWei.toString() },
155
+ ],
156
+ },
157
+ ];
158
+ }
159
+ export function buildSyncBillingActions(keyGenId, globalNonce) {
160
+ const mpa = mpaContractAddress();
161
+ return [
162
+ {
163
+ signature: 'syncBilling(string,string,uint256)',
164
+ contractAddress: mpa,
165
+ args: [
166
+ { name: 'keyGenId', type: 'string', value: keyGenId },
167
+ { name: 'addressKind', type: 'string', value: KEY_GEN_ADDRESS_KIND_ETHEREUM },
168
+ { name: 'globalNonceAtActivation', type: 'uint256', value: String(globalNonce) },
169
+ ],
170
+ },
171
+ ];
172
+ }
173
+ export function buildKeyGenDepositActions(keyGenId, amountWei) {
174
+ const mpa = mpaContractAddress();
175
+ return [
176
+ {
177
+ signature: 'deposit(string,string,uint256,uint256)',
178
+ contractAddress: mpa,
179
+ args: [
180
+ { name: 'keyGenId', type: 'string', value: keyGenId },
181
+ { name: 'addressKind', type: 'string', value: KEY_GEN_ADDRESS_KIND_ETHEREUM },
182
+ { name: 'amount', type: 'uint256', value: amountWei.toString() },
183
+ { name: 'globalNonceAtActivation', type: 'uint256', value: MPA_DEPOSIT_ONLY_NONCE },
184
+ ],
185
+ },
186
+ ];
187
+ }
188
+ export async function prepareMpaRegisterVpnActions(config, input) {
189
+ const exec = await resolveKeyGenExecutor(config, input.keyGenId);
190
+ if (!exec.ok)
191
+ return exec;
192
+ const vpnHost = await resolveVpnHost(config, input.hostIpAddress, input.nodeKey);
193
+ if (!vpnHost.ok)
194
+ return vpnHost;
195
+ const client = getMpaPublicClient();
196
+ const feeToken = await fetchFeeTokenAddress(client);
197
+ return {
198
+ ok: true,
199
+ data: {
200
+ actions: buildRegisterVpnActions(vpnHost.data.nodeKey, vpnHost.data.hostBinding),
201
+ feeTokenAddress: feeToken,
202
+ },
203
+ };
204
+ }
205
+ export async function prepareMpaVpnDepositActions(config, input) {
206
+ const exec = await resolveKeyGenExecutor(config, input.keyGenId);
207
+ if (!exec.ok)
208
+ return exec;
209
+ const vpnHost = await resolveVpnHost(config, input.hostIpAddress, input.nodeKey);
210
+ if (!vpnHost.ok)
211
+ return vpnHost;
212
+ const amountWei = BigInt(input.amountWei);
213
+ if (amountWei <= 0n) {
214
+ return { ok: false, reason: 'amountWei must be positive.' };
215
+ }
216
+ const client = getMpaPublicClient();
217
+ const actions = [];
218
+ const feeToken = await appendFeeTokenApproveIfNeeded(client, actions, exec.data.billingAddress, amountWei);
219
+ actions.push(...buildVpnDepositActions({
220
+ nodeKey: vpnHost.data.nodeKey,
221
+ hostBinding: vpnHost.data.hostBinding,
222
+ amountWei,
223
+ activateOnDeposit: input.activateOnDeposit,
224
+ }));
225
+ return { ok: true, data: { actions, feeTokenAddress: feeToken } };
226
+ }
227
+ export async function prepareMpaSyncVpnBillingActions(config, input) {
228
+ const exec = await resolveKeyGenExecutor(config, input.keyGenId);
229
+ if (!exec.ok)
230
+ return exec;
231
+ const vpnHost = await resolveVpnHost(config, input.hostIpAddress, input.nodeKey);
232
+ if (!vpnHost.ok)
233
+ return vpnHost;
234
+ const client = getMpaPublicClient();
235
+ const mpa = mpaContractAddress();
236
+ const vpnSub = await client.readContract({
237
+ address: mpa,
238
+ abi: MPA_WALLET_READ_ABI,
239
+ functionName: 'getVpnSubscriptionStatus',
240
+ args: [vpnHost.data.nodeKey, vpnHost.data.hostBinding],
241
+ });
242
+ const [registered, , vpnCreditBalance, vpnMonthlyFee, fundedForCurrentMonth] = vpnSub;
243
+ if (!registered) {
244
+ return { ok: false, reason: 'VPN billing account is not registered.' };
245
+ }
246
+ if (fundedForCurrentMonth) {
247
+ return { ok: false, reason: 'VPN billing month is already active.' };
248
+ }
249
+ if (vpnMonthlyFee === 0n) {
250
+ return { ok: false, reason: 'VPN monthly fee is zero; sync billing is not applicable.' };
251
+ }
252
+ if (vpnCreditBalance < vpnMonthlyFee) {
253
+ return {
254
+ ok: false,
255
+ reason: 'VPN credit pool balance is below the monthly fee; deposit first.',
256
+ };
257
+ }
258
+ const withdrawAuthority = await client.readContract({
259
+ address: mpa,
260
+ abi: MPA_WALLET_READ_ABI,
261
+ functionName: 'getVpnWithdrawAuthority',
262
+ args: [vpnHost.data.nodeKey, vpnHost.data.hostBinding],
263
+ });
264
+ if (!isWithdrawAuthority(exec.data.billingAddress, withdrawAuthority)) {
265
+ return {
266
+ ok: false,
267
+ reason: 'KeyGen executor is not the VPN withdraw authority; sync requires authority.',
268
+ };
269
+ }
270
+ const feeToken = await fetchFeeTokenAddress(client);
271
+ return {
272
+ ok: true,
273
+ data: {
274
+ actions: buildSyncVpnBillingActions(vpnHost.data.nodeKey, vpnHost.data.hostBinding),
275
+ feeTokenAddress: feeToken,
276
+ },
277
+ };
278
+ }
279
+ export async function prepareMpaSyncBillingActions(config, input) {
280
+ const exec = await resolveKeyGenExecutor(config, input.keyGenId);
281
+ if (!exec.ok)
282
+ return exec;
283
+ const client = getMpaPublicClient();
284
+ const mpa = mpaContractAddress();
285
+ const keyGenId = input.keyGenId;
286
+ const registered = await client.readContract({
287
+ address: mpa,
288
+ abi: MPA_WALLET_READ_ABI,
289
+ functionName: 'isKeyGenRegistered',
290
+ args: [keyGenId, KEY_GEN_ADDRESS_KIND_ETHEREUM],
291
+ });
292
+ if (!registered) {
293
+ return { ok: false, reason: 'KeyGen is not registered with MPA wallet.' };
294
+ }
295
+ const sub = await client.readContract({
296
+ address: mpa,
297
+ abi: MPA_WALLET_READ_ABI,
298
+ functionName: 'getSubscriptionStatus',
299
+ args: [keyGenId, KEY_GEN_ADDRESS_KIND_ETHEREUM],
300
+ });
301
+ const [, , , nodeCreditBalance, monthlyFee, , , fundedForCurrentMonth] = sub;
302
+ if (fundedForCurrentMonth) {
303
+ return { ok: false, reason: 'KeyGen billing month is already active.' };
304
+ }
305
+ if (monthlyFee === 0n) {
306
+ return { ok: false, reason: 'Monthly fee is zero; sync billing is not applicable.' };
307
+ }
308
+ if (nodeCreditBalance < monthlyFee) {
309
+ return {
310
+ ok: false,
311
+ reason: 'Credit pool balance is below the monthly fee; deposit first.',
312
+ };
313
+ }
314
+ const globalNonce = await resolveGlobalNonce(config, keyGenId, exec.data.billingAddress, input.globalNonce);
315
+ if (!globalNonce.ok)
316
+ return globalNonce;
317
+ const feeToken = await fetchFeeTokenAddress(client);
318
+ return {
319
+ ok: true,
320
+ data: {
321
+ actions: buildSyncBillingActions(keyGenId, globalNonce.data),
322
+ feeTokenAddress: feeToken,
323
+ },
324
+ };
325
+ }
326
+ export async function prepareMpaKeyGenDepositActions(config, input) {
327
+ const exec = await resolveKeyGenExecutor(config, input.keyGenId);
328
+ if (!exec.ok)
329
+ return exec;
330
+ const amountWei = BigInt(input.amountWei);
331
+ if (amountWei <= 0n) {
332
+ return { ok: false, reason: 'amountWei must be positive.' };
333
+ }
334
+ const client = getMpaPublicClient();
335
+ const mpa = mpaContractAddress();
336
+ const requiredTopUp = await client.readContract({
337
+ address: mpa,
338
+ abi: MPA_WALLET_READ_ABI,
339
+ functionName: 'getRequiredMinimumTopUp',
340
+ args: [input.keyGenId, KEY_GEN_ADDRESS_KIND_ETHEREUM],
341
+ });
342
+ const sub = await client.readContract({
343
+ address: mpa,
344
+ abi: MPA_WALLET_READ_ABI,
345
+ functionName: 'getSubscriptionStatus',
346
+ args: [input.keyGenId, KEY_GEN_ADDRESS_KIND_ETHEREUM],
347
+ });
348
+ const monthlyFee = sub[4];
349
+ const minWei = requiredTopUp > 0n ? requiredTopUp : monthlyFee;
350
+ if (amountWei < minWei) {
351
+ return {
352
+ ok: false,
353
+ reason: `Amount below required minimum top-up (${minWei.toString()} wei).`,
354
+ };
355
+ }
356
+ const eth = exec.data.keyGenResult.ethereumaddress?.trim() ?? '';
357
+ const walletStatus = eth
358
+ ? await fetchMergedMpaWalletStatus(config, input.keyGenId, eth)
359
+ : null;
360
+ const actions = [];
361
+ const feeToken = await appendFeeTokenApproveIfNeeded(client, actions, exec.data.billingAddress, amountWei);
362
+ actions.push(...buildKeyGenDepositActions(input.keyGenId, amountWei));
363
+ const syncAfterDeposit = input.activateBillingMonthAfterDeposit === true &&
364
+ walletStatus != null &&
365
+ shouldSyncKeyGenMonthAfterDeposit(walletStatus, amountWei);
366
+ if (syncAfterDeposit) {
367
+ const globalNonce = await resolveGlobalNonce(config, input.keyGenId, exec.data.billingAddress);
368
+ if (!globalNonce.ok)
369
+ return globalNonce;
370
+ actions.push(...buildSyncBillingActions(input.keyGenId, globalNonce.data));
371
+ }
372
+ return { ok: true, data: { actions, feeTokenAddress: feeToken } };
373
+ }
374
+ export async function prepareMpaWithdrawVpnCreditActions(config, input) {
375
+ const exec = await resolveKeyGenExecutor(config, input.keyGenId);
376
+ if (!exec.ok)
377
+ return exec;
378
+ const vpnHost = await resolveVpnHost(config, input.hostIpAddress, input.nodeKey);
379
+ if (!vpnHost.ok)
380
+ return vpnHost;
381
+ const amountWei = BigInt(input.amountWei);
382
+ if (amountWei <= 0n) {
383
+ return { ok: false, reason: 'amountWei must be positive.' };
384
+ }
385
+ const client = getMpaPublicClient();
386
+ const mpa = mpaContractAddress();
387
+ const withdrawAuthority = await client.readContract({
388
+ address: mpa,
389
+ abi: MPA_WALLET_READ_ABI,
390
+ functionName: 'getVpnWithdrawAuthority',
391
+ args: [vpnHost.data.nodeKey, vpnHost.data.hostBinding],
392
+ });
393
+ if (!isWithdrawAuthority(exec.data.billingAddress, withdrawAuthority)) {
394
+ return {
395
+ ok: false,
396
+ reason: 'KeyGen executor is not the VPN withdraw authority.',
397
+ };
398
+ }
399
+ const feeToken = await fetchFeeTokenAddress(client);
400
+ return {
401
+ ok: true,
402
+ data: {
403
+ actions: buildWithdrawVpnCreditActions(vpnHost.data.nodeKey, vpnHost.data.hostBinding, amountWei),
404
+ feeTokenAddress: feeToken,
405
+ },
406
+ };
407
+ }
408
+ //# sourceMappingURL=mpa-billing-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mpa-billing-actions.js","sourceRoot":"","sources":["../../../src/core/mpc/mpa-billing-actions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mpa-billing-ops.d.ts","sourceRoot":"","sources":["../../../src/core/mpc/mpa-billing-ops.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAO1D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,OAAO,EAA0B,KAAK,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AA+LnF,wBAAsB,oCAAoC,CACzD,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC,CAqEzC;AAED,wBAAsB,wCAAwC,CAC7D,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC,CAkGzC;AAED,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC,CA8BzC;AAED,wBAAsB,mCAAmC,CACxD,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC,CA6CzC;AAED,wBAAsB,uCAAuC,CAC5D,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC,CAoEzC;AAED,wBAAsB,eAAe,CACpC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAsEtC"}
1
+ {"version":3,"file":"mpa-billing-ops.d.ts","sourceRoot":"","sources":["../../../src/core/mpc/mpa-billing-ops.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAM1D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,OAAO,EAA0B,KAAK,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AAiJnF,wBAAsB,oCAAoC,CACzD,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC,CAsBzC;AAED,wBAAsB,wCAAwC,CAC7D,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC,CAkGzC;AAED,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC,CAuBzC;AAED,wBAAsB,mCAAmC,CACxD,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC,CA6BzC;AAED,wBAAsB,uCAAuC,CAC5D,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC,CAuBzC;AAED,wBAAsB,eAAe,CACpC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAsEtC"}