@toon-protocol/connector 2.5.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/core/connector-node.d.ts +1 -0
  2. package/dist/core/connector-node.d.ts.map +1 -1
  3. package/dist/core/connector-node.js +13 -1
  4. package/dist/core/connector-node.js.map +1 -1
  5. package/dist/core/packet-handler.d.ts +3 -0
  6. package/dist/core/packet-handler.d.ts.map +1 -1
  7. package/dist/core/packet-handler.js +33 -10
  8. package/dist/core/packet-handler.js.map +1 -1
  9. package/dist/http/admin-api-inventory.d.ts +29 -0
  10. package/dist/http/admin-api-inventory.d.ts.map +1 -0
  11. package/dist/http/admin-api-inventory.js +462 -0
  12. package/dist/http/admin-api-inventory.js.map +1 -0
  13. package/dist/http/admin-api.d.ts +20 -0
  14. package/dist/http/admin-api.d.ts.map +1 -1
  15. package/dist/http/admin-api.js +61 -1
  16. package/dist/http/admin-api.js.map +1 -1
  17. package/dist/http/admin-server.d.ts +2 -0
  18. package/dist/http/admin-server.d.ts.map +1 -1
  19. package/dist/http/admin-server.js +2 -1
  20. package/dist/http/admin-server.js.map +1 -1
  21. package/dist/observability/metrics-registry.d.ts +39 -0
  22. package/dist/observability/metrics-registry.d.ts.map +1 -0
  23. package/dist/observability/metrics-registry.js +151 -0
  24. package/dist/observability/metrics-registry.js.map +1 -0
  25. package/package.json +8 -3
  26. package/dist/config/aptos-env-validator.d.ts +0 -8
  27. package/dist/config/aptos-env-validator.d.ts.map +0 -1
  28. package/dist/config/aptos-env-validator.js +0 -25
  29. package/dist/config/aptos-env-validator.js.map +0 -1
  30. package/dist/explorer-ui/assets/EventDetailPanel-CnSaMk3V.js +0 -6
  31. package/dist/explorer-ui/assets/FilterBar-BEmAzBku.js +0 -26
  32. package/dist/explorer-ui/assets/chevron-right-BUT9VhYe.js +0 -11
  33. package/dist/explorer-ui/assets/index-BZ2INVgy.js +0 -360
  34. package/dist/explorer-ui/assets/index-Cemh6svI.css +0 -1
  35. package/dist/explorer-ui/index.html +0 -14
  36. package/dist/explorer-ui/vite.svg +0 -1
  37. package/dist/security/backends/aws-kms-backend.d.ts +0 -18
  38. package/dist/security/backends/aws-kms-backend.d.ts.map +0 -1
  39. package/dist/security/backends/aws-kms-backend.js +0 -130
  40. package/dist/security/backends/aws-kms-backend.js.map +0 -1
  41. package/dist/security/backends/azure-kv-backend.d.ts +0 -17
  42. package/dist/security/backends/azure-kv-backend.d.ts.map +0 -1
  43. package/dist/security/backends/azure-kv-backend.js +0 -121
  44. package/dist/security/backends/azure-kv-backend.js.map +0 -1
  45. package/dist/security/backends/gcp-kms-backend.d.ts +0 -17
  46. package/dist/security/backends/gcp-kms-backend.d.ts.map +0 -1
  47. package/dist/security/backends/gcp-kms-backend.js +0 -110
  48. package/dist/security/backends/gcp-kms-backend.js.map +0 -1
  49. package/dist/security/backends/hsm-backend.d.ts +0 -18
  50. package/dist/security/backends/hsm-backend.d.ts.map +0 -1
  51. package/dist/security/backends/hsm-backend.js +0 -187
  52. package/dist/security/backends/hsm-backend.js.map +0 -1
  53. package/dist/settlement/aptos-channel-sdk.d.ts +0 -66
  54. package/dist/settlement/aptos-channel-sdk.d.ts.map +0 -1
  55. package/dist/settlement/aptos-channel-sdk.js +0 -274
  56. package/dist/settlement/aptos-channel-sdk.js.map +0 -1
  57. package/dist/settlement/aptos-claim-signer.d.ts +0 -57
  58. package/dist/settlement/aptos-claim-signer.d.ts.map +0 -1
  59. package/dist/settlement/aptos-claim-signer.js +0 -200
  60. package/dist/settlement/aptos-claim-signer.js.map +0 -1
  61. package/dist/settlement/aptos-client.d.ts +0 -99
  62. package/dist/settlement/aptos-client.d.ts.map +0 -1
  63. package/dist/settlement/aptos-client.js +0 -474
  64. package/dist/settlement/aptos-client.js.map +0 -1
  65. package/dist/settlement/xrp-channel-lifecycle.d.ts +0 -41
  66. package/dist/settlement/xrp-channel-lifecycle.d.ts.map +0 -1
  67. package/dist/settlement/xrp-channel-lifecycle.js +0 -142
  68. package/dist/settlement/xrp-channel-lifecycle.js.map +0 -1
  69. package/dist/settlement/xrp-channel-manager.d.ts +0 -59
  70. package/dist/settlement/xrp-channel-manager.d.ts.map +0 -1
  71. package/dist/settlement/xrp-channel-manager.js +0 -160
  72. package/dist/settlement/xrp-channel-manager.js.map +0 -1
  73. package/dist/settlement/xrp-channel-sdk.d.ts +0 -30
  74. package/dist/settlement/xrp-channel-sdk.d.ts.map +0 -1
  75. package/dist/settlement/xrp-channel-sdk.js +0 -164
  76. package/dist/settlement/xrp-channel-sdk.js.map +0 -1
  77. package/dist/settlement/xrp-claim-signer.d.ts +0 -22
  78. package/dist/settlement/xrp-claim-signer.d.ts.map +0 -1
  79. package/dist/settlement/xrp-claim-signer.js +0 -122
  80. package/dist/settlement/xrp-claim-signer.js.map +0 -1
  81. package/dist/settlement/xrpl-client.d.ts +0 -104
  82. package/dist/settlement/xrpl-client.d.ts.map +0 -1
  83. package/dist/settlement/xrpl-client.js +0 -304
  84. package/dist/settlement/xrpl-client.js.map +0 -1
  85. package/dist/test/testnet-config.d.ts +0 -58
  86. package/dist/test/testnet-config.d.ts.map +0 -1
  87. package/dist/test/testnet-config.js +0 -89
  88. package/dist/test/testnet-config.js.map +0 -1
  89. package/dist/utils/xrp-wss-connection-pool.d.ts +0 -8
  90. package/dist/utils/xrp-wss-connection-pool.d.ts.map +0 -1
  91. package/dist/utils/xrp-wss-connection-pool.js +0 -42
  92. package/dist/utils/xrp-wss-connection-pool.js.map +0 -1
@@ -1,474 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AptosClient = exports.AptosError = exports.AptosErrorCode = void 0;
4
- exports.createAptosClientFromEnv = createAptosClientFromEnv;
5
- const optional_require_1 = require("../utils/optional-require");
6
- var AptosErrorCode;
7
- (function (AptosErrorCode) {
8
- AptosErrorCode["CONNECTION_FAILED"] = "APTOS_CONNECTION_FAILED";
9
- AptosErrorCode["CONNECTION_TIMEOUT"] = "APTOS_CONNECTION_TIMEOUT";
10
- AptosErrorCode["RATE_LIMITED"] = "APTOS_RATE_LIMITED";
11
- AptosErrorCode["ACCOUNT_NOT_FOUND"] = "APTOS_ACCOUNT_NOT_FOUND";
12
- AptosErrorCode["INSUFFICIENT_BALANCE"] = "APTOS_INSUFFICIENT_BALANCE";
13
- AptosErrorCode["SEQUENCE_NUMBER_TOO_OLD"] = "APTOS_SEQUENCE_TOO_OLD";
14
- AptosErrorCode["TRANSACTION_FAILED"] = "APTOS_TRANSACTION_FAILED";
15
- AptosErrorCode["INVALID_TRANSACTION"] = "APTOS_INVALID_TRANSACTION";
16
- AptosErrorCode["TRANSACTION_EXPIRED"] = "APTOS_TRANSACTION_EXPIRED";
17
- AptosErrorCode["SIMULATION_FAILED"] = "APTOS_SIMULATION_FAILED";
18
- AptosErrorCode["MODULE_NOT_FOUND"] = "APTOS_MODULE_NOT_FOUND";
19
- AptosErrorCode["RESOURCE_NOT_FOUND"] = "APTOS_RESOURCE_NOT_FOUND";
20
- AptosErrorCode["UNKNOWN_ERROR"] = "APTOS_UNKNOWN_ERROR";
21
- })(AptosErrorCode || (exports.AptosErrorCode = AptosErrorCode = {}));
22
- class AptosError extends Error {
23
- code;
24
- originalError;
25
- constructor(code, message, originalError) {
26
- super(message);
27
- this.code = code;
28
- this.originalError = originalError;
29
- this.name = 'AptosError';
30
- }
31
- }
32
- exports.AptosError = AptosError;
33
- class AptosClient {
34
- aptos;
35
- fallbackAptos = null;
36
- account;
37
- logger;
38
- config;
39
- healthCheckInterval = null;
40
- _connectionHealthy = false;
41
- static _sdk = null;
42
- static async loadSdk() {
43
- if (!AptosClient._sdk) {
44
- AptosClient._sdk = await (0, optional_require_1.requireOptional)('@aptos-labs/ts-sdk', 'Aptos settlement');
45
- }
46
- return AptosClient._sdk;
47
- }
48
- constructor(config, logger, aptos, fallbackAptos, account) {
49
- this.config = config;
50
- this.logger = logger;
51
- this.aptos = aptos;
52
- this.fallbackAptos = fallbackAptos;
53
- this.account = account;
54
- }
55
- static async create(config, logger) {
56
- const sdk = await AptosClient.loadSdk();
57
- const getNetworkFromUrl = (url) => {
58
- if (url.includes('testnet'))
59
- return sdk.Network.TESTNET;
60
- if (url.includes('devnet'))
61
- return sdk.Network.DEVNET;
62
- if (url.includes('mainnet'))
63
- return sdk.Network.MAINNET;
64
- if (url.includes('localhost') || url.includes('127.0.0.1'))
65
- return sdk.Network.LOCAL;
66
- return sdk.Network.CUSTOM;
67
- };
68
- const network = getNetworkFromUrl(config.nodeUrl);
69
- const aptosConfig = new sdk.AptosConfig({
70
- network,
71
- fullnode: config.nodeUrl,
72
- });
73
- const aptos = new sdk.Aptos(aptosConfig);
74
- let fallbackAptos = null;
75
- if (config.fallbackNodeUrl) {
76
- const fallbackNetwork = getNetworkFromUrl(config.fallbackNodeUrl);
77
- const fallbackConfig = new sdk.AptosConfig({
78
- network: fallbackNetwork,
79
- fullnode: config.fallbackNodeUrl,
80
- });
81
- fallbackAptos = new sdk.Aptos(fallbackConfig);
82
- }
83
- const privateKey = new sdk.Ed25519PrivateKey(config.privateKey);
84
- const account = sdk.Account.fromPrivateKey({ privateKey });
85
- const derivedAddress = account.accountAddress.toString().toLowerCase();
86
- const configAddress = config.accountAddress.toLowerCase();
87
- if (derivedAddress !== configAddress) {
88
- throw new Error(`Account address mismatch: expected ${config.accountAddress}, got ${account.accountAddress.toString()}`);
89
- }
90
- return new AptosClient(config, logger, aptos, fallbackAptos, account);
91
- }
92
- async connect() {
93
- try {
94
- this.logger.info({ nodeUrl: this.config.nodeUrl }, 'Connecting to Aptos node...');
95
- const accountInfo = await this.getAccountInfo(this.config.accountAddress);
96
- this.logger.info({ address: this.config.accountAddress, sequenceNumber: accountInfo.sequenceNumber }, 'Aptos account validated');
97
- const balance = await this.getBalance(this.config.accountAddress);
98
- this.logger.info({ address: this.config.accountAddress, balanceOctas: balance.toString() }, 'Aptos account balance retrieved');
99
- this._connectionHealthy = true;
100
- if (this.config.healthCheckIntervalMs && this.config.healthCheckIntervalMs > 0) {
101
- this.startHealthCheck();
102
- }
103
- }
104
- catch (error) {
105
- const errorMessage = error instanceof Error ? error.message : 'Unknown connection error';
106
- this.logger.error({ error, nodeUrl: this.config.nodeUrl }, 'Failed to connect to Aptos');
107
- if (error instanceof AptosError) {
108
- throw error;
109
- }
110
- throw new AptosError(AptosErrorCode.CONNECTION_FAILED, `Failed to connect to Aptos: ${errorMessage}`, error);
111
- }
112
- }
113
- disconnect() {
114
- if (this.healthCheckInterval) {
115
- clearInterval(this.healthCheckInterval);
116
- this.healthCheckInterval = null;
117
- }
118
- this._connectionHealthy = false;
119
- this.logger.info('Disconnected from Aptos');
120
- }
121
- async getAccountInfo(address) {
122
- return this.withRetry(async () => {
123
- try {
124
- const accountInfo = await this.aptos.account.getAccountInfo({
125
- accountAddress: address,
126
- });
127
- return {
128
- sequenceNumber: accountInfo.sequence_number,
129
- authenticationKey: accountInfo.authentication_key,
130
- };
131
- }
132
- catch (error) {
133
- throw this.mapError(error, `Failed to get account info for ${address}`);
134
- }
135
- });
136
- }
137
- async getBalance(address) {
138
- return this.withRetry(async () => {
139
- try {
140
- const balance = await this.aptos.account.getAccountAPTAmount({
141
- accountAddress: address,
142
- });
143
- return BigInt(balance);
144
- }
145
- catch (error) {
146
- throw this.mapError(error, `Failed to get balance for ${address}`);
147
- }
148
- });
149
- }
150
- async submitTransaction(transaction) {
151
- return this.withRetry(async () => {
152
- try {
153
- this.logger.info({ transaction }, 'Submitting transaction to Aptos...');
154
- const txnInput = transaction;
155
- let builtTxn;
156
- if (txnInput.function && typeof txnInput.bcsToBytes !== 'function') {
157
- this.logger.debug({ function: txnInput.function }, 'Building transaction from payload');
158
- builtTxn = await this.aptos.transaction.build.simple({
159
- sender: this.account.accountAddress,
160
- data: {
161
- function: txnInput.function,
162
- typeArguments: txnInput.typeArguments || [],
163
- functionArguments: txnInput.functionArguments || [],
164
- },
165
- });
166
- }
167
- else {
168
- builtTxn = txnInput;
169
- }
170
- const pendingTxn = await this.aptos.signAndSubmitTransaction({
171
- signer: this.account,
172
- transaction: builtTxn,
173
- });
174
- const committedTxn = await this.aptos.waitForTransaction({
175
- transactionHash: pendingTxn.hash,
176
- });
177
- this.logger.info({ hash: committedTxn.hash, version: committedTxn.version }, 'Transaction confirmed on Aptos');
178
- return {
179
- hash: committedTxn.hash,
180
- version: committedTxn.version,
181
- success: committedTxn.success,
182
- vmStatus: committedTxn.vm_status,
183
- };
184
- }
185
- catch (error) {
186
- let errorDetail = '';
187
- if (error instanceof Error) {
188
- errorDetail = error.message;
189
- const errorWithResponse = error;
190
- if (errorWithResponse.response && typeof errorWithResponse.response === 'object') {
191
- const response = errorWithResponse.response;
192
- if (response.data?.message) {
193
- errorDetail = response.data.message;
194
- }
195
- else if (response.data?.error_code) {
196
- errorDetail = `${response.data.error_code}: ${response.data.vm_error_code || response.data.message || 'unknown'}`;
197
- }
198
- }
199
- }
200
- this.logger.error({ error, transaction, errorDetail }, 'Transaction submission failed');
201
- throw this.mapError(error, `Failed to submit transaction: ${errorDetail}`);
202
- }
203
- });
204
- }
205
- async simulateTransaction(transaction) {
206
- try {
207
- this.logger.info({ transaction }, 'Simulating transaction...');
208
- const txnInput = transaction;
209
- let builtTxn;
210
- if (txnInput.function && typeof txnInput.bcsToBytes !== 'function') {
211
- this.logger.debug({ function: txnInput.function }, 'Building transaction for simulation');
212
- builtTxn = await this.aptos.transaction.build.simple({
213
- sender: this.account.accountAddress,
214
- data: {
215
- function: txnInput.function,
216
- typeArguments: txnInput.typeArguments || [],
217
- functionArguments: txnInput.functionArguments || [],
218
- },
219
- });
220
- }
221
- else {
222
- builtTxn = txnInput;
223
- }
224
- const simulationResults = await this.aptos.transaction.simulate.simple({
225
- signerPublicKey: this.account.publicKey,
226
- transaction: builtTxn,
227
- });
228
- const simulationResult = simulationResults[0];
229
- if (!simulationResult) {
230
- throw new AptosError(AptosErrorCode.SIMULATION_FAILED, 'Simulation returned no results');
231
- }
232
- return {
233
- success: simulationResult.success,
234
- gasUsed: simulationResult.gas_used,
235
- vmStatus: simulationResult.vm_status,
236
- };
237
- }
238
- catch (error) {
239
- this.logger.error({ error }, 'Transaction simulation failed');
240
- throw new AptosError(AptosErrorCode.SIMULATION_FAILED, 'Transaction simulation failed', error);
241
- }
242
- }
243
- async view(moduleAddress, moduleName, functionName, typeArgs, args) {
244
- return this.withRetry(async () => {
245
- try {
246
- const payload = {
247
- function: `${moduleAddress}::${moduleName}::${functionName}`,
248
- typeArguments: typeArgs ?? [],
249
- functionArguments: args ?? [],
250
- };
251
- const result = await this.aptos.view({ payload });
252
- return result;
253
- }
254
- catch (error) {
255
- this.logger.error({ error, moduleAddress, moduleName, functionName }, 'View function call failed');
256
- throw this.mapError(error, `Failed to call view function ${moduleAddress}::${moduleName}::${functionName}`);
257
- }
258
- });
259
- }
260
- async getAccountResource(address, resourceType) {
261
- return this.withRetry(async () => {
262
- try {
263
- const resource = await this.aptos.account.getAccountResource({
264
- accountAddress: address,
265
- resourceType: resourceType,
266
- });
267
- return resource;
268
- }
269
- catch (error) {
270
- throw this.mapError(error, `Failed to get resource ${resourceType} for ${address}`);
271
- }
272
- });
273
- }
274
- isConnected() {
275
- return this._connectionHealthy;
276
- }
277
- getAddress() {
278
- return this.account.accountAddress.toString();
279
- }
280
- async fundWithFaucet(address, amount) {
281
- try {
282
- this.logger.info({ address, amount }, 'Funding account via Aptos testnet faucet...');
283
- const sdk = await AptosClient.loadSdk();
284
- const network = this.getNetworkFromUrl(this.config.nodeUrl);
285
- if (network !== sdk.Network.TESTNET && network !== sdk.Network.DEVNET) {
286
- throw new AptosError(AptosErrorCode.INVALID_TRANSACTION, 'Faucet is only available on testnet and devnet');
287
- }
288
- await this.aptos.fundAccount({
289
- accountAddress: sdk.AccountAddress.from(address),
290
- amount,
291
- });
292
- this.logger.info({ address, amount }, 'Account funded successfully');
293
- }
294
- catch (error) {
295
- if (error instanceof AptosError) {
296
- throw error;
297
- }
298
- const errorMessage = error instanceof Error ? error.message : String(error);
299
- if (errorMessage.includes('429') || errorMessage.toLowerCase().includes('rate')) {
300
- throw new AptosError(AptosErrorCode.RATE_LIMITED, 'Faucet rate-limited, try again later', error);
301
- }
302
- this.logger.error({ error, address }, 'Failed to fund account via faucet');
303
- throw new AptosError(AptosErrorCode.CONNECTION_FAILED, 'Faucet unavailable', error);
304
- }
305
- }
306
- getNetworkFromUrl(url) {
307
- const sdk = AptosClient._sdk;
308
- if (url.includes('testnet')) {
309
- return sdk.Network.TESTNET;
310
- }
311
- else if (url.includes('devnet')) {
312
- return sdk.Network.DEVNET;
313
- }
314
- else if (url.includes('mainnet')) {
315
- return sdk.Network.MAINNET;
316
- }
317
- else if (url.includes('localhost') || url.includes('127.0.0.1')) {
318
- return sdk.Network.LOCAL;
319
- }
320
- return sdk.Network.CUSTOM;
321
- }
322
- startHealthCheck() {
323
- const intervalMs = this.config.healthCheckIntervalMs ?? 30000;
324
- this.healthCheckInterval = setInterval(async () => {
325
- try {
326
- await this.aptos.getLedgerInfo();
327
- this._connectionHealthy = true;
328
- }
329
- catch (error) {
330
- this.logger.warn({ error }, 'Aptos health check failed');
331
- this._connectionHealthy = false;
332
- }
333
- }, intervalMs);
334
- }
335
- async withRetry(operation) {
336
- const maxRetries = this.config.maxRetryAttempts ?? 3;
337
- let lastError;
338
- for (let attempt = 1; attempt <= maxRetries; attempt++) {
339
- try {
340
- return await operation();
341
- }
342
- catch (error) {
343
- lastError = error;
344
- if (error instanceof AptosError) {
345
- if (error.code === AptosErrorCode.ACCOUNT_NOT_FOUND ||
346
- error.code === AptosErrorCode.RESOURCE_NOT_FOUND ||
347
- error.code === AptosErrorCode.MODULE_NOT_FOUND) {
348
- throw error;
349
- }
350
- }
351
- const isRetryable = this.isRetryableError(error);
352
- if (!isRetryable || attempt >= maxRetries) {
353
- throw error;
354
- }
355
- const backoffMs = Math.min(1000 * Math.pow(2, attempt - 1), 4000);
356
- this.logger.warn({ attempt, maxRetries, backoffMs, error }, 'Retrying after transient failure...');
357
- await new Promise((resolve) => setTimeout(resolve, backoffMs));
358
- if (this.fallbackAptos && attempt === 2) {
359
- this.logger.info('Switching to fallback Aptos node...');
360
- const temp = this.aptos;
361
- this.aptos = this.fallbackAptos;
362
- this.fallbackAptos = temp;
363
- }
364
- }
365
- }
366
- throw lastError;
367
- }
368
- isRetryableError(error) {
369
- if (!error)
370
- return false;
371
- let errorMessage = error instanceof Error ? error.message : String(error);
372
- if (error instanceof AptosError && error.originalError) {
373
- const originalMessage = error.originalError instanceof Error
374
- ? error.originalError.message
375
- : String(error.originalError);
376
- errorMessage = `${errorMessage} ${originalMessage}`;
377
- }
378
- const lowerMessage = errorMessage.toLowerCase();
379
- if (lowerMessage.includes('econnrefused') ||
380
- lowerMessage.includes('etimedout') ||
381
- lowerMessage.includes('enotfound') ||
382
- lowerMessage.includes('socket hang up') ||
383
- lowerMessage.includes('network') ||
384
- lowerMessage.includes('timeout')) {
385
- return true;
386
- }
387
- if (lowerMessage.includes('500') ||
388
- lowerMessage.includes('502') ||
389
- lowerMessage.includes('503') ||
390
- lowerMessage.includes('504')) {
391
- return true;
392
- }
393
- if (lowerMessage.includes('429') || lowerMessage.includes('rate')) {
394
- return true;
395
- }
396
- return false;
397
- }
398
- mapError(error, context) {
399
- if (error instanceof AptosError) {
400
- return error;
401
- }
402
- const errorMessage = error instanceof Error ? error.message : String(error);
403
- const errorString = errorMessage.toLowerCase();
404
- if (errorString.includes('account not found') ||
405
- errorString.includes('resource not found') ||
406
- errorString.includes('404')) {
407
- if (context.includes('resource')) {
408
- return new AptosError(AptosErrorCode.RESOURCE_NOT_FOUND, context, error);
409
- }
410
- return new AptosError(AptosErrorCode.ACCOUNT_NOT_FOUND, context, error);
411
- }
412
- if (errorString.includes('module') && errorString.includes('not found')) {
413
- return new AptosError(AptosErrorCode.MODULE_NOT_FOUND, context, error);
414
- }
415
- if (errorString.includes('429') || errorString.includes('rate')) {
416
- return new AptosError(AptosErrorCode.RATE_LIMITED, context, error);
417
- }
418
- if (errorString.includes('timeout') || errorString.includes('etimedout')) {
419
- return new AptosError(AptosErrorCode.CONNECTION_TIMEOUT, context, error);
420
- }
421
- if (errorString.includes('econnrefused') ||
422
- errorString.includes('enotfound') ||
423
- errorString.includes('network')) {
424
- return new AptosError(AptosErrorCode.CONNECTION_FAILED, context, error);
425
- }
426
- if (errorString.includes('sequence') && errorString.includes('old')) {
427
- return new AptosError(AptosErrorCode.SEQUENCE_NUMBER_TOO_OLD, context, error);
428
- }
429
- if (errorString.includes('insufficient') ||
430
- errorString.includes('balance') ||
431
- errorString.includes('gas')) {
432
- return new AptosError(AptosErrorCode.INSUFFICIENT_BALANCE, context, error);
433
- }
434
- if (errorString.includes('expired') || errorString.includes('deadline')) {
435
- return new AptosError(AptosErrorCode.TRANSACTION_EXPIRED, context, error);
436
- }
437
- if (errorString.includes('transaction') && errorString.includes('failed')) {
438
- return new AptosError(AptosErrorCode.TRANSACTION_FAILED, context, error);
439
- }
440
- return new AptosError(AptosErrorCode.UNKNOWN_ERROR, `${context}: ${errorMessage}`, error);
441
- }
442
- }
443
- exports.AptosClient = AptosClient;
444
- async function createAptosClientFromEnv(logger) {
445
- const nodeUrl = process.env.APTOS_NODE_URL;
446
- const privateKey = process.env.APTOS_PRIVATE_KEY;
447
- const accountAddress = process.env.APTOS_ACCOUNT_ADDRESS;
448
- if (!nodeUrl) {
449
- throw new Error('APTOS_NODE_URL environment variable is required');
450
- }
451
- if (!privateKey) {
452
- throw new Error('APTOS_PRIVATE_KEY environment variable is required');
453
- }
454
- if (!accountAddress) {
455
- throw new Error('APTOS_ACCOUNT_ADDRESS environment variable is required');
456
- }
457
- const config = {
458
- nodeUrl,
459
- privateKey,
460
- accountAddress,
461
- fallbackNodeUrl: process.env.APTOS_FALLBACK_NODE_URL,
462
- requestTimeoutMs: process.env.APTOS_REQUEST_TIMEOUT_MS
463
- ? parseInt(process.env.APTOS_REQUEST_TIMEOUT_MS, 10)
464
- : undefined,
465
- maxRetryAttempts: process.env.APTOS_MAX_RETRY_ATTEMPTS
466
- ? parseInt(process.env.APTOS_MAX_RETRY_ATTEMPTS, 10)
467
- : undefined,
468
- healthCheckIntervalMs: process.env.APTOS_HEALTH_CHECK_INTERVAL_MS
469
- ? parseInt(process.env.APTOS_HEALTH_CHECK_INTERVAL_MS, 10)
470
- : undefined,
471
- };
472
- return AptosClient.create(config, logger);
473
- }
474
- //# sourceMappingURL=aptos-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aptos-client.js","sourceRoot":"","sources":["../../src/settlement/aptos-client.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- import type { Logger } from 'pino';
2
- import type { XRPChannelSDK } from './xrp-channel-sdk';
3
- export interface XRPChannelLifecycleConfig {
4
- enabled: boolean;
5
- initialChannelAmount: string;
6
- defaultSettleDelay: number;
7
- idleChannelThreshold: number;
8
- minBalanceThreshold: number;
9
- cancelAfter?: number;
10
- peerId?: string;
11
- }
12
- export interface XRPChannelTrackingState {
13
- channelId: string;
14
- peerId: string;
15
- destination: string;
16
- amount: string;
17
- balance: string;
18
- settleDelay: number;
19
- status: 'open' | 'closing' | 'closed';
20
- lastActivityAt: number;
21
- cancelAfter?: number;
22
- }
23
- export declare class XRPChannelLifecycleManager {
24
- private config;
25
- private xrpChannelSDK;
26
- private logger;
27
- private channels;
28
- private idleCheckTimer;
29
- constructor(config: XRPChannelLifecycleConfig, xrpChannelSDK: XRPChannelSDK, logger: Logger);
30
- start(): Promise<void>;
31
- stop(): void;
32
- getOrCreateChannel(peerId: string, destination: string): Promise<string>;
33
- updateChannelActivity(peerId: string, claimAmount: string): void;
34
- needsFunding(peerId: string): boolean;
35
- fundChannel(peerId: string, additionalAmount: string): Promise<void>;
36
- closeChannel(peerId: string, reason: 'idle' | 'expiration' | 'manual'): Promise<void>;
37
- getChannelForPeer(peerId: string): XRPChannelTrackingState | null;
38
- private detectIdleChannels;
39
- private detectExpiringChannels;
40
- }
41
- //# sourceMappingURL=xrp-channel-lifecycle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xrp-channel-lifecycle.d.ts","sourceRoot":"","sources":["../../src/settlement/xrp-channel-lifecycle.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAUvD,MAAM,WAAW,yBAAyB;IAExC,OAAO,EAAE,OAAO,CAAC;IAGjB,oBAAoB,EAAE,MAAM,CAAC;IAG7B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,oBAAoB,EAAE,MAAM,CAAC;IAG7B,mBAAmB,EAAE,MAAM,CAAC;IAG5B,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAQD,MAAM,WAAW,uBAAuB;IAEtC,SAAS,EAAE,MAAM,CAAC;IAGlB,MAAM,EAAE,MAAM,CAAC;IAGf,WAAW,EAAE,MAAM,CAAC;IAGpB,MAAM,EAAE,MAAM,CAAC;IAGf,OAAO,EAAE,MAAM,CAAC;IAGhB,WAAW,EAAE,MAAM,CAAC;IAGpB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IAGtC,cAAc,EAAE,MAAM,CAAC;IAGvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAWD,qBAAa,0BAA0B;IAYnC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,MAAM;IAbhB,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,cAAc,CAA+B;gBAU3C,MAAM,EAAE,yBAAyB,EACjC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM;IAUlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5B,IAAI,IAAI,IAAI;IAmBN,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqD9E,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAyBhE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAsB/B,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCpE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC3F,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI;YAUnD,kBAAkB;YA4BlB,sBAAsB;CAsBrC"}