@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.
- package/package.json +30 -6
- package/src/lib/constants/abi/prc20.evm.d.ts +22 -2
- package/src/lib/constants/abi/prc20.evm.js +11 -3
- package/src/lib/constants/abi/prc20.evm.js.map +1 -1
- package/src/lib/constants/abi/universalGatewayPC.evm.d.ts +59 -0
- package/src/lib/constants/abi/universalGatewayPC.evm.js +26 -0
- package/src/lib/constants/abi/universalGatewayPC.evm.js.map +1 -1
- package/src/lib/constants/chain.d.ts +4 -0
- package/src/lib/constants/chain.js +6 -2
- package/src/lib/constants/chain.js.map +1 -1
- package/src/lib/index.d.ts +2 -2
- package/src/lib/index.js.map +1 -1
- package/src/lib/internal/bs58.d.ts +2 -0
- package/src/lib/internal/bs58.js +7 -0
- package/src/lib/internal/bs58.js.map +1 -0
- package/src/lib/orchestrator/cea-utils.d.ts +0 -9
- package/src/lib/orchestrator/cea-utils.js +15 -4
- package/src/lib/orchestrator/cea-utils.js.map +1 -1
- package/src/lib/orchestrator/internals/account-manager.d.ts +16 -0
- package/src/lib/orchestrator/internals/account-manager.js +191 -0
- package/src/lib/orchestrator/internals/account-manager.js.map +1 -0
- package/src/lib/orchestrator/internals/cascade.d.ts +23 -0
- package/src/lib/orchestrator/internals/cascade.js +945 -0
- package/src/lib/orchestrator/internals/cascade.js.map +1 -0
- package/src/lib/orchestrator/internals/confirmation.d.ts +9 -0
- package/src/lib/orchestrator/internals/confirmation.js +123 -0
- package/src/lib/orchestrator/internals/confirmation.js.map +1 -0
- package/src/lib/orchestrator/internals/context.d.ts +38 -0
- package/src/lib/orchestrator/internals/context.js +49 -0
- package/src/lib/orchestrator/internals/context.js.map +1 -0
- package/src/lib/orchestrator/internals/execute-funds-only.d.ts +11 -0
- package/src/lib/orchestrator/internals/execute-funds-only.js +219 -0
- package/src/lib/orchestrator/internals/execute-funds-only.js.map +1 -0
- package/src/lib/orchestrator/internals/execute-funds-payload.d.ts +11 -0
- package/src/lib/orchestrator/internals/execute-funds-payload.js +222 -0
- package/src/lib/orchestrator/internals/execute-funds-payload.js.map +1 -0
- package/src/lib/orchestrator/internals/execute-standard.d.ts +13 -0
- package/src/lib/orchestrator/internals/execute-standard.js +225 -0
- package/src/lib/orchestrator/internals/execute-standard.js.map +1 -0
- package/src/lib/orchestrator/internals/gas-calculator.d.ts +30 -0
- package/src/lib/orchestrator/internals/gas-calculator.js +283 -0
- package/src/lib/orchestrator/internals/gas-calculator.js.map +1 -0
- package/src/lib/orchestrator/internals/gateway-client.d.ts +24 -0
- package/src/lib/orchestrator/internals/gateway-client.js +191 -0
- package/src/lib/orchestrator/internals/gateway-client.js.map +1 -0
- package/src/lib/orchestrator/internals/helpers.d.ts +26 -0
- package/src/lib/orchestrator/internals/helpers.js +181 -0
- package/src/lib/orchestrator/internals/helpers.js.map +1 -0
- package/src/lib/orchestrator/internals/index.d.ts +24 -0
- package/src/lib/orchestrator/internals/index.js +132 -0
- package/src/lib/orchestrator/internals/index.js.map +1 -0
- package/src/lib/orchestrator/internals/outbound-sync.d.ts +49 -0
- package/src/lib/orchestrator/internals/outbound-sync.js +357 -0
- package/src/lib/orchestrator/internals/outbound-sync.js.map +1 -0
- package/src/lib/orchestrator/internals/outbound-tracker.d.ts +8 -0
- package/src/lib/orchestrator/internals/outbound-tracker.js +64 -0
- package/src/lib/orchestrator/internals/outbound-tracker.js.map +1 -0
- package/src/lib/orchestrator/internals/payload-builder.d.ts +24 -0
- package/src/lib/orchestrator/internals/payload-builder.js +178 -0
- package/src/lib/orchestrator/internals/payload-builder.js.map +1 -0
- package/src/lib/orchestrator/internals/push-chain-tx.d.ts +32 -0
- package/src/lib/orchestrator/internals/push-chain-tx.js +184 -0
- package/src/lib/orchestrator/internals/push-chain-tx.js.map +1 -0
- package/src/lib/orchestrator/internals/quote.d.ts +9 -0
- package/src/lib/orchestrator/internals/quote.js +114 -0
- package/src/lib/orchestrator/internals/quote.js.map +1 -0
- package/src/lib/orchestrator/internals/rescue.d.ts +20 -0
- package/src/lib/orchestrator/internals/rescue.js +112 -0
- package/src/lib/orchestrator/internals/rescue.js.map +1 -0
- package/src/lib/orchestrator/internals/response-builder.d.ts +26 -0
- package/src/lib/orchestrator/internals/response-builder.js +504 -0
- package/src/lib/orchestrator/internals/response-builder.js.map +1 -0
- package/src/lib/orchestrator/internals/route-handlers.d.ts +77 -0
- package/src/lib/orchestrator/internals/route-handlers.js +1203 -0
- package/src/lib/orchestrator/internals/route-handlers.js.map +1 -0
- package/src/lib/orchestrator/internals/signing.d.ts +27 -0
- package/src/lib/orchestrator/internals/signing.js +258 -0
- package/src/lib/orchestrator/internals/signing.js.map +1 -0
- package/src/lib/orchestrator/internals/svm-bridge.d.ts +21 -0
- package/src/lib/orchestrator/internals/svm-bridge.js +122 -0
- package/src/lib/orchestrator/internals/svm-bridge.js.map +1 -0
- package/src/lib/orchestrator/internals/svm-helpers.d.ts +35 -0
- package/src/lib/orchestrator/internals/svm-helpers.js +143 -0
- package/src/lib/orchestrator/internals/svm-helpers.js.map +1 -0
- package/src/lib/orchestrator/internals/tx-transformer.d.ts +12 -0
- package/src/lib/orchestrator/internals/tx-transformer.js +120 -0
- package/src/lib/orchestrator/internals/tx-transformer.js.map +1 -0
- package/src/lib/orchestrator/internals/uea-manager.d.ts +17 -0
- package/src/lib/orchestrator/internals/uea-manager.js +164 -0
- package/src/lib/orchestrator/internals/uea-manager.js.map +1 -0
- package/src/lib/orchestrator/orchestrator.d.ts +33 -431
- package/src/lib/orchestrator/orchestrator.js +124 -6125
- package/src/lib/orchestrator/orchestrator.js.map +1 -1
- package/src/lib/orchestrator/orchestrator.types.d.ts +11 -10
- package/src/lib/orchestrator/orchestrator.types.js.map +1 -1
- package/src/lib/orchestrator/payload-builders.js +34 -8
- package/src/lib/orchestrator/payload-builders.js.map +1 -1
- package/src/lib/price-fetch/price-fetch.js +19 -7
- package/src/lib/price-fetch/price-fetch.js.map +1 -1
- package/src/lib/push-chain/push-chain.d.ts +6 -0
- package/src/lib/push-chain/push-chain.js +10 -2
- package/src/lib/push-chain/push-chain.js.map +1 -1
- package/src/lib/push-client/push-client.d.ts +3 -0
- package/src/lib/push-client/push-client.js +21 -31
- package/src/lib/push-client/push-client.js.map +1 -1
- package/src/lib/universal/account/account.d.ts +35 -16
- package/src/lib/universal/account/account.js +298 -16
- package/src/lib/universal/account/account.js.map +1 -1
- package/src/lib/universal/signer/signer.d.ts +2 -3
- package/src/lib/universal/signer/signer.js +65 -115
- package/src/lib/universal/signer/signer.js.map +1 -1
- package/src/lib/universal/universal.types.d.ts +41 -0
- package/src/lib/utils.d.ts +7 -2
- package/src/lib/utils.js +65 -34
- package/src/lib/utils.js.map +1 -1
- package/src/lib/vm-client/evm-client.js +3 -11
- package/src/lib/vm-client/evm-client.js.map +1 -1
- package/src/lib/vm-client/svm-client.d.ts +0 -4
- package/src/lib/vm-client/svm-client.js +2 -8
- package/src/lib/vm-client/svm-client.js.map +1 -1
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SVM (Solana) specific helper functions extracted from Orchestrator.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildSvmUniversalTxRequest = buildSvmUniversalTxRequest;
|
|
7
|
+
exports.buildSvmUniversalTxRequestFromReq = buildSvmUniversalTxRequestFromReq;
|
|
8
|
+
exports.getSvmProtocolFee = getSvmProtocolFee;
|
|
9
|
+
exports.getSvmGatewayLogIndexFromTx = getSvmGatewayLogIndexFromTx;
|
|
10
|
+
const tslib_1 = require("tslib");
|
|
11
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
12
|
+
const viem_1 = require("viem");
|
|
13
|
+
const universalGatewayV0_json_1 = tslib_1.__importDefault(require("../../constants/abi/universalGatewayV0.json"));
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// SVM Request Builders
|
|
16
|
+
// ============================================================================
|
|
17
|
+
function buildSvmUniversalTxRequest({ recipient, token, amount, payload, revertRecipient, signatureData, }) {
|
|
18
|
+
const payloadBuf = typeof payload === 'string' && payload.startsWith('0x')
|
|
19
|
+
? (() => {
|
|
20
|
+
const hex = payload.slice(2);
|
|
21
|
+
if (!hex.length)
|
|
22
|
+
return Buffer.alloc(0);
|
|
23
|
+
const normalized = hex.length % 2 === 1 ? `0${hex}` : hex;
|
|
24
|
+
return Buffer.from(normalized, 'hex');
|
|
25
|
+
})()
|
|
26
|
+
: Buffer.from(payload);
|
|
27
|
+
let signatureBuf;
|
|
28
|
+
if (!signatureData) {
|
|
29
|
+
signatureBuf = Buffer.alloc(0);
|
|
30
|
+
}
|
|
31
|
+
else if (typeof signatureData === 'string' &&
|
|
32
|
+
signatureData.startsWith('0x')) {
|
|
33
|
+
const hex = signatureData.slice(2);
|
|
34
|
+
if (!hex.length) {
|
|
35
|
+
signatureBuf = Buffer.alloc(0);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
const normalized = hex.length % 2 === 1 ? `0${hex}` : hex;
|
|
39
|
+
signatureBuf = Buffer.from(normalized, 'hex');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
signatureBuf = Buffer.from(signatureData);
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
recipient,
|
|
47
|
+
token,
|
|
48
|
+
amount,
|
|
49
|
+
payload: payloadBuf,
|
|
50
|
+
revertRecipient,
|
|
51
|
+
signatureData: signatureBuf,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function buildSvmUniversalTxRequestFromReq(req, revertRecipient, signatureDataOverride) {
|
|
55
|
+
const recipientBytes = (0, viem_1.hexToBytes)(req.recipient);
|
|
56
|
+
const recipient = Array.from(recipientBytes.subarray(0, 20));
|
|
57
|
+
const tokenAddress = req.token;
|
|
58
|
+
let token;
|
|
59
|
+
if (tokenAddress === viem_1.zeroAddress || tokenAddress === 'solana-native') {
|
|
60
|
+
token = web3_js_1.PublicKey.default;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
if (!tokenAddress.startsWith('0x')) {
|
|
64
|
+
throw new Error('Unsupported token format for SVM UniversalTxRequest: ' + tokenAddress);
|
|
65
|
+
}
|
|
66
|
+
const token20 = (0, viem_1.hexToBytes)(tokenAddress);
|
|
67
|
+
const token32 = new Uint8Array(32);
|
|
68
|
+
token32.set(token20, 12);
|
|
69
|
+
token = new web3_js_1.PublicKey(token32);
|
|
70
|
+
}
|
|
71
|
+
return buildSvmUniversalTxRequest({
|
|
72
|
+
recipient,
|
|
73
|
+
token,
|
|
74
|
+
amount: req.amount,
|
|
75
|
+
payload: req.payload,
|
|
76
|
+
revertRecipient,
|
|
77
|
+
signatureData: signatureDataOverride !== null && signatureDataOverride !== void 0 ? signatureDataOverride : req.signatureData,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
// ============================================================================
|
|
81
|
+
// SVM Protocol Fee
|
|
82
|
+
// ============================================================================
|
|
83
|
+
function getSvmProtocolFee(svmClient, programId) {
|
|
84
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
var _a, _b, _c;
|
|
86
|
+
const [feeVaultPda] = web3_js_1.PublicKey.findProgramAddressSync([(0, viem_1.stringToBytes)('fee_vault')], programId);
|
|
87
|
+
try {
|
|
88
|
+
const feeVault = yield svmClient.readContract({
|
|
89
|
+
abi: universalGatewayV0_json_1.default,
|
|
90
|
+
address: universalGatewayV0_json_1.default.address,
|
|
91
|
+
functionName: 'feeVault',
|
|
92
|
+
args: [feeVaultPda.toBase58()],
|
|
93
|
+
});
|
|
94
|
+
const protocolFeeLamports = BigInt((_c = (_b = ((_a = feeVault.protocolFeeLamports) !== null && _a !== void 0 ? _a : feeVault.protocol_fee_lamports)) === null || _b === void 0 ? void 0 : _b.toString()) !== null && _c !== void 0 ? _c : '0');
|
|
95
|
+
return { feeVaultPda, protocolFeeLamports };
|
|
96
|
+
}
|
|
97
|
+
catch (_d) {
|
|
98
|
+
return { feeVaultPda, protocolFeeLamports: BigInt(0) };
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
// ============================================================================
|
|
103
|
+
// SVM Log Parsing
|
|
104
|
+
// ============================================================================
|
|
105
|
+
/** Anchor event discriminator for the SVM gateway's UniversalTxSent event */
|
|
106
|
+
const SVM_GATEWAY_EVENT_DISCRIMINATOR = '6c9ad829b5ea1d7c';
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// ============================================================================
|
|
109
|
+
function getSvmGatewayLogIndexFromTx(txResp) {
|
|
110
|
+
var _a;
|
|
111
|
+
const logs = (((_a = txResp === null || txResp === void 0 ? void 0 : txResp.meta) === null || _a === void 0 ? void 0 : _a.logMessages) || []);
|
|
112
|
+
if (!Array.isArray(logs) || logs.length === 0)
|
|
113
|
+
return 0;
|
|
114
|
+
const prefix = 'Program data: ';
|
|
115
|
+
let matchCount = 0;
|
|
116
|
+
let lastMatchIndex = -1;
|
|
117
|
+
for (let i = 0; i < logs.length; i++) {
|
|
118
|
+
const log = logs[i] || '';
|
|
119
|
+
if (!log.startsWith(prefix))
|
|
120
|
+
continue;
|
|
121
|
+
const base64Data = log.slice(prefix.length).trim();
|
|
122
|
+
let decoded = null;
|
|
123
|
+
try {
|
|
124
|
+
decoded = new Uint8Array(Buffer.from(base64Data, 'base64'));
|
|
125
|
+
}
|
|
126
|
+
catch (_b) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (!decoded || decoded.length < 8)
|
|
130
|
+
continue;
|
|
131
|
+
const discriminatorHex = (0, viem_1.bytesToHex)(decoded.slice(0, 8)).slice(2);
|
|
132
|
+
if (discriminatorHex === SVM_GATEWAY_EVENT_DISCRIMINATOR) {
|
|
133
|
+
matchCount++;
|
|
134
|
+
lastMatchIndex = i;
|
|
135
|
+
if (matchCount === 2)
|
|
136
|
+
return i;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (lastMatchIndex !== -1)
|
|
140
|
+
return lastMatchIndex;
|
|
141
|
+
return 0;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=svm-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svm-helpers.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/lib/orchestrator/internals/svm-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transaction response/receipt transformation and progress reconstruction,
|
|
3
|
+
* extracted from Orchestrator.
|
|
4
|
+
*/
|
|
5
|
+
import { TransactionReceipt } from 'viem';
|
|
6
|
+
import type { UniversalTxV2 } from '../../generated/uexecutor/v2/types';
|
|
7
|
+
import { ProgressEvent } from '../../progress-hook/progress-hook.types';
|
|
8
|
+
import { TransactionRoute } from '../route-detector';
|
|
9
|
+
import type { UniversalTxReceipt, UniversalTxResponse } from '../orchestrator.types';
|
|
10
|
+
export declare function transformToUniversalTxReceipt(receipt: TransactionReceipt, originalTxResponse: UniversalTxResponse): UniversalTxReceipt;
|
|
11
|
+
export declare function reconstructProgressEvents(universalTxResponse: UniversalTxResponse, universalTxData?: UniversalTxV2): ProgressEvent[];
|
|
12
|
+
export declare function detectRouteFromUniversalTxData(universalTxData: UniversalTxV2 | undefined): TransactionRoute | undefined;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Transaction response/receipt transformation and progress reconstruction,
|
|
4
|
+
* extracted from Orchestrator.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.transformToUniversalTxReceipt = transformToUniversalTxReceipt;
|
|
8
|
+
exports.reconstructProgressEvents = reconstructProgressEvents;
|
|
9
|
+
exports.detectRouteFromUniversalTxData = detectRouteFromUniversalTxData;
|
|
10
|
+
const tslib_1 = require("tslib");
|
|
11
|
+
const chain_1 = require("../../constants/chain");
|
|
12
|
+
const enums_1 = require("../../constants/enums");
|
|
13
|
+
const types_1 = require("../../generated/uexecutor/v1/types");
|
|
14
|
+
const progress_hook_1 = tslib_1.__importDefault(require("../../progress-hook/progress-hook"));
|
|
15
|
+
const progress_hook_types_1 = require("../../progress-hook/progress-hook.types");
|
|
16
|
+
const route_detector_1 = require("../route-detector");
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Receipt Transform
|
|
19
|
+
// ============================================================================
|
|
20
|
+
function transformToUniversalTxReceipt(receipt, originalTxResponse) {
|
|
21
|
+
return {
|
|
22
|
+
hash: receipt.transactionHash,
|
|
23
|
+
blockNumber: receipt.blockNumber,
|
|
24
|
+
blockHash: receipt.blockHash,
|
|
25
|
+
transactionIndex: receipt.transactionIndex,
|
|
26
|
+
from: originalTxResponse.from,
|
|
27
|
+
to: originalTxResponse.to,
|
|
28
|
+
contractAddress: receipt.contractAddress || null,
|
|
29
|
+
gasPrice: originalTxResponse.gasPrice || BigInt(0),
|
|
30
|
+
gasUsed: receipt.gasUsed,
|
|
31
|
+
cumulativeGasUsed: receipt.cumulativeGasUsed,
|
|
32
|
+
logs: receipt.logs || [],
|
|
33
|
+
logsBloom: receipt.logsBloom || '0x',
|
|
34
|
+
status: receipt.status === 'success' ? 1 : 0,
|
|
35
|
+
raw: originalTxResponse.raw || {
|
|
36
|
+
from: originalTxResponse.from,
|
|
37
|
+
to: originalTxResponse.to,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// ============================================================================
|
|
42
|
+
// Progress Event Reconstruction
|
|
43
|
+
// ============================================================================
|
|
44
|
+
function reconstructProgressEvents(universalTxResponse, universalTxData) {
|
|
45
|
+
var _a;
|
|
46
|
+
const events = [];
|
|
47
|
+
const originParts = universalTxResponse.origin.split(':');
|
|
48
|
+
const chainNamespace = originParts.length >= 2 ? `${originParts[0]}:${originParts[1]}` : originParts[0];
|
|
49
|
+
const originAddress = originParts.length >= 3 ? originParts[2] : universalTxResponse.from;
|
|
50
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_01](chainNamespace, originAddress));
|
|
51
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_02_01]());
|
|
52
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_02_02](universalTxResponse.gasLimit));
|
|
53
|
+
const pushChainIds = [
|
|
54
|
+
chain_1.CHAIN_INFO[enums_1.CHAIN.PUSH_MAINNET].chainId,
|
|
55
|
+
chain_1.CHAIN_INFO[enums_1.CHAIN.PUSH_TESTNET_DONUT].chainId,
|
|
56
|
+
chain_1.CHAIN_INFO[enums_1.CHAIN.PUSH_LOCALNET].chainId,
|
|
57
|
+
];
|
|
58
|
+
const isPushOrigin = pushChainIds.some((id) => chainNamespace.includes(`eip155:${id}`));
|
|
59
|
+
if (!isPushOrigin) {
|
|
60
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_03_01]());
|
|
61
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_03_02](universalTxResponse.from, true));
|
|
62
|
+
}
|
|
63
|
+
const inboundTx = universalTxData === null || universalTxData === void 0 ? void 0 : universalTxData.inboundTx;
|
|
64
|
+
const hasFundsFlow = inboundTx && BigInt(inboundTx.amount || '0') > BigInt(0);
|
|
65
|
+
if (!isPushOrigin) {
|
|
66
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_04_02]());
|
|
67
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_04_03]());
|
|
68
|
+
}
|
|
69
|
+
if (hasFundsFlow && inboundTx) {
|
|
70
|
+
const amount = BigInt(inboundTx.amount);
|
|
71
|
+
const decimals = 18;
|
|
72
|
+
const symbol = 'TOKEN';
|
|
73
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_06_01](amount, decimals, symbol));
|
|
74
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_06_02](inboundTx.txHash, amount, decimals, symbol));
|
|
75
|
+
const confirmations = 1;
|
|
76
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_06_03](confirmations));
|
|
77
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_06_03_02](confirmations, confirmations));
|
|
78
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_06_04]());
|
|
79
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_06_05]());
|
|
80
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_06_06](amount, decimals, symbol));
|
|
81
|
+
}
|
|
82
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_07]());
|
|
83
|
+
const pcTx = (_a = universalTxData === null || universalTxData === void 0 ? void 0 : universalTxData.pcTx) === null || _a === void 0 ? void 0 : _a[0];
|
|
84
|
+
const isOutboundFailed = (universalTxData === null || universalTxData === void 0 ? void 0 : universalTxData.universalStatus) === types_1.UniversalTxStatus.OUTBOUND_FAILED;
|
|
85
|
+
const isPcFailed = (pcTx === null || pcTx === void 0 ? void 0 : pcTx.status) === 'FAILED';
|
|
86
|
+
const isFailed = isPcFailed || isOutboundFailed;
|
|
87
|
+
if (isFailed) {
|
|
88
|
+
const errorMsg = isOutboundFailed
|
|
89
|
+
? 'Outbound transaction failed (status: OUTBOUND_FAILED)'
|
|
90
|
+
: ((pcTx === null || pcTx === void 0 ? void 0 : pcTx.errorMsg) || 'Unknown error');
|
|
91
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_99_02](errorMsg));
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
events.push(progress_hook_1.default[progress_hook_types_1.PROGRESS_HOOK.SEND_TX_99_01]([universalTxResponse]));
|
|
95
|
+
}
|
|
96
|
+
return events;
|
|
97
|
+
}
|
|
98
|
+
// ============================================================================
|
|
99
|
+
// Route Detection from V2 Data
|
|
100
|
+
// ============================================================================
|
|
101
|
+
function detectRouteFromUniversalTxData(universalTxData) {
|
|
102
|
+
if (!universalTxData)
|
|
103
|
+
return undefined;
|
|
104
|
+
const hasOutbound = universalTxData.outboundTx.length > 0;
|
|
105
|
+
const hasInbound = !!universalTxData.inboundTx;
|
|
106
|
+
const statusIndicatesOutbound = [
|
|
107
|
+
types_1.UniversalTxStatus.OUTBOUND_PENDING,
|
|
108
|
+
types_1.UniversalTxStatus.OUTBOUND_SUCCESS,
|
|
109
|
+
types_1.UniversalTxStatus.OUTBOUND_FAILED,
|
|
110
|
+
].includes(universalTxData.universalStatus);
|
|
111
|
+
if (hasOutbound || statusIndicatesOutbound) {
|
|
112
|
+
return hasInbound
|
|
113
|
+
? route_detector_1.TransactionRoute.CEA_TO_CEA
|
|
114
|
+
: route_detector_1.TransactionRoute.UOA_TO_CEA;
|
|
115
|
+
}
|
|
116
|
+
if (hasInbound)
|
|
117
|
+
return route_detector_1.TransactionRoute.CEA_TO_PUSH;
|
|
118
|
+
return route_detector_1.TransactionRoute.UOA_TO_PUSH;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=tx-transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx-transformer.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/lib/orchestrator/internals/tx-transformer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAgBH,sEAuBC;AAMD,8DA+EC;AAMD,wEAoBC;;AAnJD,iDAAmD;AACnD,iDAA8C;AAC9C,8DAAuE;AAEvE,8FAA+D;AAC/D,iFAAuF;AACvF,sDAAqD;AAGrD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,SAAgB,6BAA6B,CAC3C,OAA2B,EAC3B,kBAAuC;IAEvC,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,eAAe;QAC7B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,IAAI,EAAE,kBAAkB,CAAC,IAAI;QAC7B,EAAE,EAAE,kBAAkB,CAAC,EAAE;QACzB,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI;QAChD,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC;QAClD,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,GAAG,EAAE,kBAAkB,CAAC,GAAG,IAAI;YAC7B,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,EAAE,EAAE,kBAAkB,CAAC,EAAE;SAC1B;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E,SAAgB,yBAAyB,CACvC,mBAAwC,EACxC,eAA+B;;IAE/B,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,MAAM,cAAc,GAClB,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACnF,MAAM,aAAa,GACjB,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAEtE,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IACrF,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvF,MAAM,YAAY,GAAG;QACnB,kBAAU,CAAC,aAAK,CAAC,YAAY,CAAC,CAAC,OAAO;QACtC,kBAAU,CAAC,aAAK,CAAC,kBAAkB,CAAC,CAAC,OAAO;QAC5C,kBAAU,CAAC,aAAK,CAAC,aAAa,CAAC,CAAC,OAAO;KACxC,CAAC;IACF,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CACpC,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAChD,CAAC;IAEF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CACT,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,CACzC,mBAAmB,CAAC,IAAqB,EACzC,IAAI,CACL,CACF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,SAAS,CAAC;IAC7C,MAAM,YAAY,GAAG,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE9E,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,OAAO,CAAC;QAEvB,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACnF,MAAM,CAAC,IAAI,CACT,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CACxF,CAAC;QAEF,MAAM,aAAa,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;QAC1F,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAExD,MAAM,IAAI,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI,0CAAG,CAAC,CAAC,CAAC;IACxC,MAAM,gBAAgB,GACpB,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,eAAe,MAAK,yBAAiB,CAAC,eAAe,CAAC;IACzE,MAAM,UAAU,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,MAAK,QAAQ,CAAC;IAC7C,MAAM,QAAQ,GAAG,UAAU,IAAI,gBAAgB,CAAC;IAEhD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,gBAAgB;YAC/B,CAAC,CAAC,uDAAuD;YACzD,CAAC,CAAC,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,KAAI,eAAe,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,uBAAc,CAAC,mCAAa,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E,SAAgB,8BAA8B,CAC5C,eAA0C;IAE1C,IAAI,CAAC,eAAe;QAAE,OAAO,SAAS,CAAC;IAEvC,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC;IAC/C,MAAM,uBAAuB,GAAG;QAC9B,yBAAiB,CAAC,gBAAgB;QAClC,yBAAiB,CAAC,gBAAgB;QAClC,yBAAiB,CAAC,eAAe;KAClC,CAAC,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAE5C,IAAI,WAAW,IAAI,uBAAuB,EAAE,CAAC;QAC3C,OAAO,UAAU;YACf,CAAC,CAAC,iCAAgB,CAAC,UAAU;YAC7B,CAAC,CAAC,iCAAgB,CAAC,UAAU,CAAC;IAClC,CAAC;IACD,IAAI,UAAU;QAAE,OAAO,iCAAgB,CAAC,WAAW,CAAC;IACpD,OAAO,iCAAgB,CAAC,WAAW,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UEA (Universal Executor Account) lifecycle functions extracted from Orchestrator.
|
|
3
|
+
* Covers: compute, nonce, version, deployment status.
|
|
4
|
+
*/
|
|
5
|
+
import type { OrchestratorContext } from './context';
|
|
6
|
+
export declare function computeUEAOffchain(ctx: OrchestratorContext): `0x${string}`;
|
|
7
|
+
export declare function computeUEA(ctx: OrchestratorContext): Promise<{
|
|
8
|
+
address: `0x${string}`;
|
|
9
|
+
deployed: boolean;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function getUEANonce(ctx: OrchestratorContext, address: `0x${string}`): Promise<bigint>;
|
|
12
|
+
export declare function getUeaNonceForExecution(ctx: OrchestratorContext): Promise<bigint>;
|
|
13
|
+
export declare function getUeaStatusAndNonce(ctx: OrchestratorContext): Promise<{
|
|
14
|
+
deployed: boolean;
|
|
15
|
+
nonce: bigint;
|
|
16
|
+
}>;
|
|
17
|
+
export declare function fetchUEAVersion(ctx: OrchestratorContext): Promise<string>;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* UEA (Universal Executor Account) lifecycle functions extracted from Orchestrator.
|
|
4
|
+
* Covers: compute, nonce, version, deployment status.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.computeUEAOffchain = computeUEAOffchain;
|
|
8
|
+
exports.computeUEA = computeUEA;
|
|
9
|
+
exports.getUEANonce = getUEANonce;
|
|
10
|
+
exports.getUeaNonceForExecution = getUeaNonceForExecution;
|
|
11
|
+
exports.getUeaStatusAndNonce = getUeaStatusAndNonce;
|
|
12
|
+
exports.fetchUEAVersion = fetchUEAVersion;
|
|
13
|
+
const tslib_1 = require("tslib");
|
|
14
|
+
const bs58_1 = require("../../internal/bs58");
|
|
15
|
+
const viem_1 = require("viem");
|
|
16
|
+
const factoryV1_1 = require("../../constants/abi/factoryV1");
|
|
17
|
+
const uea_svm_1 = require("../../constants/abi/uea.svm");
|
|
18
|
+
const uea_evm_1 = require("../../constants/abi/uea.evm");
|
|
19
|
+
const chain_1 = require("../../constants/chain");
|
|
20
|
+
const enums_1 = require("../../constants/enums");
|
|
21
|
+
const helpers_1 = require("./helpers");
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Offline UEA Address Computation (CREATE2)
|
|
24
|
+
// ============================================================================
|
|
25
|
+
function computeUEAOffchain(ctx) {
|
|
26
|
+
const { chain, address } = ctx.universalSigner.account;
|
|
27
|
+
const { vm, chainId } = chain_1.CHAIN_INFO[chain];
|
|
28
|
+
if ((0, helpers_1.isPushChain)(chain)) {
|
|
29
|
+
return address;
|
|
30
|
+
}
|
|
31
|
+
let ownerKey;
|
|
32
|
+
if (vm === enums_1.VM.EVM) {
|
|
33
|
+
ownerKey = address;
|
|
34
|
+
}
|
|
35
|
+
else if (vm === enums_1.VM.SVM) {
|
|
36
|
+
ownerKey = (0, viem_1.bytesToHex)(new Uint8Array(bs58_1.bs58.decode(address)));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
throw new Error(`Unsupported VM type: ${vm}`);
|
|
40
|
+
}
|
|
41
|
+
const encodedAccountId = (0, viem_1.encodeAbiParameters)([
|
|
42
|
+
{
|
|
43
|
+
type: 'tuple',
|
|
44
|
+
components: [
|
|
45
|
+
{ name: 'chainNamespace', type: 'string' },
|
|
46
|
+
{ name: 'chainId', type: 'string' },
|
|
47
|
+
{ name: 'owner', type: 'bytes' },
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
], [{ chainNamespace: chain_1.VM_NAMESPACE[vm], chainId, owner: ownerKey }]);
|
|
51
|
+
const salt = (0, viem_1.keccak256)(encodedAccountId);
|
|
52
|
+
const minimalProxyRuntimeCode = ('0x3d602d80600a3d3981f3' +
|
|
53
|
+
'363d3d373d3d3d363d73' +
|
|
54
|
+
chain_1.UEA_PROXY[ctx.pushNetwork].toLowerCase().replace(/^0x/, '') +
|
|
55
|
+
'5af43d82803e903d91602b57fd5bf3');
|
|
56
|
+
const initCodeHash = (0, viem_1.keccak256)(minimalProxyRuntimeCode);
|
|
57
|
+
return (0, viem_1.getCreate2Address)({
|
|
58
|
+
from: ctx.pushClient.pushChainInfo.factoryAddress,
|
|
59
|
+
salt,
|
|
60
|
+
bytecodeHash: initCodeHash,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
// ============================================================================
|
|
64
|
+
// On-chain UEA Computation
|
|
65
|
+
// ============================================================================
|
|
66
|
+
function computeUEA(ctx) {
|
|
67
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
const { chain, address } = ctx.universalSigner.account;
|
|
69
|
+
const { vm, chainId } = chain_1.CHAIN_INFO[chain];
|
|
70
|
+
if ((0, helpers_1.isPushChain)(chain)) {
|
|
71
|
+
throw new Error('UEA cannot be computed for a Push Chain Address');
|
|
72
|
+
}
|
|
73
|
+
const computedAddress = yield ctx.pushClient.readContract({
|
|
74
|
+
address: ctx.pushClient.pushChainInfo.factoryAddress,
|
|
75
|
+
abi: factoryV1_1.FACTORY_V1,
|
|
76
|
+
functionName: 'computeUEA',
|
|
77
|
+
args: [
|
|
78
|
+
{
|
|
79
|
+
chainNamespace: chain_1.VM_NAMESPACE[vm],
|
|
80
|
+
chainId,
|
|
81
|
+
owner: vm === enums_1.VM.EVM
|
|
82
|
+
? address
|
|
83
|
+
: vm === enums_1.VM.SVM
|
|
84
|
+
? (0, viem_1.bytesToHex)(new Uint8Array(bs58_1.bs58.decode(address)))
|
|
85
|
+
: address,
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
});
|
|
89
|
+
const byteCode = yield ctx.pushClient.publicClient.getCode({
|
|
90
|
+
address: computedAddress,
|
|
91
|
+
});
|
|
92
|
+
return { address: computedAddress, deployed: byteCode !== undefined };
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
// ============================================================================
|
|
96
|
+
// UEA Nonce
|
|
97
|
+
// ============================================================================
|
|
98
|
+
function getUEANonce(ctx, address) {
|
|
99
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
100
|
+
const chain = ctx.universalSigner.account.chain;
|
|
101
|
+
const { vm } = chain_1.CHAIN_INFO[chain];
|
|
102
|
+
switch (vm) {
|
|
103
|
+
case enums_1.VM.EVM:
|
|
104
|
+
return ctx.pushClient.readContract({
|
|
105
|
+
address,
|
|
106
|
+
abi: uea_evm_1.UEA_EVM,
|
|
107
|
+
functionName: 'nonce',
|
|
108
|
+
});
|
|
109
|
+
case enums_1.VM.SVM:
|
|
110
|
+
return ctx.pushClient.readContract({
|
|
111
|
+
address,
|
|
112
|
+
abi: uea_svm_1.UEA_SVM,
|
|
113
|
+
functionName: 'nonce',
|
|
114
|
+
});
|
|
115
|
+
default:
|
|
116
|
+
throw new Error(`Unsupported VM type: ${vm}`);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function getUeaNonceForExecution(ctx) {
|
|
121
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
const UEA = computeUEAOffchain(ctx);
|
|
123
|
+
const code = yield ctx.pushClient.publicClient.getCode({ address: UEA });
|
|
124
|
+
return code !== undefined ? yield getUEANonce(ctx, UEA) : BigInt(0);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function getUeaStatusAndNonce(ctx) {
|
|
128
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
const UEA = computeUEAOffchain(ctx);
|
|
130
|
+
const code = yield ctx.pushClient.publicClient.getCode({ address: UEA });
|
|
131
|
+
const deployed = code !== undefined;
|
|
132
|
+
const nonce = deployed ? yield getUEANonce(ctx, UEA) : BigInt(0);
|
|
133
|
+
return { deployed, nonce };
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
// ============================================================================
|
|
137
|
+
// UEA Version
|
|
138
|
+
// ============================================================================
|
|
139
|
+
function fetchUEAVersion(ctx) {
|
|
140
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
if (ctx.ueaVersionCache) {
|
|
142
|
+
return ctx.ueaVersionCache;
|
|
143
|
+
}
|
|
144
|
+
const chain = ctx.universalSigner.account.chain;
|
|
145
|
+
const { vm } = chain_1.CHAIN_INFO[chain];
|
|
146
|
+
const abi = vm === enums_1.VM.EVM ? uea_evm_1.UEA_EVM : uea_svm_1.UEA_SVM;
|
|
147
|
+
const predictedUEA = computeUEAOffchain(ctx);
|
|
148
|
+
const code = yield ctx.pushClient.publicClient.getCode({
|
|
149
|
+
address: predictedUEA,
|
|
150
|
+
});
|
|
151
|
+
if (code === undefined) {
|
|
152
|
+
ctx.ueaVersionCache = '0.1.0';
|
|
153
|
+
return '0.1.0';
|
|
154
|
+
}
|
|
155
|
+
const version = yield ctx.pushClient.readContract({
|
|
156
|
+
address: predictedUEA,
|
|
157
|
+
abi,
|
|
158
|
+
functionName: 'VERSION',
|
|
159
|
+
});
|
|
160
|
+
ctx.ueaVersionCache = version;
|
|
161
|
+
return version;
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=uea-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uea-manager.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/lib/orchestrator/internals/uea-manager.ts"],"names":[],"mappings":"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"}
|