@galaxy-kj/core-stellar-sdk 2.0.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.
- package/LICENSE +21 -0
- package/README.md +576 -0
- package/dist/claimable-balances/claimable-balance-manager.d.ts +99 -0
- package/dist/claimable-balances/claimable-balance-manager.d.ts.map +1 -0
- package/dist/claimable-balances/claimable-balance-manager.js +352 -0
- package/dist/claimable-balances/claimable-balance-manager.js.map +1 -0
- package/dist/claimable-balances/helpers.d.ts +66 -0
- package/dist/claimable-balances/helpers.d.ts.map +1 -0
- package/dist/claimable-balances/helpers.js +179 -0
- package/dist/claimable-balances/helpers.js.map +1 -0
- package/dist/claimable-balances/index.d.ts +12 -0
- package/dist/claimable-balances/index.d.ts.map +1 -0
- package/dist/claimable-balances/index.js +14 -0
- package/dist/claimable-balances/index.js.map +1 -0
- package/dist/claimable-balances/predicate-builder.d.ts +66 -0
- package/dist/claimable-balances/predicate-builder.d.ts.map +1 -0
- package/dist/claimable-balances/predicate-builder.js +169 -0
- package/dist/claimable-balances/predicate-builder.js.map +1 -0
- package/dist/claimable-balances/types.d.ts +123 -0
- package/dist/claimable-balances/types.d.ts.map +1 -0
- package/dist/claimable-balances/types.js +9 -0
- package/dist/claimable-balances/types.js.map +1 -0
- package/dist/hooks/use-stellar.d.ts +48 -0
- package/dist/hooks/use-stellar.d.ts.map +1 -0
- package/dist/hooks/use-stellar.js +510 -0
- package/dist/hooks/use-stellar.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/liquidity-pools/calculations.d.ts +113 -0
- package/dist/liquidity-pools/calculations.d.ts.map +1 -0
- package/dist/liquidity-pools/calculations.js +291 -0
- package/dist/liquidity-pools/calculations.js.map +1 -0
- package/dist/liquidity-pools/helpers.d.ts +102 -0
- package/dist/liquidity-pools/helpers.d.ts.map +1 -0
- package/dist/liquidity-pools/helpers.js +219 -0
- package/dist/liquidity-pools/helpers.js.map +1 -0
- package/dist/liquidity-pools/index.d.ts +13 -0
- package/dist/liquidity-pools/index.d.ts.map +1 -0
- package/dist/liquidity-pools/index.js +18 -0
- package/dist/liquidity-pools/index.js.map +1 -0
- package/dist/liquidity-pools/liquidity-pool-manager.d.ts +106 -0
- package/dist/liquidity-pools/liquidity-pool-manager.d.ts.map +1 -0
- package/dist/liquidity-pools/liquidity-pool-manager.js +387 -0
- package/dist/liquidity-pools/liquidity-pool-manager.js.map +1 -0
- package/dist/liquidity-pools/types.d.ts +135 -0
- package/dist/liquidity-pools/types.d.ts.map +1 -0
- package/dist/liquidity-pools/types.js +6 -0
- package/dist/liquidity-pools/types.js.map +1 -0
- package/dist/liquidity-pools/validation.d.ts +75 -0
- package/dist/liquidity-pools/validation.d.ts.map +1 -0
- package/dist/liquidity-pools/validation.js +218 -0
- package/dist/liquidity-pools/validation.js.map +1 -0
- package/dist/services/stellar-service.d.ts +231 -0
- package/dist/services/stellar-service.d.ts.map +1 -0
- package/dist/services/stellar-service.js +674 -0
- package/dist/services/stellar-service.js.map +1 -0
- package/dist/soroban/helpers/contract-factory.d.ts +45 -0
- package/dist/soroban/helpers/contract-factory.d.ts.map +1 -0
- package/dist/soroban/helpers/contract-factory.js +84 -0
- package/dist/soroban/helpers/contract-factory.js.map +1 -0
- package/dist/soroban/helpers/token-contract-wrapper.d.ts +104 -0
- package/dist/soroban/helpers/token-contract-wrapper.d.ts.map +1 -0
- package/dist/soroban/helpers/token-contract-wrapper.js +286 -0
- package/dist/soroban/helpers/token-contract-wrapper.js.map +1 -0
- package/dist/soroban/index.d.ts +19 -0
- package/dist/soroban/index.d.ts.map +1 -0
- package/dist/soroban/index.js +19 -0
- package/dist/soroban/index.js.map +1 -0
- package/dist/soroban/soroban-contract-manager.d.ts +71 -0
- package/dist/soroban/soroban-contract-manager.d.ts.map +1 -0
- package/dist/soroban/soroban-contract-manager.js +376 -0
- package/dist/soroban/soroban-contract-manager.js.map +1 -0
- package/dist/soroban/types/contract-types.d.ts +156 -0
- package/dist/soroban/types/contract-types.d.ts.map +1 -0
- package/dist/soroban/types/contract-types.js +3 -0
- package/dist/soroban/types/contract-types.js.map +1 -0
- package/dist/soroban/utils/abi-parser.d.ts +90 -0
- package/dist/soroban/utils/abi-parser.d.ts.map +1 -0
- package/dist/soroban/utils/abi-parser.js +308 -0
- package/dist/soroban/utils/abi-parser.js.map +1 -0
- package/dist/soroban/utils/error-parser.d.ts +70 -0
- package/dist/soroban/utils/error-parser.d.ts.map +1 -0
- package/dist/soroban/utils/error-parser.js +302 -0
- package/dist/soroban/utils/error-parser.js.map +1 -0
- package/dist/soroban/utils/event-decoder.d.ts +91 -0
- package/dist/soroban/utils/event-decoder.d.ts.map +1 -0
- package/dist/soroban/utils/event-decoder.js +307 -0
- package/dist/soroban/utils/event-decoder.js.map +1 -0
- package/dist/soroban/utils/event-monitor.d.ts +93 -0
- package/dist/soroban/utils/event-monitor.d.ts.map +1 -0
- package/dist/soroban/utils/event-monitor.js +282 -0
- package/dist/soroban/utils/event-monitor.js.map +1 -0
- package/dist/soroban/utils/function-signature-builder.d.ts +98 -0
- package/dist/soroban/utils/function-signature-builder.d.ts.map +1 -0
- package/dist/soroban/utils/function-signature-builder.js +272 -0
- package/dist/soroban/utils/function-signature-builder.js.map +1 -0
- package/dist/soroban/utils/scval-converter.d.ts +48 -0
- package/dist/soroban/utils/scval-converter.d.ts.map +1 -0
- package/dist/soroban/utils/scval-converter.js +320 -0
- package/dist/soroban/utils/scval-converter.js.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-account-builder.d.ts +58 -0
- package/dist/sponsored-reserves/builders/sponsored-account-builder.d.ts.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-account-builder.js +159 -0
- package/dist/sponsored-reserves/builders/sponsored-account-builder.js.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-claimable-balance-builder.d.ts +104 -0
- package/dist/sponsored-reserves/builders/sponsored-claimable-balance-builder.d.ts.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-claimable-balance-builder.js +258 -0
- package/dist/sponsored-reserves/builders/sponsored-claimable-balance-builder.js.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-data-entry-builder.d.ts +96 -0
- package/dist/sponsored-reserves/builders/sponsored-data-entry-builder.d.ts.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-data-entry-builder.js +320 -0
- package/dist/sponsored-reserves/builders/sponsored-data-entry-builder.js.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-signer-builder.d.ts +100 -0
- package/dist/sponsored-reserves/builders/sponsored-signer-builder.d.ts.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-signer-builder.js +271 -0
- package/dist/sponsored-reserves/builders/sponsored-signer-builder.js.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-trustline-builder.d.ts +87 -0
- package/dist/sponsored-reserves/builders/sponsored-trustline-builder.d.ts.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-trustline-builder.js +281 -0
- package/dist/sponsored-reserves/builders/sponsored-trustline-builder.js.map +1 -0
- package/dist/sponsored-reserves/index.d.ts +20 -0
- package/dist/sponsored-reserves/index.d.ts.map +1 -0
- package/dist/sponsored-reserves/index.js +24 -0
- package/dist/sponsored-reserves/index.js.map +1 -0
- package/dist/sponsored-reserves/services/sponsored-reserves-manager.d.ts +144 -0
- package/dist/sponsored-reserves/services/sponsored-reserves-manager.d.ts.map +1 -0
- package/dist/sponsored-reserves/services/sponsored-reserves-manager.js +536 -0
- package/dist/sponsored-reserves/services/sponsored-reserves-manager.js.map +1 -0
- package/dist/sponsored-reserves/templates/claimable-balance-template.d.ts +96 -0
- package/dist/sponsored-reserves/templates/claimable-balance-template.d.ts.map +1 -0
- package/dist/sponsored-reserves/templates/claimable-balance-template.js +306 -0
- package/dist/sponsored-reserves/templates/claimable-balance-template.js.map +1 -0
- package/dist/sponsored-reserves/templates/multi-operation-template.d.ts +99 -0
- package/dist/sponsored-reserves/templates/multi-operation-template.d.ts.map +1 -0
- package/dist/sponsored-reserves/templates/multi-operation-template.js +313 -0
- package/dist/sponsored-reserves/templates/multi-operation-template.js.map +1 -0
- package/dist/sponsored-reserves/templates/user-onboarding-template.d.ts +79 -0
- package/dist/sponsored-reserves/templates/user-onboarding-template.d.ts.map +1 -0
- package/dist/sponsored-reserves/templates/user-onboarding-template.js +262 -0
- package/dist/sponsored-reserves/templates/user-onboarding-template.js.map +1 -0
- package/dist/sponsored-reserves/types/sponsored-reserves-types.d.ts +364 -0
- package/dist/sponsored-reserves/types/sponsored-reserves-types.d.ts.map +1 -0
- package/dist/sponsored-reserves/types/sponsored-reserves-types.js +9 -0
- package/dist/sponsored-reserves/types/sponsored-reserves-types.js.map +1 -0
- package/dist/sponsored-reserves/utils/cost-calculator.d.ts +98 -0
- package/dist/sponsored-reserves/utils/cost-calculator.d.ts.map +1 -0
- package/dist/sponsored-reserves/utils/cost-calculator.js +238 -0
- package/dist/sponsored-reserves/utils/cost-calculator.js.map +1 -0
- package/dist/sponsored-reserves/utils/sponsorship-validation.d.ts +112 -0
- package/dist/sponsored-reserves/utils/sponsorship-validation.d.ts.map +1 -0
- package/dist/sponsored-reserves/utils/sponsorship-validation.js +394 -0
- package/dist/sponsored-reserves/utils/sponsorship-validation.js.map +1 -0
- package/dist/types/stellar-sdk-compat.d.ts +25 -0
- package/dist/types/stellar-sdk-compat.d.ts.map +1 -0
- package/dist/types/stellar-sdk-compat.js +44 -0
- package/dist/types/stellar-sdk-compat.js.map +1 -0
- package/dist/types/stellar-types.d.ts +160 -0
- package/dist/types/stellar-types.d.ts.map +1 -0
- package/dist/types/stellar-types.js +9 -0
- package/dist/types/stellar-types.js.map +1 -0
- package/dist/utils/encryption.utils.d.ts +9 -0
- package/dist/utils/encryption.utils.d.ts.map +1 -0
- package/dist/utils/encryption.utils.js +44 -0
- package/dist/utils/encryption.utils.js.map +1 -0
- package/dist/utils/network-utils.d.ts +138 -0
- package/dist/utils/network-utils.d.ts.map +1 -0
- package/dist/utils/network-utils.js +240 -0
- package/dist/utils/network-utils.js.map +1 -0
- package/dist/utils/stellar-utils.d.ts +114 -0
- package/dist/utils/stellar-utils.d.ts.map +1 -0
- package/dist/utils/stellar-utils.js +186 -0
- package/dist/utils/stellar-utils.js.map +1 -0
- package/dist/utils/supabase-client.d.ts +2 -0
- package/dist/utils/supabase-client.d.ts.map +1 -0
- package/dist/utils/supabase-client.js +9 -0
- package/dist/utils/supabase-client.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Error Parser
|
|
4
|
+
* @description Parse and handle Soroban contract errors
|
|
5
|
+
* @author Galaxy DevKit Team
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
* @since 2024-12-01
|
|
8
|
+
*/
|
|
9
|
+
import { xdr } from '@stellar/stellar-sdk';
|
|
10
|
+
export class SorobanError extends Error {
|
|
11
|
+
constructor(message, code = 0, type = 'Unknown') {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = 'SorobanError';
|
|
14
|
+
this.code = code;
|
|
15
|
+
this.type = type;
|
|
16
|
+
}
|
|
17
|
+
static withContext(message, code, type, context) {
|
|
18
|
+
const error = new SorobanError(message, code, type);
|
|
19
|
+
if (context) {
|
|
20
|
+
Object.defineProperty(error, 'contractId', {
|
|
21
|
+
value: context.contractId,
|
|
22
|
+
writable: true,
|
|
23
|
+
configurable: true,
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(error, 'method', {
|
|
26
|
+
value: context.method,
|
|
27
|
+
writable: true,
|
|
28
|
+
configurable: true,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return error;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export class ErrorParser {
|
|
35
|
+
/**
|
|
36
|
+
* Parse Soroban error from result
|
|
37
|
+
*/
|
|
38
|
+
static parseError(result) {
|
|
39
|
+
if (!result) {
|
|
40
|
+
return new SorobanError('Unknown error occurred', -1, 'Unknown');
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
// Try to parse as error struct
|
|
44
|
+
const errorValue = this.extractErrorValue(result);
|
|
45
|
+
if (errorValue instanceof Map) {
|
|
46
|
+
return this.parseErrorStruct(errorValue);
|
|
47
|
+
}
|
|
48
|
+
// Try to parse as error code
|
|
49
|
+
if (typeof errorValue === 'number') {
|
|
50
|
+
return this.parseErrorCode(errorValue);
|
|
51
|
+
}
|
|
52
|
+
// Try to parse as error string
|
|
53
|
+
if (typeof errorValue === 'string') {
|
|
54
|
+
return new SorobanError(errorValue, 0, 'Custom');
|
|
55
|
+
}
|
|
56
|
+
return new SorobanError(`Unrecognized error format: ${errorValue}`, -1, 'InvalidFormat');
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return new SorobanError(`Failed to parse error: ${error.message}`, -2, 'ParseError');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Parse transaction error
|
|
64
|
+
*/
|
|
65
|
+
static parseTransactionError(resultXdr, metaXdr) {
|
|
66
|
+
try {
|
|
67
|
+
if (resultXdr) {
|
|
68
|
+
const result = xdr.TransactionResult.fromXDR(resultXdr, 'base64');
|
|
69
|
+
if (result.result().switch() === xdr.TransactionResultCode.txFailed()) {
|
|
70
|
+
const operations = result.result().results() || [];
|
|
71
|
+
for (const op of operations) {
|
|
72
|
+
if (op.tr()?.switch() ===
|
|
73
|
+
xdr.TransactionResultResultCode.txInternalError()) {
|
|
74
|
+
return this.parseError(op.tr().value());
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Parse meta for additional error information
|
|
80
|
+
if (metaXdr) {
|
|
81
|
+
const meta = xdr.TransactionMeta.fromXDR(metaXdr, 'base64');
|
|
82
|
+
return this.parseMetaError(meta);
|
|
83
|
+
}
|
|
84
|
+
return new SorobanError('Transaction failed but no specific error found', -1, 'TransactionFailed');
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
return new SorobanError(`Failed to parse transaction error: ${error.message}`, -2, 'ParseError');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Parse simulation error
|
|
92
|
+
*/
|
|
93
|
+
static parseSimulationError(error, result) {
|
|
94
|
+
if (error) {
|
|
95
|
+
// Try to extract error details from error string
|
|
96
|
+
if (error.includes('insufficient fee')) {
|
|
97
|
+
return new SorobanError('Insufficient fee for transaction', 4001, 'InsufficientFee');
|
|
98
|
+
}
|
|
99
|
+
if (error.includes('insufficient balance')) {
|
|
100
|
+
return new SorobanError('Insufficient balance', 4002, 'InsufficientBalance');
|
|
101
|
+
}
|
|
102
|
+
if (error.includes('contract not found')) {
|
|
103
|
+
return new SorobanError('Contract not found', 4003, 'ContractNotFound');
|
|
104
|
+
}
|
|
105
|
+
if (error.includes('method not found')) {
|
|
106
|
+
return new SorobanError('Method not found', 4004, 'MethodNotFound');
|
|
107
|
+
}
|
|
108
|
+
if (error.includes('invalid argument')) {
|
|
109
|
+
return new SorobanError('Invalid argument', 4005, 'InvalidArgument');
|
|
110
|
+
}
|
|
111
|
+
return new SorobanError(error, 4000, 'SimulationError');
|
|
112
|
+
}
|
|
113
|
+
if (result) {
|
|
114
|
+
return this.parseError(result);
|
|
115
|
+
}
|
|
116
|
+
return new SorobanError('Simulation failed', 4000, 'SimulationError');
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Parse common error codes
|
|
120
|
+
*/
|
|
121
|
+
static parseErrorCode(code) {
|
|
122
|
+
switch (code) {
|
|
123
|
+
case 1:
|
|
124
|
+
return new SorobanError('Contract panicked', 1, 'ContractPanic');
|
|
125
|
+
case 2:
|
|
126
|
+
return new SorobanError('Arithmetic overflow', 2, 'ArithmeticOverflow');
|
|
127
|
+
case 3:
|
|
128
|
+
return new SorobanError('Division by zero', 3, 'DivisionByZero');
|
|
129
|
+
case 4:
|
|
130
|
+
return new SorobanError('Invalid arithmetic', 4, 'InvalidArithmetic');
|
|
131
|
+
case 5:
|
|
132
|
+
return new SorobanError('Invalid input', 5, 'InvalidInput');
|
|
133
|
+
case 6:
|
|
134
|
+
return new SorobanError('Index out of bounds', 6, 'IndexOutOfBounds');
|
|
135
|
+
case 7:
|
|
136
|
+
return new SorobanError('Memory access violation', 7, 'MemoryAccessViolation');
|
|
137
|
+
case 8:
|
|
138
|
+
return new SorobanError('Invalid conversion', 8, 'InvalidConversion');
|
|
139
|
+
case 9:
|
|
140
|
+
return new SorobanError('Missing value in optional', 9, 'MissingValue');
|
|
141
|
+
case 10:
|
|
142
|
+
return new SorobanError('Expected error in result', 10, 'ExpectedError');
|
|
143
|
+
case 11:
|
|
144
|
+
return new SorobanError('Host context error', 11, 'HostContextError');
|
|
145
|
+
default:
|
|
146
|
+
return new SorobanError(`Unknown error code: ${code}`, code, 'UnknownCode');
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Parse error struct from Map
|
|
151
|
+
*/
|
|
152
|
+
static parseErrorStruct(errorMap) {
|
|
153
|
+
const code = errorMap.get('code');
|
|
154
|
+
const message = errorMap.get('message');
|
|
155
|
+
const type = errorMap.get('type');
|
|
156
|
+
if (typeof code === 'number') {
|
|
157
|
+
return new SorobanError(typeof message === 'string' ? message : 'Contract error', code, typeof type === 'string' ? type : 'ContractError');
|
|
158
|
+
}
|
|
159
|
+
return new SorobanError(typeof message === 'string' ? message : 'Unknown contract error', 0, typeof type === 'string' ? type : 'ContractError');
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Extract error value from ScVal
|
|
163
|
+
*/
|
|
164
|
+
static extractErrorValue(result) {
|
|
165
|
+
switch (result.switch()) {
|
|
166
|
+
case xdr.ScValType.scvError():
|
|
167
|
+
// Error is encoded as a ScVal containing error information
|
|
168
|
+
return result.error();
|
|
169
|
+
case xdr.ScValType.scvU32():
|
|
170
|
+
return result.u32();
|
|
171
|
+
case xdr.ScValType.scvI32():
|
|
172
|
+
return result.i32();
|
|
173
|
+
case xdr.ScValType.scvString():
|
|
174
|
+
return result.str().toString();
|
|
175
|
+
case xdr.ScValType.scvSymbol():
|
|
176
|
+
return result.symbol().toString();
|
|
177
|
+
case xdr.ScValType.scvMap():
|
|
178
|
+
const map = new Map();
|
|
179
|
+
for (const entry of result.map()) {
|
|
180
|
+
const key = this.extractScValValue(entry.key());
|
|
181
|
+
const value = this.extractScValValue(entry.val());
|
|
182
|
+
map.set(key, value);
|
|
183
|
+
}
|
|
184
|
+
return map;
|
|
185
|
+
default:
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Extract primitive value from ScVal
|
|
191
|
+
*/
|
|
192
|
+
static extractScValValue(scVal) {
|
|
193
|
+
switch (scVal.switch()) {
|
|
194
|
+
case xdr.ScValType.scvVoid():
|
|
195
|
+
return null;
|
|
196
|
+
case xdr.ScValType.scvBool():
|
|
197
|
+
return scVal.bool();
|
|
198
|
+
case xdr.ScValType.scvU32():
|
|
199
|
+
return scVal.u32();
|
|
200
|
+
case xdr.ScValType.scvI32():
|
|
201
|
+
return scVal.i32();
|
|
202
|
+
case xdr.ScValType.scvString():
|
|
203
|
+
return scVal.str().toString();
|
|
204
|
+
case xdr.ScValType.scvSymbol():
|
|
205
|
+
return scVal.symbol().toString();
|
|
206
|
+
default:
|
|
207
|
+
return scVal;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Parse error from transaction meta
|
|
212
|
+
*/
|
|
213
|
+
static parseMetaError(meta) {
|
|
214
|
+
const v3 = meta.v3();
|
|
215
|
+
if (!v3) {
|
|
216
|
+
return new SorobanError('Transaction meta version not supported', -1, 'UnsupportedVersion');
|
|
217
|
+
}
|
|
218
|
+
const sorobanMeta = v3.sorobanMeta();
|
|
219
|
+
if (!sorobanMeta) {
|
|
220
|
+
return new SorobanError('No Soroban meta found', -1, 'MissingSorobanMeta');
|
|
221
|
+
}
|
|
222
|
+
// Check for diagnostic events that might contain error information
|
|
223
|
+
for (const event of sorobanMeta.events()) {
|
|
224
|
+
if (event.type().equals(xdr.ContractEventType.contractError())) {
|
|
225
|
+
return this.parseError(event.data());
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Check for exceptions
|
|
229
|
+
const ext = v3.ext();
|
|
230
|
+
if (ext.switch() === xdr.TransactionMetaExtension.v1()) {
|
|
231
|
+
const v1Ext = ext.v1();
|
|
232
|
+
if (v1Ext.sorobanMeta()) {
|
|
233
|
+
// Additional error parsing logic could go here
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return new SorobanError('Transaction failed but specific error not found', -1, 'TransactionError');
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Check if error is recoverable
|
|
240
|
+
*/
|
|
241
|
+
static isRecoverableError(error) {
|
|
242
|
+
const recoverableTypes = [
|
|
243
|
+
'InsufficientFee',
|
|
244
|
+
'InsufficientBalance',
|
|
245
|
+
'NetworkError',
|
|
246
|
+
'Timeout',
|
|
247
|
+
];
|
|
248
|
+
return recoverableTypes.includes(error.type);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Check if error should be retried
|
|
252
|
+
*/
|
|
253
|
+
static shouldRetry(error, attemptCount) {
|
|
254
|
+
if (!this.isRecoverableError(error)) {
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
// Don't retry too many times
|
|
258
|
+
if (attemptCount >= 3) {
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
// Don't retry certain errors even if they're recoverable
|
|
262
|
+
const nonRetryableTypes = ['InsufficientBalance', 'ContractNotFound'];
|
|
263
|
+
return !nonRetryableTypes.includes(error.type);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Get retry delay for error
|
|
267
|
+
*/
|
|
268
|
+
static getRetryDelay(error, attemptCount) {
|
|
269
|
+
// Base delay with exponential backoff
|
|
270
|
+
let baseDelay = 1000; // 1 second
|
|
271
|
+
switch (error.type) {
|
|
272
|
+
case 'InsufficientFee':
|
|
273
|
+
baseDelay = 2000; // 2 seconds
|
|
274
|
+
break;
|
|
275
|
+
case 'NetworkError':
|
|
276
|
+
baseDelay = 5000; // 5 seconds
|
|
277
|
+
break;
|
|
278
|
+
case 'Timeout':
|
|
279
|
+
baseDelay = 3000; // 3 seconds
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
return baseDelay * Math.pow(2, attemptCount - 1);
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Format error for display
|
|
286
|
+
*/
|
|
287
|
+
static formatError(error) {
|
|
288
|
+
let message = error.message;
|
|
289
|
+
if (error.contractId) {
|
|
290
|
+
message += ` (Contract: ${error.contractId})`;
|
|
291
|
+
}
|
|
292
|
+
if (error.method) {
|
|
293
|
+
message += ` (Method: ${error.method})`;
|
|
294
|
+
}
|
|
295
|
+
if (error.code !== 0) {
|
|
296
|
+
message += ` (Code: ${error.code})`;
|
|
297
|
+
}
|
|
298
|
+
message += ` (Type: ${error.type})`;
|
|
299
|
+
return message;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=error-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-parser.js","sourceRoot":"","sources":["../../../src/soroban/utils/error-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { ContractEvent, ScType } from '../types/contract-types';
|
|
2
|
+
import { ContractEventDetail } from '../types/contract-types';
|
|
3
|
+
export declare class EventDecoder {
|
|
4
|
+
/**
|
|
5
|
+
* Decode contract event from raw event data
|
|
6
|
+
*/
|
|
7
|
+
static decodeEvent(rawEvent: SorobanRpc.Api.GetEventsResponseEvent, eventDefinition?: ContractEvent): ContractEventDetail;
|
|
8
|
+
/**
|
|
9
|
+
* Decode event with known event schema
|
|
10
|
+
*/
|
|
11
|
+
static decodeEventWithSchema(rawEvent: SorobanRpc.Api.GetEventsResponseEvent, schema: {
|
|
12
|
+
name: string;
|
|
13
|
+
topicTypes: ScType[];
|
|
14
|
+
dataTypes: ScType[];
|
|
15
|
+
}): ContractEventDetail & {
|
|
16
|
+
decodedTopics: any[];
|
|
17
|
+
decodedData: any;
|
|
18
|
+
parsedEvent: any;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Decode token transfer event
|
|
22
|
+
*/
|
|
23
|
+
static decodeTransferEvent(event: ContractEventDetail): {
|
|
24
|
+
from: string;
|
|
25
|
+
to: string;
|
|
26
|
+
amount: string;
|
|
27
|
+
} | null;
|
|
28
|
+
/**
|
|
29
|
+
* Decode token approval event
|
|
30
|
+
*/
|
|
31
|
+
static decodeApprovalEvent(event: ContractEventDetail): {
|
|
32
|
+
owner: string;
|
|
33
|
+
spender: string;
|
|
34
|
+
amount: string;
|
|
35
|
+
} | null;
|
|
36
|
+
/**
|
|
37
|
+
* Decode contract error event
|
|
38
|
+
*/
|
|
39
|
+
static decodeErrorEvent(event: ContractEventDetail): {
|
|
40
|
+
error: string;
|
|
41
|
+
code?: number;
|
|
42
|
+
context?: any;
|
|
43
|
+
} | null;
|
|
44
|
+
/**
|
|
45
|
+
* Decode custom event
|
|
46
|
+
*/
|
|
47
|
+
static decodeCustomEvent(event: ContractEventDetail, fieldMapping: Record<string, {
|
|
48
|
+
topic: number;
|
|
49
|
+
type: ScType;
|
|
50
|
+
} | {
|
|
51
|
+
data: string;
|
|
52
|
+
type: ScType;
|
|
53
|
+
}>): Record<string, any>;
|
|
54
|
+
/**
|
|
55
|
+
* Create event decoder for specific contract
|
|
56
|
+
*/
|
|
57
|
+
static createEventDecoder(eventSchemas: Array<{
|
|
58
|
+
name: string;
|
|
59
|
+
topicTypes: ScType[];
|
|
60
|
+
dataTypes: ScType[];
|
|
61
|
+
}>): (event: ContractEventDetail) => any;
|
|
62
|
+
/**
|
|
63
|
+
* Filter events by type
|
|
64
|
+
*/
|
|
65
|
+
static filterEventsByType(events: ContractEventDetail[], eventType: string): ContractEventDetail[];
|
|
66
|
+
/**
|
|
67
|
+
* Group events by transaction
|
|
68
|
+
*/
|
|
69
|
+
static groupEventsByTransaction(events: ContractEventDetail[]): Map<string, ContractEventDetail[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Extract event statistics
|
|
72
|
+
*/
|
|
73
|
+
static extractEventStats(events: ContractEventDetail[]): {
|
|
74
|
+
totalEvents: number;
|
|
75
|
+
eventTypes: Map<string, number>;
|
|
76
|
+
contracts: Map<string, number>;
|
|
77
|
+
timeRange: {
|
|
78
|
+
min: number;
|
|
79
|
+
max: number;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Format event for display
|
|
84
|
+
*/
|
|
85
|
+
static formatEvent(event: ContractEventDetail): string;
|
|
86
|
+
/**
|
|
87
|
+
* Export events to CSV
|
|
88
|
+
*/
|
|
89
|
+
static exportToCSV(events: ContractEventDetail[]): string;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=event-decoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-decoder.d.ts","sourceRoot":"","sources":["../../../src/soroban/utils/event-decoder.ts"],"names":[],"mappings":"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"}
|