@pushchain/core 5.1.5-alpha.0 → 5.1.5
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/CHANGELOG.md +19 -0
- package/package.json +1 -1
- package/src/lib/constants/abi/index.d.ts +2 -0
- package/src/lib/constants/abi/index.js +6 -1
- package/src/lib/constants/abi/uniswap-v3-router.evm.d.ts +58 -0
- package/src/lib/constants/abi/uniswap-v3-router.evm.js +41 -0
- package/src/lib/constants/abi/wpc.evm.d.ts +24 -0
- package/src/lib/constants/abi/wpc.evm.js +27 -0
- package/src/lib/constants/chain.d.ts +1 -0
- package/src/lib/constants/chain.js +8 -6
- package/src/lib/constants/tokens.js +3 -3
- package/src/lib/generated/uexecutor/v2/types.d.ts +14 -0
- package/src/lib/generated/uexecutor/v2/types.js +96 -3
- package/src/lib/orchestrator/internals/cascade.d.ts +1 -1
- package/src/lib/orchestrator/internals/cascade.js +556 -225
- package/src/lib/orchestrator/internals/confirmation.js +60 -15
- package/src/lib/orchestrator/internals/context.d.ts +23 -0
- package/src/lib/orchestrator/internals/context.js +54 -0
- package/src/lib/orchestrator/internals/execute-funds-only.js +47 -21
- package/src/lib/orchestrator/internals/execute-funds-payload.js +53 -31
- package/src/lib/orchestrator/internals/execute-standard.js +137 -26
- package/src/lib/orchestrator/internals/gas-calculator.d.ts +5 -2
- package/src/lib/orchestrator/internals/gas-calculator.js +59 -11
- package/src/lib/orchestrator/internals/gas-usd-sizer.d.ts +53 -0
- package/src/lib/orchestrator/internals/gas-usd-sizer.js +165 -0
- package/src/lib/orchestrator/internals/helpers.js +2 -0
- package/src/lib/orchestrator/internals/inbound-tracker.d.ts +83 -0
- package/src/lib/orchestrator/internals/inbound-tracker.js +322 -0
- package/src/lib/orchestrator/internals/index.d.ts +3 -1
- package/src/lib/orchestrator/internals/index.js +8 -2
- package/src/lib/orchestrator/internals/outbound-sync.d.ts +32 -1
- package/src/lib/orchestrator/internals/outbound-sync.js +154 -17
- package/src/lib/orchestrator/internals/pc-usd-oracle.d.ts +28 -0
- package/src/lib/orchestrator/internals/pc-usd-oracle.js +285 -0
- package/src/lib/orchestrator/internals/progress-route-hooks.d.ts +23 -0
- package/src/lib/orchestrator/internals/progress-route-hooks.js +72 -0
- package/src/lib/orchestrator/internals/push-chain-tx.d.ts +27 -1
- package/src/lib/orchestrator/internals/push-chain-tx.js +111 -15
- package/src/lib/orchestrator/internals/rescue.js +1 -1
- package/src/lib/orchestrator/internals/response-builder.d.ts +5 -0
- package/src/lib/orchestrator/internals/response-builder.js +252 -53
- package/src/lib/orchestrator/internals/route-handlers.js +480 -206
- package/src/lib/orchestrator/internals/tx-transformer.js +293 -35
- package/src/lib/orchestrator/orchestrator.d.ts +7 -1
- package/src/lib/orchestrator/orchestrator.js +108 -56
- package/src/lib/orchestrator/orchestrator.types.d.ts +120 -5
- package/src/lib/orchestrator/payload-builders.d.ts +16 -0
- package/src/lib/orchestrator/payload-builders.js +6 -5
- package/src/lib/orchestrator/route-detector.js +20 -8
- package/src/lib/orchestrator/svm-idl/normalize-address.d.ts +19 -0
- package/src/lib/orchestrator/svm-idl/normalize-address.js +56 -0
- package/src/lib/orchestrator/svm-idl/registry.d.ts +13 -4
- package/src/lib/orchestrator/svm-idl/registry.js +15 -14
- package/src/lib/orchestrator/svm-idl/resolve.js +5 -2
- package/src/lib/progress-hook/progress-hook.d.ts +28 -0
- package/src/lib/progress-hook/progress-hook.js +555 -101
- package/src/lib/progress-hook/progress-hook.types.d.ts +76 -24
- package/src/lib/progress-hook/progress-hook.types.js +74 -29
- package/src/lib/push-client/push-client.d.ts +7 -0
- package/src/lib/push-client/push-client.js +18 -1
- package/src/lib/universal-tx-detector/__tests__/fixtures/builders.d.ts +32 -0
- package/src/lib/universal-tx-detector/__tests__/fixtures/builders.js +65 -0
- package/src/lib/universal-tx-detector/__tests__/fixtures/scenarios.d.ts +72 -0
- package/src/lib/universal-tx-detector/__tests__/fixtures/scenarios.js +669 -0
- package/src/lib/universal-tx-detector/auto-detect.d.ts +37 -0
- package/src/lib/universal-tx-detector/auto-detect.js +112 -0
- package/src/lib/universal-tx-detector/cascade.d.ts +64 -0
- package/src/lib/universal-tx-detector/cascade.js +254 -0
- package/src/lib/universal-tx-detector/child-inbounds.d.ts +58 -0
- package/src/lib/universal-tx-detector/child-inbounds.js +145 -0
- package/src/lib/universal-tx-detector/classify.d.ts +33 -0
- package/src/lib/universal-tx-detector/classify.js +228 -0
- package/src/lib/universal-tx-detector/detector-svm.d.ts +46 -0
- package/src/lib/universal-tx-detector/detector-svm.js +324 -0
- package/src/lib/universal-tx-detector/detector.d.ts +13 -0
- package/src/lib/universal-tx-detector/detector.js +233 -0
- package/src/lib/universal-tx-detector/events.d.ts +765 -0
- package/src/lib/universal-tx-detector/events.js +241 -0
- package/src/lib/universal-tx-detector/index.d.ts +18 -0
- package/src/lib/universal-tx-detector/index.js +36 -0
- package/src/lib/universal-tx-detector/svm-events.d.ts +41 -0
- package/src/lib/universal-tx-detector/svm-events.js +68 -0
- package/src/lib/universal-tx-detector/types.d.ts +100 -0
- package/src/lib/universal-tx-detector/types.js +3 -0
- package/src/lib/utils.d.ts +30 -13
- package/src/lib/utils.js +47 -21
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.classifyDeclineError = classifyDeclineError;
|
|
3
4
|
const utils_1 = require("../utils");
|
|
4
5
|
const progress_hook_types_1 = require("./progress-hook.types");
|
|
5
6
|
// Helper to wrap a hook function with timestamp
|
|
@@ -7,172 +8,576 @@ const withTimestamp = (fn) => {
|
|
|
7
8
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
9
|
return (...args) => (Object.assign(Object.assign({}, fn(...args)), { timestamp: new Date().toISOString() }));
|
|
9
10
|
};
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
const friendlyChain = (chainOrNs) => {
|
|
12
|
+
var _a;
|
|
13
|
+
if (!chainOrNs)
|
|
14
|
+
return 'chain';
|
|
15
|
+
const asString = String(chainOrNs);
|
|
16
|
+
return (_a = utils_1.Utils.chains.getChainName(asString)) !== null && _a !== void 0 ? _a : asString;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Classify a sign-time error as either a true wallet user-decline
|
|
20
|
+
* (viem `UserRejectedRequestError`, ethers `ACTION_REJECTED`, EIP-1193 4001,
|
|
21
|
+
* or textual "user rejected"/"user denied"/"declined by user") or a generic
|
|
22
|
+
* signature failure (insufficient funds, RPC failure, contract revert
|
|
23
|
+
* during sign, etc.). Shared by SEND_TX_104_04 (R1), SEND_TX_204_04 (R2),
|
|
24
|
+
* and SEND_TX_304_04 (R3) so the heuristic lives in one place.
|
|
25
|
+
*
|
|
26
|
+
* When `errorMessage` is omitted, treat it as a decline — the spec copy is
|
|
27
|
+
* already the decline copy ("Verification declined by user"), so flipping
|
|
28
|
+
* to "Signature Failed" would make the event self-contradict.
|
|
29
|
+
*/
|
|
30
|
+
function classifyDeclineError(errorMessage) {
|
|
31
|
+
const msg = errorMessage !== null && errorMessage !== void 0 ? errorMessage : 'Verification declined by user';
|
|
32
|
+
const isUserDecline = errorMessage === undefined ||
|
|
33
|
+
/user\s*reject/i.test(msg) ||
|
|
34
|
+
/user\s*denied/i.test(msg) ||
|
|
35
|
+
/rejected\s*the\s*request/i.test(msg) ||
|
|
36
|
+
/UserRejectedRequestError/i.test(msg) ||
|
|
37
|
+
/ACTION_REJECTED/i.test(msg) ||
|
|
38
|
+
/declined\s*by\s*user/i.test(msg) ||
|
|
39
|
+
/\b4001\b/.test(msg);
|
|
40
|
+
return {
|
|
41
|
+
isUserDecline,
|
|
42
|
+
title: isUserDecline ? 'Verification Declined' : 'Signature Failed',
|
|
43
|
+
message: isUserDecline ? 'Verification declined by user' : msg,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// =============================================================================
|
|
47
|
+
// Route 1 — UOA → Push Chain (101–199)
|
|
48
|
+
// =============================================================================
|
|
49
|
+
const RAW_HOOKS_R1 = {
|
|
50
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_101]: (originChainNamespace, originChainAddress) => ({
|
|
51
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_101,
|
|
52
|
+
title: 'Origin Chain Detected',
|
|
53
|
+
message: `Origin chain: ${friendlyChain(originChainNamespace)} — Address: ${originChainAddress}`,
|
|
54
|
+
response: { chain: originChainNamespace, address: originChainAddress },
|
|
55
|
+
level: 'INFO',
|
|
56
|
+
}),
|
|
57
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_102_01]: () => ({
|
|
58
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_102_01,
|
|
23
59
|
title: 'Estimating Gas',
|
|
24
60
|
message: 'Estimating and fetching gas limit, gas price for TX',
|
|
25
|
-
response:
|
|
61
|
+
response: { stage: 'estimating-gas' },
|
|
26
62
|
level: 'INFO',
|
|
27
63
|
}),
|
|
28
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
29
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
64
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_102_02]: (executionCost) => ({
|
|
65
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_102_02,
|
|
30
66
|
title: 'Gas Estimated',
|
|
31
|
-
message: `Total execution cost
|
|
32
|
-
response:
|
|
67
|
+
message: `Total execution cost: ${executionCost} UPC`,
|
|
68
|
+
response: { totalCost: executionCost, currency: 'UPC' },
|
|
33
69
|
level: 'SUCCESS',
|
|
34
70
|
}),
|
|
35
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
36
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
37
|
-
title: 'Resolving
|
|
38
|
-
message: 'Resolving
|
|
39
|
-
response:
|
|
71
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_103_01]: () => ({
|
|
72
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_103_01,
|
|
73
|
+
title: 'Resolving Universal Execution Account',
|
|
74
|
+
message: 'Resolving UEA – computing address, checking deployment and balance',
|
|
75
|
+
response: { stage: 'resolving-uea' },
|
|
40
76
|
level: 'INFO',
|
|
41
77
|
}),
|
|
42
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
43
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
44
|
-
title: '
|
|
78
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_103_02]: (ueaAddress, deployed) => ({
|
|
79
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_103_02,
|
|
80
|
+
title: 'Universal Execution Account Resolved',
|
|
45
81
|
message: `UEA: ${ueaAddress}, Deployed: ${deployed}`,
|
|
46
|
-
response:
|
|
82
|
+
response: { uea: ueaAddress, deployed },
|
|
47
83
|
level: 'SUCCESS',
|
|
48
84
|
}),
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_04_01,
|
|
85
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_104_01]: () => ({
|
|
86
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_104_01,
|
|
52
87
|
title: 'Awaiting Transaction',
|
|
53
88
|
message: 'Awaiting user transaction on origin chain',
|
|
54
|
-
response:
|
|
89
|
+
response: { stage: 'awaiting-transaction' },
|
|
55
90
|
level: 'INFO',
|
|
56
91
|
}),
|
|
57
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
58
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
92
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_104_02]: () => ({
|
|
93
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_104_02,
|
|
59
94
|
title: 'Awaiting Signature',
|
|
60
95
|
message: 'Awaiting user signature for universal payload',
|
|
61
|
-
response:
|
|
96
|
+
response: { stage: 'awaiting-signature' },
|
|
62
97
|
level: 'INFO',
|
|
63
98
|
}),
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_04_03,
|
|
99
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_104_03]: () => ({
|
|
100
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_104_03,
|
|
67
101
|
title: 'Verification Success',
|
|
68
102
|
message: 'Verification completed via Transaction or Signature',
|
|
69
|
-
response:
|
|
103
|
+
response: { stage: 'verified' },
|
|
70
104
|
level: 'SUCCESS',
|
|
71
105
|
}),
|
|
72
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
106
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_104_04]: (errorMessage) => {
|
|
107
|
+
const { isUserDecline, title, message } = classifyDeclineError(errorMessage);
|
|
108
|
+
const response = {
|
|
109
|
+
error: errorMessage !== null && errorMessage !== void 0 ? errorMessage : 'Verification declined by user',
|
|
110
|
+
isUserDecline,
|
|
111
|
+
};
|
|
112
|
+
return {
|
|
113
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_104_04,
|
|
114
|
+
title,
|
|
115
|
+
message,
|
|
116
|
+
response,
|
|
117
|
+
level: 'ERROR',
|
|
118
|
+
};
|
|
119
|
+
},
|
|
120
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_105_01]: (originChainTxHash, originChainTx) => ({
|
|
121
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_105_01,
|
|
82
122
|
title: 'Gas Funding In Progress',
|
|
83
123
|
message: `Gas funding tx sent: ${originChainTxHash}`,
|
|
84
|
-
|
|
85
|
-
response: originChainTx !== null && originChainTx !== void 0 ? originChainTx : null,
|
|
124
|
+
response: { txHash: originChainTxHash, originChainTx: originChainTx !== null && originChainTx !== void 0 ? originChainTx : null },
|
|
86
125
|
level: 'INFO',
|
|
87
126
|
}),
|
|
88
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
89
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
127
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_105_02]: (txHash) => ({
|
|
128
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_105_02,
|
|
90
129
|
title: 'Gas Funding Confirmed',
|
|
91
130
|
message: 'Gas funding confirmed on origin chain',
|
|
92
|
-
response: null,
|
|
131
|
+
response: { stage: 'gas-funded', txHash: txHash !== null && txHash !== void 0 ? txHash : null },
|
|
93
132
|
level: 'SUCCESS',
|
|
94
133
|
}),
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_06_01,
|
|
134
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_01]: (amount, decimals, symbol) => ({
|
|
135
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_01,
|
|
98
136
|
title: 'Preparing Funds Transfer',
|
|
99
137
|
message: `Preparing to move ${utils_1.Utils.helpers.formatUnits(amount, decimals)} ${symbol} from origin chain`,
|
|
100
|
-
response:
|
|
138
|
+
response: { amount, symbol },
|
|
101
139
|
level: 'INFO',
|
|
102
140
|
}),
|
|
103
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
104
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
141
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_02]: (txHash, amount, decimals, symbol, originChainTx) => ({
|
|
142
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_02,
|
|
105
143
|
title: 'Funds Lock Submitted',
|
|
106
|
-
message: `Locking ${utils_1.Utils.helpers.formatUnits(amount, decimals)} ${symbol}
|
|
107
|
-
|
|
108
|
-
|
|
144
|
+
message: `Locking ${utils_1.Utils.helpers.formatUnits(amount, decimals)} ${symbol} — Tx: ${txHash}`,
|
|
145
|
+
response: {
|
|
146
|
+
txHash,
|
|
147
|
+
amount,
|
|
148
|
+
symbol,
|
|
149
|
+
originChainTx: originChainTx !== null && originChainTx !== void 0 ? originChainTx : null,
|
|
150
|
+
},
|
|
109
151
|
level: 'INFO',
|
|
110
152
|
}),
|
|
111
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
112
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
153
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_03]: (required) => ({
|
|
154
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_03,
|
|
113
155
|
title: 'Awaiting Confirmations',
|
|
114
156
|
message: `Waiting for ${required} confirmations`,
|
|
115
|
-
response:
|
|
157
|
+
response: { current: 0, required },
|
|
116
158
|
level: 'INFO',
|
|
117
159
|
}),
|
|
118
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
119
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
120
|
-
title: `Confirmation ${current}/${required}
|
|
160
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_03_01]: (current, required) => ({
|
|
161
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_03_01,
|
|
162
|
+
title: `Confirmation ${current}/${required} Received`,
|
|
121
163
|
message: `${current}/${required} confirmations received`,
|
|
122
|
-
response:
|
|
164
|
+
response: { current, required },
|
|
123
165
|
level: 'INFO',
|
|
124
166
|
}),
|
|
125
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
126
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
127
|
-
title: `Confirmation ${current}/${required}
|
|
167
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_03_02]: (current, required) => ({
|
|
168
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_03_02,
|
|
169
|
+
title: `Confirmation ${current}/${required} Received`,
|
|
128
170
|
message: `${current}/${required} confirmations received`,
|
|
129
|
-
response:
|
|
171
|
+
response: { current, required },
|
|
130
172
|
level: 'SUCCESS',
|
|
131
173
|
}),
|
|
132
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
133
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
174
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_04]: (txHash) => ({
|
|
175
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_04,
|
|
134
176
|
title: 'Funds Confirmed',
|
|
135
177
|
message: 'Origin chain lock confirmed',
|
|
136
|
-
response: null,
|
|
178
|
+
response: { stage: 'funds-confirmed', txHash: txHash !== null && txHash !== void 0 ? txHash : null },
|
|
137
179
|
level: 'SUCCESS',
|
|
138
180
|
}),
|
|
139
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
140
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
141
|
-
title: 'Syncing
|
|
181
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_05]: () => ({
|
|
182
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_05,
|
|
183
|
+
title: 'Syncing with Push Chain',
|
|
142
184
|
message: 'Waiting for transaction to appear on Push Chain',
|
|
143
|
-
response:
|
|
185
|
+
response: { stage: 'syncing-push-chain' },
|
|
144
186
|
level: 'INFO',
|
|
145
187
|
}),
|
|
146
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
147
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
188
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_06]: (amount, decimals, symbol) => ({
|
|
189
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_06,
|
|
148
190
|
title: 'Funds Credited on Push Chain',
|
|
149
191
|
message: `Funds credited: ${utils_1.Utils.helpers.formatUnits(amount, decimals)} ${symbol}`,
|
|
150
|
-
response:
|
|
192
|
+
response: { amount, symbol },
|
|
151
193
|
level: 'SUCCESS',
|
|
152
194
|
}),
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
response: null,
|
|
195
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_07_01]: (originChain, pushGasUsd, paddedDepositUsd) => ({
|
|
196
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_07_01,
|
|
197
|
+
title: `${friendlyChain(originChain)} Push Gas Sizing: Case A`,
|
|
198
|
+
message: `Push-chain gas < $1; padding deposit to $1 floor (pushGasUsd=${pushGasUsd}, paddedDepositUsd=${paddedDepositUsd})`,
|
|
199
|
+
response: { category: 'A', pushGasUsd, paddedDepositUsd, chain: originChain },
|
|
159
200
|
level: 'INFO',
|
|
160
201
|
}),
|
|
161
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
162
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
163
|
-
title:
|
|
164
|
-
message:
|
|
165
|
-
response:
|
|
166
|
-
level: '
|
|
202
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_07_02]: (originChain, pushGasUsd, paddedDepositUsd) => ({
|
|
203
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_07_02,
|
|
204
|
+
title: `${friendlyChain(originChain)} Push Gas Sizing: Case B`,
|
|
205
|
+
message: `Push-chain gas within $1–$10; happy path (pushGasUsd=${pushGasUsd}, paddedDepositUsd=${paddedDepositUsd})`,
|
|
206
|
+
response: { category: 'B', pushGasUsd, paddedDepositUsd, chain: originChain },
|
|
207
|
+
level: 'INFO',
|
|
208
|
+
}),
|
|
209
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_07_03]: (originChain, pushGasUsd, paddedDepositUsd) => ({
|
|
210
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_106_07_03,
|
|
211
|
+
title: `${friendlyChain(originChain)} Push Gas Sizing: Case C`,
|
|
212
|
+
message: `Push-chain gas > $10; deposit passes through to origin gateway MAX_CAP_UNIVERSAL_TX_USD (pushGasUsd=${pushGasUsd}, paddedDepositUsd=${paddedDepositUsd})`,
|
|
213
|
+
response: { category: 'C', pushGasUsd, paddedDepositUsd, chain: originChain },
|
|
214
|
+
level: 'INFO',
|
|
167
215
|
}),
|
|
168
|
-
[progress_hook_types_1.PROGRESS_HOOK.
|
|
169
|
-
id: progress_hook_types_1.PROGRESS_HOOK.
|
|
216
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_107]: () => ({
|
|
217
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_107,
|
|
218
|
+
title: 'Broadcasting to Push Chain',
|
|
219
|
+
message: 'Sending tx to Push Chain...',
|
|
220
|
+
response: { stage: 'broadcasting', destination: 'push-chain' },
|
|
221
|
+
level: 'INFO',
|
|
222
|
+
}),
|
|
223
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_199_01]: (txResponse, receipt) => {
|
|
224
|
+
var _a;
|
|
225
|
+
const first = Array.isArray(txResponse) ? txResponse[0] : undefined;
|
|
226
|
+
const txHash = (_a = first === null || first === void 0 ? void 0 : first.hash) !== null && _a !== void 0 ? _a : '';
|
|
227
|
+
return {
|
|
228
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_199_01,
|
|
229
|
+
title: 'Push Chain Tx Success',
|
|
230
|
+
message: `Tx confirmed: ${txHash}`,
|
|
231
|
+
response: { txHash, response: txResponse, receipt: receipt !== null && receipt !== void 0 ? receipt : null },
|
|
232
|
+
level: 'SUCCESS',
|
|
233
|
+
};
|
|
234
|
+
},
|
|
235
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_199_02]: (errMessage) => ({
|
|
236
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_199_02,
|
|
170
237
|
title: 'Push Chain Tx Failed',
|
|
171
238
|
message: errMessage,
|
|
172
|
-
response:
|
|
239
|
+
response: { error: errMessage },
|
|
240
|
+
level: 'ERROR',
|
|
241
|
+
}),
|
|
242
|
+
};
|
|
243
|
+
// =============================================================================
|
|
244
|
+
// Route 2 — UEA → UGPC → CEA on target chain (201–299, signature-only)
|
|
245
|
+
// =============================================================================
|
|
246
|
+
const RAW_HOOKS_R2 = {
|
|
247
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_201]: (targetChain, targetAddress) => ({
|
|
248
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_201,
|
|
249
|
+
title: `${friendlyChain(targetChain)} Detected`,
|
|
250
|
+
message: `External chain: ${targetChain} — Target address: ${targetAddress}`,
|
|
251
|
+
response: { chain: targetChain, address: targetAddress },
|
|
252
|
+
level: 'INFO',
|
|
253
|
+
}),
|
|
254
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_202_01]: (targetChain) => ({
|
|
255
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_202_01,
|
|
256
|
+
title: `Estimating ${friendlyChain(targetChain)} Chain Gas`,
|
|
257
|
+
message: 'Querying Push Chain gas and UGPC relay fee',
|
|
258
|
+
response: { stage: 'estimating-gas', chain: targetChain },
|
|
259
|
+
level: 'INFO',
|
|
260
|
+
}),
|
|
261
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_202_02]: (targetChain, pushGas, relayFee) => ({
|
|
262
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_202_02,
|
|
263
|
+
title: `${friendlyChain(targetChain)} Chain Gas Estimated`,
|
|
264
|
+
message: `Push gas: ${pushGas} UPC + UGPC relay: ${relayFee} UPC = ${pushGas + relayFee} UPC`,
|
|
265
|
+
response: {
|
|
266
|
+
gasEstimate: pushGas,
|
|
267
|
+
relayFee,
|
|
268
|
+
totalCost: pushGas + relayFee,
|
|
269
|
+
currency: 'UPC',
|
|
270
|
+
},
|
|
271
|
+
level: 'SUCCESS',
|
|
272
|
+
}),
|
|
273
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_203_01]: (targetChain) => ({
|
|
274
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_203_01,
|
|
275
|
+
title: `Resolving ${friendlyChain(targetChain)} Execution Account`,
|
|
276
|
+
message: `Resolving UEA on Push Chain and CEA on ${targetChain}`,
|
|
277
|
+
response: { stage: 'resolving-cea', chain: targetChain },
|
|
278
|
+
level: 'INFO',
|
|
279
|
+
}),
|
|
280
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_203_02]: (ueaAddr, ceaAddr, targetChain, deployed) => ({
|
|
281
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_203_02,
|
|
282
|
+
title: `${friendlyChain(targetChain)} Execution Account Ready`,
|
|
283
|
+
message: `UEA: ${ueaAddr}. CEA: ${ceaAddr} on ${targetChain}. Deployed: ${deployed}`,
|
|
284
|
+
response: { uea: ueaAddr, cea: ceaAddr, chain: targetChain, deployed },
|
|
285
|
+
level: 'SUCCESS',
|
|
286
|
+
}),
|
|
287
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_204_01]: () => ({
|
|
288
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_204_01,
|
|
289
|
+
title: 'Awaiting Signature',
|
|
290
|
+
message: 'Awaiting user signature for universal payload',
|
|
291
|
+
response: { stage: 'awaiting-signature' },
|
|
292
|
+
level: 'INFO',
|
|
293
|
+
}),
|
|
294
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_204_02]: () => ({
|
|
295
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_204_02,
|
|
296
|
+
title: 'Signature Received',
|
|
297
|
+
message: 'Universal payload signed — preparing broadcast',
|
|
298
|
+
response: { stage: 'signed' },
|
|
299
|
+
level: 'SUCCESS',
|
|
300
|
+
}),
|
|
301
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_204_03]: () => ({
|
|
302
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_204_03,
|
|
303
|
+
title: 'Verification Success',
|
|
304
|
+
message: 'Verification completed',
|
|
305
|
+
response: { stage: 'verified' },
|
|
306
|
+
level: 'SUCCESS',
|
|
307
|
+
}),
|
|
308
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_204_04]: (errorMessage) => {
|
|
309
|
+
const { isUserDecline, title, message } = classifyDeclineError(errorMessage);
|
|
310
|
+
const response = {
|
|
311
|
+
error: errorMessage !== null && errorMessage !== void 0 ? errorMessage : 'Verification declined by user',
|
|
312
|
+
isUserDecline,
|
|
313
|
+
};
|
|
314
|
+
return {
|
|
315
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_204_04,
|
|
316
|
+
title,
|
|
317
|
+
message,
|
|
318
|
+
response,
|
|
319
|
+
level: 'ERROR',
|
|
320
|
+
};
|
|
321
|
+
},
|
|
322
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_207]: (targetChain) => ({
|
|
323
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_207,
|
|
324
|
+
title: `Broadcasting from Push Chain → ${friendlyChain(targetChain)}`,
|
|
325
|
+
message: 'Sending tx to Push Chain...',
|
|
326
|
+
response: { chain: targetChain },
|
|
327
|
+
level: 'INFO',
|
|
328
|
+
}),
|
|
329
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_209_01]: (targetChain) => ({
|
|
330
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_209_01,
|
|
331
|
+
title: 'Awaiting Push Chain Relay',
|
|
332
|
+
message: `Waiting for UGPC to relay execution to ${targetChain}`,
|
|
333
|
+
response: { chain: targetChain },
|
|
334
|
+
level: 'INFO',
|
|
335
|
+
}),
|
|
336
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_209_02]: (targetChain, elapsedMs) => ({
|
|
337
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_209_02,
|
|
338
|
+
title: `Syncing State with ${friendlyChain(targetChain)}`,
|
|
339
|
+
message: `Polling ${targetChain} for CEA execution`,
|
|
340
|
+
response: { chain: targetChain, elapsedMs },
|
|
341
|
+
level: 'INFO',
|
|
342
|
+
}),
|
|
343
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_299_01]: (details) => ({
|
|
344
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_299_01,
|
|
345
|
+
title: `${friendlyChain(details.destinationChain)} Tx Success`,
|
|
346
|
+
message: `CEA executed on ${details.destinationChain} - tx: ${details.externalTxHash}`,
|
|
347
|
+
response: Object.assign({ txHash: details.externalTxHash }, details),
|
|
348
|
+
level: 'SUCCESS',
|
|
349
|
+
}),
|
|
350
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_299_02]: (targetChain, errorMessage) => ({
|
|
351
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_299_02,
|
|
352
|
+
title: `${friendlyChain(targetChain)} Tx Failed`,
|
|
353
|
+
message: errorMessage,
|
|
354
|
+
response: { error: errorMessage, chain: targetChain },
|
|
173
355
|
level: 'ERROR',
|
|
174
356
|
}),
|
|
175
|
-
|
|
357
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_299_03]: (targetChain, elapsedMs) => ({
|
|
358
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_299_03,
|
|
359
|
+
title: `Syncing State with ${friendlyChain(targetChain)} Timeout`,
|
|
360
|
+
message: `Timed out waiting for UGPC relay to ${targetChain}`,
|
|
361
|
+
response: { error: 'relay timeout', chain: targetChain, elapsedMs },
|
|
362
|
+
level: 'ERROR',
|
|
363
|
+
}),
|
|
364
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_299_99]: (targetChain, txHash) => ({
|
|
365
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_299_99,
|
|
366
|
+
title: `${friendlyChain(targetChain)} Tx Completed`,
|
|
367
|
+
message: `Intermediate ${friendlyChain(targetChain)} tx confirmed: ${txHash}, progressing to next phase`,
|
|
368
|
+
response: { chain: targetChain, txHash },
|
|
369
|
+
level: 'INFO',
|
|
370
|
+
}),
|
|
371
|
+
};
|
|
372
|
+
// =============================================================================
|
|
373
|
+
// Route 3 — UEA → UGPC → CEA → sendUniversalTxToUEA → Push Chain (301–399)
|
|
374
|
+
// =============================================================================
|
|
375
|
+
const RAW_HOOKS_R3 = {
|
|
376
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_199_99_99]: (txHash) => ({
|
|
377
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_199_99_99,
|
|
378
|
+
title: 'Push Chain TX Completed',
|
|
379
|
+
message: `Intermediate Push Chain tx confirmed: ${txHash}, progressing to next phase`,
|
|
380
|
+
response: { txHash },
|
|
381
|
+
level: 'INFO',
|
|
382
|
+
}),
|
|
383
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_301]: (sourceChain, ceaAddress) => ({
|
|
384
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_301,
|
|
385
|
+
title: `${friendlyChain(sourceChain)}'s Executor Account Detected`,
|
|
386
|
+
message: `Source chain: ${sourceChain} — CEA: ${ceaAddress}`,
|
|
387
|
+
response: { chain: sourceChain, address: ceaAddress },
|
|
388
|
+
level: 'INFO',
|
|
389
|
+
}),
|
|
390
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_302_01]: (sourceChain) => ({
|
|
391
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_302_01,
|
|
392
|
+
title: `Estimating ${friendlyChain(sourceChain)} Gas`,
|
|
393
|
+
message: 'Querying Push Chain gas and UGPC relay fee',
|
|
394
|
+
response: { stage: 'estimating-gas', chain: sourceChain },
|
|
395
|
+
level: 'INFO',
|
|
396
|
+
}),
|
|
397
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_302_02]: (sourceChain, pushGas, relayFee) => ({
|
|
398
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_302_02,
|
|
399
|
+
title: `${friendlyChain(sourceChain)} Gas Estimated`,
|
|
400
|
+
message: `Push gas: ${pushGas} UPC + UGPC relay: ${relayFee} UPC = ${pushGas + relayFee} UPC`,
|
|
401
|
+
response: {
|
|
402
|
+
gasEstimate: pushGas,
|
|
403
|
+
relayFee,
|
|
404
|
+
totalCost: pushGas + relayFee,
|
|
405
|
+
currency: 'UPC',
|
|
406
|
+
},
|
|
407
|
+
level: 'SUCCESS',
|
|
408
|
+
}),
|
|
409
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_302_03_01]: (sourceChain, gasUsd, gasLegNativePc) => ({
|
|
410
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_302_03_01,
|
|
411
|
+
title: `${friendlyChain(sourceChain)} Gas Sizing: Case A`,
|
|
412
|
+
message: `Gas cost < $1; padding to $1 minimum (gasUsd=${gasUsd}, gasLeg=${gasLegNativePc} UPC)`,
|
|
413
|
+
response: { category: 'A', gasUsd, gasLegNativePc, chain: sourceChain },
|
|
414
|
+
level: 'INFO',
|
|
415
|
+
}),
|
|
416
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_302_03_02]: (sourceChain, gasUsd, gasLegNativePc) => ({
|
|
417
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_302_03_02,
|
|
418
|
+
title: `${friendlyChain(sourceChain)} Gas Sizing: Case B`,
|
|
419
|
+
message: `Gas cost within $1–$10 window; happy path (gasUsd=${gasUsd}, gasLeg=${gasLegNativePc} UPC)`,
|
|
420
|
+
response: { category: 'B', gasUsd, gasLegNativePc, chain: sourceChain },
|
|
421
|
+
level: 'INFO',
|
|
422
|
+
}),
|
|
423
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_302_03_03]: (sourceChain, gasUsd, gasLegNativePc, overflowNativePc) => ({
|
|
424
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_302_03_03,
|
|
425
|
+
title: `${friendlyChain(sourceChain)} Gas Sizing: Case C`,
|
|
426
|
+
message: `Gas cost > $10; splitting into $10 gas leg + ${overflowNativePc} UPC overflow bridged as funds`,
|
|
427
|
+
response: {
|
|
428
|
+
category: 'C',
|
|
429
|
+
gasUsd,
|
|
430
|
+
gasLegNativePc,
|
|
431
|
+
overflowNativePc,
|
|
432
|
+
chain: sourceChain,
|
|
433
|
+
},
|
|
434
|
+
level: 'INFO',
|
|
435
|
+
}),
|
|
436
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_303_01]: (sourceChain) => ({
|
|
437
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_303_01,
|
|
438
|
+
title: 'Resolving Execution Accounts on Chains',
|
|
439
|
+
message: `Resolving UEA on Push Chain and CEA on ${sourceChain}`,
|
|
440
|
+
response: { stage: 'resolving-cea-uea', chain: sourceChain },
|
|
441
|
+
level: 'INFO',
|
|
442
|
+
}),
|
|
443
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_303_02]: (ueaAddr, ceaAddr, sourceChain) => ({
|
|
444
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_303_02,
|
|
445
|
+
title: 'Execution Accounts Resolved',
|
|
446
|
+
message: `UEA: ${ueaAddr}. CEA: ${ceaAddr} on ${sourceChain}. Deployed: true`,
|
|
447
|
+
response: { uea: ueaAddr, cea: ceaAddr, chain: sourceChain, deployed: true },
|
|
448
|
+
level: 'SUCCESS',
|
|
449
|
+
}),
|
|
450
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_304_01]: () => ({
|
|
451
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_304_01,
|
|
452
|
+
title: 'Awaiting Signature',
|
|
453
|
+
message: 'Awaiting user signature for universal payload',
|
|
454
|
+
response: { stage: 'awaiting-signature' },
|
|
455
|
+
level: 'INFO',
|
|
456
|
+
}),
|
|
457
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_304_02]: () => ({
|
|
458
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_304_02,
|
|
459
|
+
title: 'Signature Received',
|
|
460
|
+
message: 'Universal payload signed — preparing broadcast',
|
|
461
|
+
response: { stage: 'signed' },
|
|
462
|
+
level: 'SUCCESS',
|
|
463
|
+
}),
|
|
464
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_304_03]: () => ({
|
|
465
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_304_03,
|
|
466
|
+
title: 'Verification Success',
|
|
467
|
+
message: 'Verification completed',
|
|
468
|
+
response: { stage: 'verified' },
|
|
469
|
+
level: 'SUCCESS',
|
|
470
|
+
}),
|
|
471
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_304_04]: (errorMessage) => {
|
|
472
|
+
const { isUserDecline, title, message } = classifyDeclineError(errorMessage);
|
|
473
|
+
const response = {
|
|
474
|
+
error: errorMessage !== null && errorMessage !== void 0 ? errorMessage : 'Verification declined by user',
|
|
475
|
+
isUserDecline,
|
|
476
|
+
};
|
|
477
|
+
return {
|
|
478
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_304_04,
|
|
479
|
+
title,
|
|
480
|
+
message,
|
|
481
|
+
response,
|
|
482
|
+
level: 'ERROR',
|
|
483
|
+
};
|
|
484
|
+
},
|
|
485
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_307]: (sourceChain) => ({
|
|
486
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_307,
|
|
487
|
+
title: `Broadcasting from Push Chain → ${friendlyChain(sourceChain)}`,
|
|
488
|
+
message: 'Sending tx from Push Chain...',
|
|
489
|
+
response: { chain: sourceChain },
|
|
490
|
+
level: 'INFO',
|
|
491
|
+
}),
|
|
492
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_309_01]: (sourceChain) => ({
|
|
493
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_309_01,
|
|
494
|
+
title: `Awaiting ${friendlyChain(sourceChain)} Relay`,
|
|
495
|
+
message: `Waiting for UGPC to relay to CEA on ${sourceChain}`,
|
|
496
|
+
response: { chain: sourceChain },
|
|
497
|
+
level: 'INFO',
|
|
498
|
+
}),
|
|
499
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_309_02]: (sourceChain, elapsedMs) => ({
|
|
500
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_309_02,
|
|
501
|
+
title: `Syncing State with ${friendlyChain(sourceChain)}`,
|
|
502
|
+
message: `Polling ${sourceChain} for CEA execution`,
|
|
503
|
+
response: { chain: sourceChain, elapsedMs },
|
|
504
|
+
level: 'INFO',
|
|
505
|
+
}),
|
|
506
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_309_03]: (sourceChain, txHash) => ({
|
|
507
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_309_03,
|
|
508
|
+
title: `${friendlyChain(sourceChain)} Tx Confirmed`,
|
|
509
|
+
message: `CEA executed on ${sourceChain}: ${txHash} — return inbound initiated`,
|
|
510
|
+
response: { chain: sourceChain, txHash },
|
|
511
|
+
level: 'INFO',
|
|
512
|
+
}),
|
|
513
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_310_01]: (sourceChain) => ({
|
|
514
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_310_01,
|
|
515
|
+
title: `${friendlyChain(sourceChain)} → Push Chain Inbound Tx Submitted`,
|
|
516
|
+
message: `CEA initiated return — waiting for Push Chain inbound from ${sourceChain}`,
|
|
517
|
+
response: { chain: sourceChain },
|
|
518
|
+
level: 'INFO',
|
|
519
|
+
}),
|
|
520
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_310_02]: (sourceChain, elapsedMs) => ({
|
|
521
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_310_02,
|
|
522
|
+
title: 'Syncing State with Push Chain for Inbound Tx',
|
|
523
|
+
message: `Polling Push Chain for inbound from ${sourceChain}`,
|
|
524
|
+
response: { chain: sourceChain, elapsedMs },
|
|
525
|
+
level: 'INFO',
|
|
526
|
+
}),
|
|
527
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_399_01]: (sourceChain, txHash, receipt) => ({
|
|
528
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_399_01,
|
|
529
|
+
title: 'Push Chain Inbound Tx Success',
|
|
530
|
+
message: `Inbound from ${sourceChain} confirmed · Push tx: ${txHash}`,
|
|
531
|
+
response: { chain: sourceChain, txHash, receipt: receipt !== null && receipt !== void 0 ? receipt : null },
|
|
532
|
+
level: 'SUCCESS',
|
|
533
|
+
}),
|
|
534
|
+
// 399-02 / 399-03 are multi-use terminal hooks for R3:
|
|
535
|
+
// • 'inbound' (default) — round-trip Push tx failed/timed out (target: Push)
|
|
536
|
+
// • 'outbound' — source-chain CEA tx failed/timed out (target: source chain)
|
|
537
|
+
// • 'push' — Push Chain execution itself failed (gateway tx revert / pre-wait)
|
|
538
|
+
// Phase is passed by the emission site so the title matches the leg that
|
|
539
|
+
// actually failed. Default stays 'inbound' for callers that don't specify
|
|
540
|
+
// (backwards-compat with fixtures + response-builder's inbound block).
|
|
541
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_399_02]: (errorMessage, phase = 'inbound', chain) => ({
|
|
542
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_399_02,
|
|
543
|
+
title: phase === 'outbound'
|
|
544
|
+
? `${friendlyChain(chain)} Tx Failed`
|
|
545
|
+
: phase === 'push'
|
|
546
|
+
? 'Push Chain Tx Failed'
|
|
547
|
+
: 'Push Chain Inbound Tx Failed',
|
|
548
|
+
message: errorMessage,
|
|
549
|
+
response: { error: errorMessage, phase, chain: chain !== null && chain !== void 0 ? chain : null },
|
|
550
|
+
level: 'ERROR',
|
|
551
|
+
}),
|
|
552
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_399_03]: (sourceChain, elapsedMs, phase = 'inbound') => ({
|
|
553
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_399_03,
|
|
554
|
+
title: phase === 'outbound'
|
|
555
|
+
? `Syncing State with ${friendlyChain(sourceChain)} Timeout`
|
|
556
|
+
: phase === 'push'
|
|
557
|
+
? 'Push Chain Tx Timeout'
|
|
558
|
+
: 'Push Chain Inbound Timeout',
|
|
559
|
+
message: phase === 'outbound'
|
|
560
|
+
? `Timed out waiting for ${friendlyChain(sourceChain)} relay`
|
|
561
|
+
: phase === 'push'
|
|
562
|
+
? `Timed out waiting for Push Chain tx`
|
|
563
|
+
: `Timed out waiting for inbound from ${sourceChain}`,
|
|
564
|
+
response: {
|
|
565
|
+
error: phase === 'outbound'
|
|
566
|
+
? 'outbound timeout'
|
|
567
|
+
: phase === 'push'
|
|
568
|
+
? 'push timeout'
|
|
569
|
+
: 'inbound timeout',
|
|
570
|
+
phase,
|
|
571
|
+
chain: sourceChain,
|
|
572
|
+
elapsedMs,
|
|
573
|
+
},
|
|
574
|
+
level: 'ERROR',
|
|
575
|
+
}),
|
|
576
|
+
};
|
|
577
|
+
// =============================================================================
|
|
578
|
+
// UEA Migration hooks (unchanged)
|
|
579
|
+
// =============================================================================
|
|
580
|
+
const RAW_HOOKS_MIG = {
|
|
176
581
|
[progress_hook_types_1.PROGRESS_HOOK.UEA_MIG_01]: () => ({
|
|
177
582
|
id: progress_hook_types_1.PROGRESS_HOOK.UEA_MIG_01,
|
|
178
583
|
title: 'Checking UEA',
|
|
@@ -198,14 +603,14 @@ const RAW_HOOKS = {
|
|
|
198
603
|
id: progress_hook_types_1.PROGRESS_HOOK.UEA_MIG_9901,
|
|
199
604
|
title: 'UEA Migration Successful',
|
|
200
605
|
message: `UEA migration is successful. UEA is now version ${newVersion}.`,
|
|
201
|
-
response:
|
|
606
|
+
response: { version: newVersion },
|
|
202
607
|
level: 'SUCCESS',
|
|
203
608
|
}),
|
|
204
609
|
[progress_hook_types_1.PROGRESS_HOOK.UEA_MIG_9902]: () => ({
|
|
205
610
|
id: progress_hook_types_1.PROGRESS_HOOK.UEA_MIG_9902,
|
|
206
611
|
title: 'UEA Migration Failed',
|
|
207
612
|
message: 'UEA migration failed. Check transaction on explorer.',
|
|
208
|
-
response:
|
|
613
|
+
response: { error: 'UEA migration failed' },
|
|
209
614
|
level: 'ERROR',
|
|
210
615
|
}),
|
|
211
616
|
[progress_hook_types_1.PROGRESS_HOOK.UEA_MIG_9903]: () => ({
|
|
@@ -216,6 +621,55 @@ const RAW_HOOKS = {
|
|
|
216
621
|
level: 'INFO',
|
|
217
622
|
}),
|
|
218
623
|
};
|
|
624
|
+
// =============================================================================
|
|
625
|
+
// Multichain (multi-hop) cascade markers (001 / 002 / 999)
|
|
626
|
+
// =============================================================================
|
|
627
|
+
const RAW_HOOKS_MULTICHAIN = {
|
|
628
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_001]: (hopCount, chains) => ({
|
|
629
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_001,
|
|
630
|
+
title: 'Multichain Transactions Initiated',
|
|
631
|
+
message: `${hopCount}-hop transaction — ${chains.map(friendlyChain).join(' → ')}`,
|
|
632
|
+
response: { hopCount, chains },
|
|
633
|
+
level: 'INFO',
|
|
634
|
+
}),
|
|
635
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_002_01]: (n, total, fromChain, toChain) => ({
|
|
636
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_002_01,
|
|
637
|
+
title: `Starting Intermediate Transaction #${n}/${total}`,
|
|
638
|
+
message: `Starting tx ${n} of ${total}: ${friendlyChain(fromChain)} → ${friendlyChain(toChain)}`,
|
|
639
|
+
response: { n, total, fromChain, toChain },
|
|
640
|
+
level: 'INFO',
|
|
641
|
+
}),
|
|
642
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_002_99_99]: (n, total) => ({
|
|
643
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_002_99_99,
|
|
644
|
+
title: `Intermediate Transaction #${n}/${total} Complete`,
|
|
645
|
+
message: `Tx ${n} of ${total} confirmed — proceeding to tx ${n + 1}`,
|
|
646
|
+
response: { n, total },
|
|
647
|
+
level: 'INFO',
|
|
648
|
+
}),
|
|
649
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_999_01]: (hopCount) => ({
|
|
650
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_999_01,
|
|
651
|
+
title: 'All Multichain Transactions Successful',
|
|
652
|
+
message: `${hopCount}-hop transaction confirmed across all chains`,
|
|
653
|
+
response: { hopCount },
|
|
654
|
+
level: 'SUCCESS',
|
|
655
|
+
}),
|
|
656
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_999_02]: (failedAt, total, errorMessage) => ({
|
|
657
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_999_02,
|
|
658
|
+
title: 'Multichain Transactions Failed',
|
|
659
|
+
message: `Cascade failed at hop ${failedAt} of ${total}: ${errorMessage}`,
|
|
660
|
+
response: { failedAt, total, error: errorMessage },
|
|
661
|
+
level: 'ERROR',
|
|
662
|
+
}),
|
|
663
|
+
[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_999_03]: (failedAt, total) => ({
|
|
664
|
+
id: progress_hook_types_1.PROGRESS_HOOK.SEND_TX_999_03,
|
|
665
|
+
title: 'Multichain Transactions Timeout',
|
|
666
|
+
message: `Cascade timed out at hop ${failedAt} of ${total}`,
|
|
667
|
+
response: { failedAt, total, error: 'cascade timeout' },
|
|
668
|
+
level: 'ERROR',
|
|
669
|
+
}),
|
|
670
|
+
};
|
|
671
|
+
// Combine all routes into the master record
|
|
672
|
+
const RAW_HOOKS = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, RAW_HOOKS_R1), RAW_HOOKS_R2), RAW_HOOKS_R3), RAW_HOOKS_MULTICHAIN), RAW_HOOKS_MIG);
|
|
219
673
|
// Build final hooks with timestamp injection
|
|
220
674
|
const PROGRESS_HOOKS = Object.fromEntries(Object.entries(RAW_HOOKS).map(([key, value]) => [key, withTimestamp(value)]));
|
|
221
675
|
exports.default = PROGRESS_HOOKS;
|