@pushchain/core 5.1.3 → 5.1.4-alpha.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 (120) hide show
  1. package/package.json +30 -6
  2. package/src/lib/constants/abi/prc20.evm.d.ts +22 -2
  3. package/src/lib/constants/abi/prc20.evm.js +11 -3
  4. package/src/lib/constants/abi/prc20.evm.js.map +1 -1
  5. package/src/lib/constants/abi/universalGatewayPC.evm.d.ts +59 -0
  6. package/src/lib/constants/abi/universalGatewayPC.evm.js +26 -0
  7. package/src/lib/constants/abi/universalGatewayPC.evm.js.map +1 -1
  8. package/src/lib/constants/chain.d.ts +4 -0
  9. package/src/lib/constants/chain.js +6 -2
  10. package/src/lib/constants/chain.js.map +1 -1
  11. package/src/lib/index.d.ts +2 -2
  12. package/src/lib/index.js.map +1 -1
  13. package/src/lib/internal/bs58.d.ts +2 -0
  14. package/src/lib/internal/bs58.js +7 -0
  15. package/src/lib/internal/bs58.js.map +1 -0
  16. package/src/lib/orchestrator/cea-utils.d.ts +0 -9
  17. package/src/lib/orchestrator/cea-utils.js +15 -4
  18. package/src/lib/orchestrator/cea-utils.js.map +1 -1
  19. package/src/lib/orchestrator/internals/account-manager.d.ts +16 -0
  20. package/src/lib/orchestrator/internals/account-manager.js +191 -0
  21. package/src/lib/orchestrator/internals/account-manager.js.map +1 -0
  22. package/src/lib/orchestrator/internals/cascade.d.ts +23 -0
  23. package/src/lib/orchestrator/internals/cascade.js +945 -0
  24. package/src/lib/orchestrator/internals/cascade.js.map +1 -0
  25. package/src/lib/orchestrator/internals/confirmation.d.ts +9 -0
  26. package/src/lib/orchestrator/internals/confirmation.js +123 -0
  27. package/src/lib/orchestrator/internals/confirmation.js.map +1 -0
  28. package/src/lib/orchestrator/internals/context.d.ts +38 -0
  29. package/src/lib/orchestrator/internals/context.js +49 -0
  30. package/src/lib/orchestrator/internals/context.js.map +1 -0
  31. package/src/lib/orchestrator/internals/execute-funds-only.d.ts +11 -0
  32. package/src/lib/orchestrator/internals/execute-funds-only.js +219 -0
  33. package/src/lib/orchestrator/internals/execute-funds-only.js.map +1 -0
  34. package/src/lib/orchestrator/internals/execute-funds-payload.d.ts +11 -0
  35. package/src/lib/orchestrator/internals/execute-funds-payload.js +222 -0
  36. package/src/lib/orchestrator/internals/execute-funds-payload.js.map +1 -0
  37. package/src/lib/orchestrator/internals/execute-standard.d.ts +13 -0
  38. package/src/lib/orchestrator/internals/execute-standard.js +225 -0
  39. package/src/lib/orchestrator/internals/execute-standard.js.map +1 -0
  40. package/src/lib/orchestrator/internals/gas-calculator.d.ts +30 -0
  41. package/src/lib/orchestrator/internals/gas-calculator.js +283 -0
  42. package/src/lib/orchestrator/internals/gas-calculator.js.map +1 -0
  43. package/src/lib/orchestrator/internals/gateway-client.d.ts +24 -0
  44. package/src/lib/orchestrator/internals/gateway-client.js +191 -0
  45. package/src/lib/orchestrator/internals/gateway-client.js.map +1 -0
  46. package/src/lib/orchestrator/internals/helpers.d.ts +26 -0
  47. package/src/lib/orchestrator/internals/helpers.js +181 -0
  48. package/src/lib/orchestrator/internals/helpers.js.map +1 -0
  49. package/src/lib/orchestrator/internals/index.d.ts +24 -0
  50. package/src/lib/orchestrator/internals/index.js +132 -0
  51. package/src/lib/orchestrator/internals/index.js.map +1 -0
  52. package/src/lib/orchestrator/internals/outbound-sync.d.ts +49 -0
  53. package/src/lib/orchestrator/internals/outbound-sync.js +357 -0
  54. package/src/lib/orchestrator/internals/outbound-sync.js.map +1 -0
  55. package/src/lib/orchestrator/internals/outbound-tracker.d.ts +8 -0
  56. package/src/lib/orchestrator/internals/outbound-tracker.js +64 -0
  57. package/src/lib/orchestrator/internals/outbound-tracker.js.map +1 -0
  58. package/src/lib/orchestrator/internals/payload-builder.d.ts +24 -0
  59. package/src/lib/orchestrator/internals/payload-builder.js +178 -0
  60. package/src/lib/orchestrator/internals/payload-builder.js.map +1 -0
  61. package/src/lib/orchestrator/internals/push-chain-tx.d.ts +32 -0
  62. package/src/lib/orchestrator/internals/push-chain-tx.js +184 -0
  63. package/src/lib/orchestrator/internals/push-chain-tx.js.map +1 -0
  64. package/src/lib/orchestrator/internals/quote.d.ts +9 -0
  65. package/src/lib/orchestrator/internals/quote.js +114 -0
  66. package/src/lib/orchestrator/internals/quote.js.map +1 -0
  67. package/src/lib/orchestrator/internals/rescue.d.ts +20 -0
  68. package/src/lib/orchestrator/internals/rescue.js +112 -0
  69. package/src/lib/orchestrator/internals/rescue.js.map +1 -0
  70. package/src/lib/orchestrator/internals/response-builder.d.ts +26 -0
  71. package/src/lib/orchestrator/internals/response-builder.js +504 -0
  72. package/src/lib/orchestrator/internals/response-builder.js.map +1 -0
  73. package/src/lib/orchestrator/internals/route-handlers.d.ts +77 -0
  74. package/src/lib/orchestrator/internals/route-handlers.js +1203 -0
  75. package/src/lib/orchestrator/internals/route-handlers.js.map +1 -0
  76. package/src/lib/orchestrator/internals/signing.d.ts +27 -0
  77. package/src/lib/orchestrator/internals/signing.js +258 -0
  78. package/src/lib/orchestrator/internals/signing.js.map +1 -0
  79. package/src/lib/orchestrator/internals/svm-bridge.d.ts +21 -0
  80. package/src/lib/orchestrator/internals/svm-bridge.js +122 -0
  81. package/src/lib/orchestrator/internals/svm-bridge.js.map +1 -0
  82. package/src/lib/orchestrator/internals/svm-helpers.d.ts +35 -0
  83. package/src/lib/orchestrator/internals/svm-helpers.js +143 -0
  84. package/src/lib/orchestrator/internals/svm-helpers.js.map +1 -0
  85. package/src/lib/orchestrator/internals/tx-transformer.d.ts +12 -0
  86. package/src/lib/orchestrator/internals/tx-transformer.js +120 -0
  87. package/src/lib/orchestrator/internals/tx-transformer.js.map +1 -0
  88. package/src/lib/orchestrator/internals/uea-manager.d.ts +17 -0
  89. package/src/lib/orchestrator/internals/uea-manager.js +164 -0
  90. package/src/lib/orchestrator/internals/uea-manager.js.map +1 -0
  91. package/src/lib/orchestrator/orchestrator.d.ts +33 -431
  92. package/src/lib/orchestrator/orchestrator.js +124 -6125
  93. package/src/lib/orchestrator/orchestrator.js.map +1 -1
  94. package/src/lib/orchestrator/orchestrator.types.d.ts +11 -10
  95. package/src/lib/orchestrator/orchestrator.types.js.map +1 -1
  96. package/src/lib/orchestrator/payload-builders.js +34 -8
  97. package/src/lib/orchestrator/payload-builders.js.map +1 -1
  98. package/src/lib/price-fetch/price-fetch.js +19 -7
  99. package/src/lib/price-fetch/price-fetch.js.map +1 -1
  100. package/src/lib/push-chain/push-chain.d.ts +6 -0
  101. package/src/lib/push-chain/push-chain.js +10 -2
  102. package/src/lib/push-chain/push-chain.js.map +1 -1
  103. package/src/lib/push-client/push-client.d.ts +3 -0
  104. package/src/lib/push-client/push-client.js +21 -31
  105. package/src/lib/push-client/push-client.js.map +1 -1
  106. package/src/lib/universal/account/account.d.ts +35 -16
  107. package/src/lib/universal/account/account.js +298 -16
  108. package/src/lib/universal/account/account.js.map +1 -1
  109. package/src/lib/universal/signer/signer.d.ts +2 -3
  110. package/src/lib/universal/signer/signer.js +65 -115
  111. package/src/lib/universal/signer/signer.js.map +1 -1
  112. package/src/lib/universal/universal.types.d.ts +41 -0
  113. package/src/lib/utils.d.ts +7 -2
  114. package/src/lib/utils.js +65 -34
  115. package/src/lib/utils.js.map +1 -1
  116. package/src/lib/vm-client/evm-client.js +3 -11
  117. package/src/lib/vm-client/evm-client.js.map +1 -1
  118. package/src/lib/vm-client/svm-client.d.ts +0 -4
  119. package/src/lib/vm-client/svm-client.js +2 -8
  120. package/src/lib/vm-client/svm-client.js.map +1 -1
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ /**
3
+ * Payload construction functions for the orchestrator.
4
+ *
5
+ * buildUniversalTxRequest: Creates gateway request with revert instruction
6
+ * buildMulticallPayloadData: Encodes UEA_MULTICALL selector + abi-encoded calls
7
+ * buildGatewayPayloadAndGas: Constructs UniversalPayload + gateway request for fund flows
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.buildUniversalTxRequest = buildUniversalTxRequest;
11
+ exports.buildMulticallPayloadData = buildMulticallPayloadData;
12
+ exports.buildGatewayPayloadAndGas = buildGatewayPayloadAndGas;
13
+ const tslib_1 = require("tslib");
14
+ const viem_1 = require("viem");
15
+ const tx_1 = require("../../generated/v1/tx");
16
+ const payload_builders_1 = require("../payload-builders");
17
+ const context_1 = require("./context");
18
+ const helpers_1 = require("./helpers");
19
+ const signing_1 = require("./signing");
20
+ const uea_manager_1 = require("./uea-manager");
21
+ // ============================================================================
22
+ // Universal Tx Request Builder
23
+ // ============================================================================
24
+ function buildUniversalTxRequest(signerAddress, { recipient, token, amount, payload, }) {
25
+ const revertInstruction = {
26
+ fundRecipient: signerAddress,
27
+ revertMsg: '0x',
28
+ };
29
+ return {
30
+ recipient,
31
+ token,
32
+ amount,
33
+ payload,
34
+ revertInstruction,
35
+ signatureData: '0x',
36
+ };
37
+ }
38
+ // ============================================================================
39
+ // Multicall Encoding
40
+ // ============================================================================
41
+ function buildMulticallPayloadData(ctx, to, data) {
42
+ (0, context_1.printLog)(ctx, '_buildMulticallPayloadData — input: ' +
43
+ data.length +
44
+ ' calls: ' +
45
+ JSON.stringify(data, (_, v) => (typeof v === 'bigint' ? v.toString() : v), 2));
46
+ if (!helpers_1.SUPPORTED_GATEWAY_CHAINS.includes(ctx.universalSigner.account.chain)) {
47
+ throw new Error('Multicall is only enabled for Ethereum Sepolia, Arbitrum Sepolia, Base Sepolia, BNB Testnet and Solana Devnet');
48
+ }
49
+ // Normalize and validate calls
50
+ const normalizedCalls = data.map((c) => ({
51
+ to: (0, viem_1.getAddress)(c.to),
52
+ value: c.value,
53
+ data: c.data,
54
+ }));
55
+ // bytes4(keccak256("UEA_MULTICALL")) selector
56
+ const selector = (0, viem_1.keccak256)((0, viem_1.toBytes)('UEA_MULTICALL')).slice(0, 10);
57
+ // abi.encode(Call[]), where Call = { address to; uint256 value; bytes data; }
58
+ const encodedCalls = (0, viem_1.encodeAbiParameters)([
59
+ {
60
+ type: 'tuple[]',
61
+ components: [
62
+ { name: 'to', type: 'address' },
63
+ { name: 'value', type: 'uint256' },
64
+ { name: 'data', type: 'bytes' },
65
+ ],
66
+ },
67
+ ], [normalizedCalls]);
68
+ return (selector + encodedCalls.slice(2));
69
+ }
70
+ // ============================================================================
71
+ // Gateway Payload + Gas Builder
72
+ // ============================================================================
73
+ /**
74
+ * Builds the universal payload and gateway request for sendFunds / sendTxWithFunds flows.
75
+ */
76
+ function buildGatewayPayloadAndGas(ctx, execute, nonce, type, fundsValue) {
77
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
78
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6;
79
+ const gasEstimate = execute.gasLimit || BigInt(1e7);
80
+ const gasAmount = (_a = execute.value) !== null && _a !== void 0 ? _a : BigInt(0);
81
+ const ueaAddress = (0, uea_manager_1.computeUEAOffchain)(ctx);
82
+ if (type === 'sendTxWithFunds') {
83
+ if (!((_b = execute.funds) === null || _b === void 0 ? void 0 : _b.token))
84
+ throw new Error(`Invalid ${(_c = execute.funds) === null || _c === void 0 ? void 0 : _c.token}`);
85
+ const multicallData = (0, payload_builders_1.buildExecuteMulticall)({
86
+ execute,
87
+ ueaAddress,
88
+ });
89
+ const universalPayload = {
90
+ to: viem_1.zeroAddress,
91
+ value: (_d = execute.value) !== null && _d !== void 0 ? _d : BigInt(0),
92
+ data: buildMulticallPayloadData(ctx, execute.to, multicallData),
93
+ gasLimit: gasEstimate,
94
+ maxFeePerGas: execute.maxFeePerGas || BigInt(1e10),
95
+ maxPriorityFeePerGas: execute.maxPriorityFeePerGas || BigInt(0),
96
+ nonce,
97
+ deadline: execute.deadline || BigInt(9999999999),
98
+ vType: tx_1.VerificationType.universalTxVerification,
99
+ };
100
+ (0, context_1.printLog)(ctx, '(universalPayload) ' + universalPayload);
101
+ let tokenAddress = (_f = (_e = execute.funds) === null || _e === void 0 ? void 0 : _e.token) === null || _f === void 0 ? void 0 : _f.address;
102
+ if (((_h = (_g = execute.funds) === null || _g === void 0 ? void 0 : _g.token) === null || _h === void 0 ? void 0 : _h.address) ===
103
+ '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee') {
104
+ tokenAddress = viem_1.zeroAddress;
105
+ }
106
+ const req = buildUniversalTxRequest(ctx.universalSigner.account.address, {
107
+ recipient: viem_1.zeroAddress,
108
+ token: tokenAddress,
109
+ amount: (_j = execute.funds) === null || _j === void 0 ? void 0 : _j.amount,
110
+ payload: (0, signing_1.encodeUniversalPayload)(universalPayload),
111
+ });
112
+ return { payload: universalPayload, gasAmount, req };
113
+ }
114
+ else {
115
+ if (!fundsValue)
116
+ throw new Error('fundsValue property must not be empty');
117
+ const multicallData = (0, payload_builders_1.buildExecuteMulticall)({
118
+ execute,
119
+ ueaAddress,
120
+ });
121
+ (0, context_1.printLog)(ctx, 'sendFunds — execute params: ' + JSON.stringify({
122
+ to: execute.to,
123
+ value: (_l = (_k = execute.value) === null || _k === void 0 ? void 0 : _k.toString()) !== null && _l !== void 0 ? _l : 'undefined',
124
+ data: (_m = execute.data) !== null && _m !== void 0 ? _m : 'undefined',
125
+ fundsAmount: (_p = (_o = execute.funds) === null || _o === void 0 ? void 0 : _o.amount) === null || _p === void 0 ? void 0 : _p.toString(),
126
+ fundsToken: (_r = (_q = execute.funds) === null || _q === void 0 ? void 0 : _q.token) === null || _r === void 0 ? void 0 : _r.symbol,
127
+ tokenMechanism: (_t = (_s = execute.funds) === null || _s === void 0 ? void 0 : _s.token) === null || _t === void 0 ? void 0 : _t.mechanism,
128
+ tokenAddress: (_v = (_u = execute.funds) === null || _u === void 0 ? void 0 : _u.token) === null || _v === void 0 ? void 0 : _v.address,
129
+ gasLimit: (_x = (_w = execute.gasLimit) === null || _w === void 0 ? void 0 : _w.toString()) !== null && _x !== void 0 ? _x : 'undefined',
130
+ }, null, 2));
131
+ (0, context_1.printLog)(ctx, 'sendFunds — multicallData: ' + JSON.stringify(multicallData, (_, v) => typeof v === 'bigint' ? v.toString() : v, 2) + ' (length: ' + multicallData.length + ')');
132
+ const multicallPayloadData = buildMulticallPayloadData(ctx, execute.to, multicallData);
133
+ (0, context_1.printLog)(ctx, 'sendFunds — multicallPayloadData (first 66 chars): ' + multicallPayloadData.slice(0, 66) + ' (full length: ' + multicallPayloadData.length + ')');
134
+ const universalPayload = {
135
+ to: viem_1.zeroAddress,
136
+ value: (_y = execute.value) !== null && _y !== void 0 ? _y : BigInt(0),
137
+ data: multicallPayloadData,
138
+ gasLimit: gasEstimate,
139
+ maxFeePerGas: execute.maxFeePerGas || BigInt(1e10),
140
+ maxPriorityFeePerGas: execute.maxPriorityFeePerGas || BigInt(0),
141
+ nonce,
142
+ deadline: execute.deadline || BigInt(9999999999),
143
+ vType: tx_1.VerificationType.universalTxVerification,
144
+ };
145
+ (0, context_1.printLog)(ctx, 'sendFunds — universalPayload (pre-encode): ' + JSON.stringify({
146
+ to: viem_1.zeroAddress,
147
+ value: ((_z = execute.value) !== null && _z !== void 0 ? _z : BigInt(0)).toString(),
148
+ data: multicallPayloadData,
149
+ gasLimit: gasEstimate.toString(),
150
+ maxFeePerGas: (execute.maxFeePerGas || BigInt(1e10)).toString(),
151
+ maxPriorityFeePerGas: (execute.maxPriorityFeePerGas || BigInt(0)).toString(),
152
+ nonce: nonce.toString(),
153
+ deadline: (execute.deadline || BigInt(9999999999)).toString(),
154
+ }, null, 2));
155
+ let tokenAddress = (_1 = (_0 = execute.funds) === null || _0 === void 0 ? void 0 : _0.token) === null || _1 === void 0 ? void 0 : _1.address;
156
+ if (((_3 = (_2 = execute.funds) === null || _2 === void 0 ? void 0 : _2.token) === null || _3 === void 0 ? void 0 : _3.address) ===
157
+ '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee') {
158
+ tokenAddress = viem_1.zeroAddress;
159
+ }
160
+ const encodedPayload = (0, signing_1.encodeUniversalPayload)(universalPayload);
161
+ (0, context_1.printLog)(ctx, 'sendFunds — encodedPayload (first 66 chars): ' + encodedPayload.slice(0, 66) + ' (full length: ' + encodedPayload.length + ')');
162
+ const req = buildUniversalTxRequest(ctx.universalSigner.account.address, {
163
+ recipient: viem_1.zeroAddress,
164
+ token: tokenAddress,
165
+ amount: (_4 = execute.funds) === null || _4 === void 0 ? void 0 : _4.amount,
166
+ payload: encodedPayload,
167
+ });
168
+ (0, context_1.printLog)(ctx, 'sendFunds — final req: ' + JSON.stringify({
169
+ recipient: viem_1.zeroAddress,
170
+ token: tokenAddress,
171
+ amount: (_6 = (_5 = execute.funds) === null || _5 === void 0 ? void 0 : _5.amount) === null || _6 === void 0 ? void 0 : _6.toString(),
172
+ payloadLength: encodedPayload.length,
173
+ }, null, 2));
174
+ return { payload: universalPayload, gasAmount, req };
175
+ }
176
+ });
177
+ }
178
+ //# sourceMappingURL=payload-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-builder.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/lib/orchestrator/internals/payload-builder.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA0BH,0DA0BC;AAMD,8DAgDC;AASD,8DAsIC;;AAvPD,+BAMc;AACd,8CAAyD;AAMzD,0DAA4D;AAE5D,uCAAqC;AACrC,uCAAqD;AACrD,uCAAmD;AACnD,+CAAmD;AAEnD,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E,SAAgB,uBAAuB,CACrC,aAA4B,EAC5B,EACE,SAAS,EACT,KAAK,EACL,MAAM,EACN,OAAO,GAMR;IAED,MAAM,iBAAiB,GAAG;QACxB,aAAa,EAAE,aAAa;QAC5B,SAAS,EAAE,IAAqB;KACjC,CAAC;IACF,OAAO;QACL,SAAS;QACT,KAAK;QACL,MAAM;QACN,OAAO;QACP,iBAAiB;QACjB,aAAa,EAAE,IAAI;KACpB,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,SAAgB,yBAAyB,CACvC,GAAwB,EACxB,EAAiB,EACjB,IAAiB;IAEjB,IAAA,kBAAQ,EACN,GAAG,EACH,sCAAsC;QACpC,IAAI,CAAC,MAAM;QACX,UAAU;QACV,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAS,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAC7F,CAAC;IAEF,IAAI,CAAC,kCAAwB,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CACb,+GAA+G,CAChH,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC;QAClD,EAAE,EAAE,IAAA,iBAAU,EAAC,CAAC,CAAC,EAAE,CAAC;QACpB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAC;IAEJ,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,IAAA,gBAAS,EAAC,IAAA,cAAO,EAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CACxD,CAAC,EACD,EAAE,CACc,CAAC;IAEnB,8EAA8E;IAC9E,MAAM,YAAY,GAAG,IAAA,0BAAmB,EACtC;QACE;YACE,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACV,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC/B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;aAChC;SACF;KACF,EACD,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAkB,CAAC;AAC7D,CAAC;AAED,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E;;GAEG;AACH,SAAsB,yBAAyB,CAC7C,GAAwB,EACxB,OAAsB,EACtB,KAAa,EACb,IAAqC,EACrC,UAAmB;;;QAEnB,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAA,OAAO,CAAC,KAAK,mCAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAA,gCAAkB,EAAC,GAAG,CAAC,CAAC;QAE3C,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,CAAA;gBACvB,MAAM,IAAI,KAAK,CAAC,WAAW,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,EAAE,CAAC,CAAC;YAErD,MAAM,aAAa,GAAgB,IAAA,wCAAqB,EAAC;gBACvD,OAAO;gBACP,UAAU;aACX,CAAC,CAAC;YACH,MAAM,gBAAgB,GAAG;gBACvB,EAAE,EAAE,kBAAW;gBACf,KAAK,EAAE,MAAA,OAAO,CAAC,KAAK,mCAAI,MAAM,CAAC,CAAC,CAAC;gBACjC,IAAI,EAAE,yBAAyB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC;gBAC/D,QAAQ,EAAE,WAAW;gBACrB,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC;gBAClD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,MAAM,CAAC,CAAC,CAAC;gBAC/D,KAAK;gBACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC;gBAChD,KAAK,EAAE,qBAAgB,CAAC,uBAAuB;aAC5B,CAAC;YAEtB,IAAA,kBAAQ,EAAC,GAAG,EAAE,qBAAqB,GAAG,gBAAgB,CAAC,CAAC;YAExD,IAAI,YAAY,GAAG,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,0CAAE,OAAwB,CAAC;YAClE,IACE,CAAA,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,0CAAE,OAAO;gBAC7B,4CAA4C,EAC5C,CAAC;gBACD,YAAY,GAAG,kBAAW,CAAC;YAC7B,CAAC;YAED,MAAM,GAAG,GAAG,uBAAuB,CACjC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,OAAwB,EACpD;gBACE,SAAS,EAAE,kBAAW;gBACtB,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,MAAgB;gBACvC,OAAO,EAAE,IAAA,gCAAsB,EAAC,gBAAgB,CAAC;aAClD,CACF,CAAC;YAEF,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC1E,MAAM,aAAa,GAAgB,IAAA,wCAAqB,EAAC;gBACvD,OAAO;gBACP,UAAU;aACX,CAAC,CAAC;YAEH,IAAA,kBAAQ,EAAC,GAAG,EAAE,8BAA8B,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC5D,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,KAAK,EAAE,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,QAAQ,EAAE,mCAAI,WAAW;gBAC/C,IAAI,EAAE,MAAA,OAAO,CAAC,IAAI,mCAAI,WAAW;gBACjC,WAAW,EAAE,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,MAAM,0CAAE,QAAQ,EAAE;gBAC9C,UAAU,EAAE,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,0CAAE,MAAM;gBACxC,cAAc,EAAE,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,0CAAE,SAAS;gBAC/C,YAAY,EAAE,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,0CAAE,OAAO;gBAC3C,QAAQ,EAAE,MAAA,MAAA,OAAO,CAAC,QAAQ,0CAAE,QAAQ,EAAE,mCAAI,WAAW;aACtD,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEb,IAAA,kBAAQ,EAAC,GAAG,EAAE,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAC1D,aAAa,EACb,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAClD,CAAC,CACF,GAAG,YAAY,GAAG,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;YAE/C,MAAM,oBAAoB,GACxB,yBAAyB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YAE5D,IAAA,kBAAQ,EAAC,GAAG,EAAE,qDAAqD,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,iBAAiB,GAAG,oBAAoB,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;YAEjK,MAAM,gBAAgB,GAAG;gBACvB,EAAE,EAAE,kBAAW;gBACf,KAAK,EAAE,MAAA,OAAO,CAAC,KAAK,mCAAI,MAAM,CAAC,CAAC,CAAC;gBACjC,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,WAAW;gBACrB,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC;gBAClD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,MAAM,CAAC,CAAC,CAAC;gBAC/D,KAAK;gBACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC;gBAChD,KAAK,EAAE,qBAAgB,CAAC,uBAAuB;aAC5B,CAAC;YAEtB,IAAA,kBAAQ,EAAC,GAAG,EAAE,6CAA6C,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC3E,EAAE,EAAE,kBAAW;gBACf,KAAK,EAAE,CAAC,MAAA,OAAO,CAAC,KAAK,mCAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC9C,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE;gBAChC,YAAY,EAAE,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC/D,oBAAoB,EAAE,CAAC,OAAO,CAAC,oBAAoB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;gBAC5E,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;gBACvB,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC9D,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEb,IAAI,YAAY,GAAG,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,0CAAE,OAAwB,CAAC;YAClE,IACE,CAAA,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,0CAAE,OAAO;gBAC7B,4CAA4C,EAC5C,CAAC;gBACD,YAAY,GAAG,kBAAW,CAAC;YAC7B,CAAC;YAED,MAAM,cAAc,GAAG,IAAA,gCAAsB,EAAC,gBAAgB,CAAC,CAAC;YAChE,IAAA,kBAAQ,EAAC,GAAG,EAAE,+CAA+C,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,iBAAiB,GAAG,cAAc,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;YAE/I,MAAM,GAAG,GAAG,uBAAuB,CACjC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,OAAwB,EACpD;gBACE,SAAS,EAAE,kBAAW;gBACtB,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,MAAgB;gBACvC,OAAO,EAAE,cAAc;aACxB,CACF,CAAC;YAEF,IAAA,kBAAQ,EAAC,GAAG,EAAE,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC;gBACvD,SAAS,EAAE,kBAAW;gBACtB,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,MAAC,MAAA,OAAO,CAAC,KAAK,0CAAE,MAAiB,0CAAE,QAAQ,EAAE;gBACrD,aAAa,EAAE,cAAc,CAAC,MAAM;aACrC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEb,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;QACvD,CAAC;IACH,CAAC;CAAA"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Push Chain transaction broadcasting — extracted from Orchestrator.
3
+ *
4
+ * sendPushTx: Direct EVM tx on Push Chain (single or multicall batch)
5
+ * sendUniversalTx: Cosmos-wrapped EVM tx via PushClient (gasless path)
6
+ */
7
+ import type { UniversalTx } from '../../generated/uexecutor/v1/types';
8
+ import { ProgressEvent } from '../../progress-hook/progress-hook.types';
9
+ import { UniversalPayload } from '../../generated/v1/tx';
10
+ import type { TxResponse } from '../../vm-client/vm-client.types';
11
+ import type { ExecuteParams, UniversalTxResponse } from '../orchestrator.types';
12
+ import type { OrchestratorContext } from './context';
13
+ type TransformToResponseFn = (tx: TxResponse, eventBuffer: ProgressEvent[]) => Promise<UniversalTxResponse>;
14
+ /**
15
+ * Sends an EVM transaction directly on Push Chain.
16
+ * Only used when universal signer is on Push Chain.
17
+ *
18
+ * For multicall arrays: executes each call as a separate transaction with
19
+ * local nonce management and per-tx receipt confirmation.
20
+ */
21
+ export declare function sendPushTx(ctx: OrchestratorContext, execute: ExecuteParams, eventBuffer: ProgressEvent[], transformFn: TransformToResponseFn): Promise<UniversalTxResponse>;
22
+ /**
23
+ * Sends a Cosmos tx to Push Chain (gasless) to execute user intent.
24
+ * Wraps the EVM payload in a MsgExecutePayload Cosmos message.
25
+ */
26
+ export declare function sendUniversalTx(ctx: OrchestratorContext, isUEADeployed: boolean, feeLockTxHash: string | undefined, universalPayload: UniversalPayload | undefined, verificationData: `0x${string}` | undefined, eventBuffer: ProgressEvent[], transformFn: TransformToResponseFn): Promise<UniversalTxResponse[]>;
27
+ /**
28
+ * Validates Push Chain tx response, extracts last pcTx, fetches EVM tx,
29
+ * and transforms to UniversalTxResponse.
30
+ */
31
+ export declare function extractPcTxAndTransform(ctx: OrchestratorContext, pushChainUniversalTx: UniversalTx | undefined, gatewayTxHash: string, eventBuffer: ProgressEvent[], label: string, transformFn: TransformToResponseFn): Promise<UniversalTxResponse>;
32
+ export {};
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ /**
3
+ * Push Chain transaction broadcasting — extracted from Orchestrator.
4
+ *
5
+ * sendPushTx: Direct EVM tx on Push Chain (single or multicall batch)
6
+ * sendUniversalTx: Cosmos-wrapped EVM tx via PushClient (gasless path)
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.sendPushTx = sendPushTx;
10
+ exports.sendUniversalTx = sendUniversalTx;
11
+ exports.extractPcTxAndTransform = extractPcTxAndTransform;
12
+ const tslib_1 = require("tslib");
13
+ const bs58_1 = require("../../internal/bs58");
14
+ const viem_1 = require("viem");
15
+ const chain_1 = require("../../constants/chain");
16
+ const enums_1 = require("../../constants/enums");
17
+ const context_1 = require("./context");
18
+ // ============================================================================
19
+ // sendPushTx
20
+ // ============================================================================
21
+ /**
22
+ * Sends an EVM transaction directly on Push Chain.
23
+ * Only used when universal signer is on Push Chain.
24
+ *
25
+ * For multicall arrays: executes each call as a separate transaction with
26
+ * local nonce management and per-tx receipt confirmation.
27
+ */
28
+ function sendPushTx(ctx, execute, eventBuffer, transformFn) {
29
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
30
+ if (Array.isArray(execute.data)) {
31
+ const PUSH_CHAIN_GAS_LIMIT = BigInt(500000);
32
+ const MAX_NONCE_RETRIES = 3;
33
+ let nonce = yield ctx.pushClient.publicClient.getTransactionCount({
34
+ address: ctx.universalSigner.account.address,
35
+ blockTag: 'pending',
36
+ });
37
+ let lastTxHash = '0x';
38
+ const calls = execute.data;
39
+ for (let i = 0; i < calls.length; i++) {
40
+ const call = calls[i];
41
+ let txSent = false;
42
+ for (let retry = 0; retry < MAX_NONCE_RETRIES && !txSent; retry++) {
43
+ try {
44
+ (0, context_1.printLog)(ctx, `sendPushTx — executing multicall operation ${i + 1}/${calls.length} to: ${call.to} (nonce: ${nonce})`);
45
+ lastTxHash = yield ctx.pushClient.sendTransaction({
46
+ to: call.to,
47
+ data: (call.data || '0x'),
48
+ value: call.value,
49
+ signer: ctx.universalSigner,
50
+ nonce,
51
+ gas: PUSH_CHAIN_GAS_LIMIT,
52
+ });
53
+ txSent = true;
54
+ }
55
+ catch (err) {
56
+ const msg = (err === null || err === void 0 ? void 0 : err.message) || (err === null || err === void 0 ? void 0 : err.details) || '';
57
+ if (msg.includes('invalid nonce') || msg.includes('invalid sequence')) {
58
+ (0, context_1.printLog)(ctx, `sendPushTx — nonce mismatch on operation ${i + 1}/${calls.length} (retry ${retry + 1}/${MAX_NONCE_RETRIES}), re-fetching nonce`);
59
+ nonce = yield ctx.pushClient.publicClient.getTransactionCount({
60
+ address: ctx.universalSigner.account.address,
61
+ blockTag: 'pending',
62
+ });
63
+ }
64
+ else {
65
+ throw err;
66
+ }
67
+ }
68
+ }
69
+ if (!txSent) {
70
+ throw new Error(`sendPushTx — multicall operation ${i + 1}/${calls.length} failed after ${MAX_NONCE_RETRIES} nonce retries`);
71
+ }
72
+ const receipt = yield ctx.pushClient.publicClient.waitForTransactionReceipt({
73
+ hash: lastTxHash,
74
+ });
75
+ if (receipt.status === 'reverted') {
76
+ throw new Error(`sendPushTx — multicall operation ${i + 1}/${calls.length} reverted (to: ${call.to}, txHash: ${lastTxHash})`);
77
+ }
78
+ (0, context_1.printLog)(ctx, `sendPushTx — operation ${i + 1}/${calls.length} confirmed in block ${receipt.blockNumber}`);
79
+ nonce++;
80
+ }
81
+ const txResponse = yield ctx.pushClient.getTransaction(lastTxHash);
82
+ return yield transformFn(txResponse, eventBuffer);
83
+ }
84
+ const txHash = yield ctx.pushClient.sendTransaction({
85
+ to: execute.to,
86
+ data: (execute.data || '0x'),
87
+ value: execute.value,
88
+ signer: ctx.universalSigner,
89
+ });
90
+ const txResponse = yield ctx.pushClient.getTransaction(txHash);
91
+ return yield transformFn(txResponse, eventBuffer);
92
+ });
93
+ }
94
+ // ============================================================================
95
+ // sendUniversalTx
96
+ // ============================================================================
97
+ /**
98
+ * Sends a Cosmos tx to Push Chain (gasless) to execute user intent.
99
+ * Wraps the EVM payload in a MsgExecutePayload Cosmos message.
100
+ */
101
+ function sendUniversalTx(ctx, isUEADeployed, feeLockTxHash, universalPayload, verificationData, eventBuffer, transformFn) {
102
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
103
+ var _a, _b, _c, _d;
104
+ const { chain, address } = ctx.universalSigner.account;
105
+ const { vm, chainId } = chain_1.CHAIN_INFO[chain];
106
+ const universalAccountId = {
107
+ chainNamespace: chain_1.VM_NAMESPACE[vm],
108
+ chainId: chainId,
109
+ owner: vm === enums_1.VM.EVM
110
+ ? address
111
+ : vm === enums_1.VM.SVM
112
+ ? (0, viem_1.bytesToHex)(new Uint8Array(bs58_1.bs58.decode(address)))
113
+ : address,
114
+ };
115
+ const { cosmosAddress: signer } = ctx.pushClient.getSignerAddress();
116
+ const msgs = [];
117
+ if (universalPayload && verificationData) {
118
+ msgs.push(ctx.pushClient.createMsgExecutePayload({
119
+ signer,
120
+ universalAccountId,
121
+ universalPayload,
122
+ verificationData,
123
+ }));
124
+ }
125
+ const txBody = yield ctx.pushClient.createCosmosTxBody(msgs);
126
+ const txRaw = yield ctx.pushClient.signCosmosTx(txBody);
127
+ const tx = yield ctx.pushClient.broadcastCosmosTx(txRaw);
128
+ if (tx.code !== 0) {
129
+ const failedEthTxHashes = (_b = (_a = tx.events) === null || _a === void 0 ? void 0 : _a.filter((e) => e.type === 'ethereum_tx').flatMap((e) => {
130
+ var _a;
131
+ return (_a = e.attributes) === null || _a === void 0 ? void 0 : _a.filter((attr) => attr.key === 'ethereumTxHash').map((attr) => attr.value);
132
+ })) !== null && _b !== void 0 ? _b : [];
133
+ const failureSummary = [
134
+ `PUSH CHAIN TRANSACTION FAILED`,
135
+ `Cosmos TX Hash: ${tx.transactionHash}`,
136
+ `Block Height: ${tx.height}, TX Code: ${tx.code} (error)`,
137
+ `Gas Used: ${tx.gasUsed}, Gas Wanted: ${tx.gasWanted}`,
138
+ ...(failedEthTxHashes.length > 0 ? [`Ethereum TX Hash(es): ${failedEthTxHashes.join(', ')}`] : []),
139
+ `Error: ${tx.rawLog}`,
140
+ ].join(' | ');
141
+ (0, context_1.printLog)(ctx, failureSummary);
142
+ throw new Error(tx.rawLog);
143
+ }
144
+ const ethTxHashes = (_d = (_c = tx.events) === null || _c === void 0 ? void 0 : _c.filter((e) => e.type === 'ethereum_tx').flatMap((e) => {
145
+ var _a;
146
+ return (_a = e.attributes) === null || _a === void 0 ? void 0 : _a.filter((attr) => attr.key === 'ethereumTxHash').map((attr) => attr.value);
147
+ })) !== null && _d !== void 0 ? _d : [];
148
+ if (ethTxHashes.length === 0) {
149
+ throw new Error('No ethereumTxHash found in transaction events');
150
+ }
151
+ const evmTxs = yield Promise.all(ethTxHashes.map((hash) => tslib_1.__awaiter(this, void 0, void 0, function* () {
152
+ return yield ctx.pushClient.getTransaction(hash);
153
+ })));
154
+ const responses = yield Promise.all(evmTxs.map((tx, index) => transformFn(tx, index === evmTxs.length - 1 ? eventBuffer : [])));
155
+ return responses;
156
+ });
157
+ }
158
+ // ============================================================================
159
+ // extractPcTxAndTransform
160
+ // ============================================================================
161
+ /**
162
+ * Validates Push Chain tx response, extracts last pcTx, fetches EVM tx,
163
+ * and transforms to UniversalTxResponse.
164
+ */
165
+ function extractPcTxAndTransform(ctx, pushChainUniversalTx, gatewayTxHash, eventBuffer, label, transformFn) {
166
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
167
+ var _a;
168
+ if (!((_a = pushChainUniversalTx === null || pushChainUniversalTx === void 0 ? void 0 : pushChainUniversalTx.pcTx) === null || _a === void 0 ? void 0 : _a.length)) {
169
+ throw new Error(`Failed to retrieve Push Chain transaction status for gateway tx: ${gatewayTxHash}. ` +
170
+ `The transaction may have failed on Push Chain or not been indexed yet.`);
171
+ }
172
+ const lastPcTransaction = pushChainUniversalTx.pcTx.at(-1);
173
+ (0, context_1.printLog)(ctx, `${label} — pcTx: ` + JSON.stringify(pushChainUniversalTx.pcTx.map((p) => ({ txHash: p.txHash, status: p.status, errorMsg: p.errorMsg })), null, 2));
174
+ (0, context_1.printLog)(ctx, `${label} — using lastPcTransaction: ` + JSON.stringify(lastPcTransaction, null, 2));
175
+ if (!(lastPcTransaction === null || lastPcTransaction === void 0 ? void 0 : lastPcTransaction.txHash)) {
176
+ const failedPcTx = pushChainUniversalTx.pcTx.find((pcTx) => pcTx.status === 'FAILED' && pcTx.errorMsg);
177
+ const errorDetails = (failedPcTx === null || failedPcTx === void 0 ? void 0 : failedPcTx.errorMsg) ? `: ${failedPcTx.errorMsg}` : '';
178
+ throw new Error(`No transaction hash found in Push Chain response for gateway tx: ${gatewayTxHash}${errorDetails}`);
179
+ }
180
+ const tx = yield ctx.pushClient.getTransaction(lastPcTransaction.txHash);
181
+ return transformFn(tx, eventBuffer);
182
+ });
183
+ }
184
+ //# sourceMappingURL=push-chain-tx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-chain-tx.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/lib/orchestrator/internals/push-chain-tx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Uniswap V3 exact-output quoting — extracted from Orchestrator.
3
+ */
4
+ import { ConversionQuote, MoveableToken, PayableToken } from '../../constants/tokens';
5
+ import type { OrchestratorContext } from './context';
6
+ export declare function quoteExactOutput(ctx: OrchestratorContext, amountOut: bigint, { from, to, }: {
7
+ from: PayableToken | undefined;
8
+ to: MoveableToken | undefined;
9
+ }): Promise<ConversionQuote>;
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ /**
3
+ * Uniswap V3 exact-output quoting — extracted from Orchestrator.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.quoteExactOutput = quoteExactOutput;
7
+ const tslib_1 = require("tslib");
8
+ const viem_1 = require("viem");
9
+ const chain_1 = require("../../constants/chain");
10
+ const enums_1 = require("../../constants/enums");
11
+ const utils_1 = require("../../utils");
12
+ const evm_client_1 = require("../../vm-client/evm-client");
13
+ function quoteExactOutput(ctx_1, amountOut_1, _a) {
14
+ return tslib_1.__awaiter(this, arguments, void 0, function* (ctx, amountOut, { from, to, }) {
15
+ var _b, _c, _d;
16
+ const originChain = ctx.universalSigner.account.chain;
17
+ if (originChain !== enums_1.CHAIN.ETHEREUM_MAINNET &&
18
+ originChain !== enums_1.CHAIN.ETHEREUM_SEPOLIA) {
19
+ throw new Error('Exact-output quoting is only supported on Ethereum Mainnet and Sepolia for now');
20
+ }
21
+ if (!from)
22
+ throw new Error('from token is required');
23
+ if (!to)
24
+ throw new Error('to token is required');
25
+ const rpcUrls = ctx.rpcUrls[originChain] || chain_1.CHAIN_INFO[originChain].defaultRPC;
26
+ const evm = new evm_client_1.EvmClient({ rpcUrls });
27
+ const factoryFromConfig = (_b = chain_1.CHAIN_INFO[originChain].dex) === null || _b === void 0 ? void 0 : _b.uniV3Factory;
28
+ const quoterFromConfig = (_c = chain_1.CHAIN_INFO[originChain].dex) === null || _c === void 0 ? void 0 : _c.uniV3QuoterV2;
29
+ if (!factoryFromConfig || !quoterFromConfig) {
30
+ throw new Error('Uniswap V3 addresses not configured for this chain');
31
+ }
32
+ const UNISWAP_V3_FACTORY = factoryFromConfig;
33
+ const UNISWAP_V3_QUOTER_V2 = quoterFromConfig;
34
+ const factoryAbi = (0, viem_1.parseAbi)([
35
+ 'function getPool(address tokenA, address tokenB, uint24 fee) view returns (address)',
36
+ ]);
37
+ const quoterAbi = (0, viem_1.parseAbi)([
38
+ 'function quoteExactOutputSingle((address tokenIn, address tokenOut, uint256 amount, uint24 fee, uint160 sqrtPriceLimitX96) params) returns (uint256 amountIn, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)',
39
+ ]);
40
+ const poolAbi = (0, viem_1.parseAbi)([
41
+ 'function liquidity() view returns (uint128)',
42
+ ]);
43
+ const feeTiers = [100, 500, 3000, 10000];
44
+ let bestAmountIn = null;
45
+ let bestFee = null;
46
+ for (const fee of feeTiers) {
47
+ const poolAddress = yield evm.readContract({
48
+ abi: factoryAbi,
49
+ address: UNISWAP_V3_FACTORY,
50
+ functionName: 'getPool',
51
+ args: [from.address, to.address, fee],
52
+ });
53
+ const isZero = !poolAddress ||
54
+ poolAddress.toLowerCase() ===
55
+ '0x0000000000000000000000000000000000000000';
56
+ if (isZero)
57
+ continue;
58
+ try {
59
+ const liquidity = yield evm.readContract({
60
+ abi: poolAbi,
61
+ address: poolAddress,
62
+ functionName: 'liquidity',
63
+ args: [],
64
+ });
65
+ if (!liquidity || liquidity === BigInt(0))
66
+ continue;
67
+ }
68
+ catch (_e) {
69
+ continue;
70
+ }
71
+ try {
72
+ const result = yield evm.readContract({
73
+ abi: quoterAbi,
74
+ address: UNISWAP_V3_QUOTER_V2,
75
+ functionName: 'quoteExactOutputSingle',
76
+ args: [
77
+ {
78
+ tokenIn: from.address,
79
+ tokenOut: to.address,
80
+ amount: amountOut,
81
+ fee,
82
+ sqrtPriceLimitX96: BigInt(0),
83
+ },
84
+ ],
85
+ });
86
+ const amountIn = (_d = result === null || result === void 0 ? void 0 : result[0]) !== null && _d !== void 0 ? _d : BigInt(0);
87
+ if (amountIn === BigInt(0))
88
+ continue;
89
+ if (bestAmountIn === null || amountIn < bestAmountIn) {
90
+ bestAmountIn = amountIn;
91
+ bestFee = fee;
92
+ }
93
+ }
94
+ catch (_f) {
95
+ // try next fee
96
+ }
97
+ }
98
+ if (bestAmountIn === null || bestFee === null) {
99
+ throw new Error('No direct Uniswap V3 pool found for the given token pair on common fee tiers');
100
+ }
101
+ const amountInBig = BigInt(bestAmountIn);
102
+ const amountInHuman = parseFloat(utils_1.Utils.helpers.formatUnits(amountInBig, { decimals: from.decimals }));
103
+ const amountOutHuman = parseFloat(utils_1.Utils.helpers.formatUnits(amountOut, { decimals: to.decimals }));
104
+ const rate = amountInHuman > 0 ? amountOutHuman / amountInHuman : 0;
105
+ return {
106
+ amountIn: bestAmountIn.toString(),
107
+ amountOut: amountOut.toString(),
108
+ rate,
109
+ route: [from.symbol, to.symbol],
110
+ timestamp: Date.now(),
111
+ };
112
+ });
113
+ }
114
+ //# sourceMappingURL=quote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quote.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/lib/orchestrator/internals/quote.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Rescue funds flow — extracted from Orchestrator.rescueFunds.
3
+ *
4
+ * Recovers stuck tokens from failed inbound transactions by building
5
+ * a rescue multicall and executing it through the standard execute() flow.
6
+ */
7
+ import type { ExecuteParams, RescueFundsParams, UniversalTxResponse } from '../orchestrator.types';
8
+ import type { OrchestratorContext } from './context';
9
+ /**
10
+ * Rescue stuck funds on a source chain.
11
+ * When a CEA-to-Push inbound transaction fails, tokens get locked in the
12
+ * Vault on the source chain. This triggers a manual revert via TSS to
13
+ * release those funds back to the user.
14
+ *
15
+ * @param ctx - Orchestrator context
16
+ * @param params - RescueFundsParams with universalTxId and prc20 token
17
+ * @param executeFn - The Orchestrator.execute() method (avoids circular dep)
18
+ * @returns Transaction response
19
+ */
20
+ export declare function rescueFunds(ctx: OrchestratorContext, params: RescueFundsParams, executeFn: (params: ExecuteParams) => Promise<UniversalTxResponse>): Promise<UniversalTxResponse>;