@pushchain/core 2.0.21 → 2.1.1

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 CHANGED
@@ -1,3 +1,9 @@
1
+ @pushchain/core@2.1.1 (2025-10-26)
2
+
3
+ - release: bump to 2.0.21
4
+
5
+ ---
6
+
1
7
  @pushchain/core@2.0.0 (2025-09-18)
2
8
 
3
9
  - fix: svm gateway idl
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushchain/core",
3
- "version": "2.0.21",
3
+ "version": "2.1.1",
4
4
  "homepage": "https://push.org",
5
5
  "keywords": [
6
6
  "pushchain",
@@ -45,6 +45,5 @@
45
45
  "devDependencies": {
46
46
  "secp256k1": "^5.0.1",
47
47
  "ts-proto": "^2.0.3"
48
- },
49
- "types": "./src/index.d.ts"
50
- }
48
+ }
49
+ }
@@ -9,6 +9,17 @@ export declare const VM_NAMESPACE: Record<VM, string>;
9
9
  * Maps Push Network → VM → UEA implementation address.
10
10
  */
11
11
  export declare const UEA_PROXY: Record<PUSH_NETWORK, `0x${string}`>;
12
+ /**
13
+ * Addresses for wrapped ETH/SOL/ARBITRUM assets by Push network.
14
+ * Includes pETH and PUSDT bridged from origin on test networks.
15
+ */
16
+ export declare const SYNTHETIC_PUSH_ERC20: Record<PUSH_NETWORK, {
17
+ pETH: `0x${string}`;
18
+ pSOL: `0x${string}`;
19
+ USDT_ETH: `0x${string}`;
20
+ USDT_ARB: `0x${string}`;
21
+ USDT_SOL: `0x${string}`;
22
+ }>;
12
23
  /**
13
24
  * Canonical metadata for each chain supported by the SDK.
14
25
  * Acts as a single source of truth for chainId, vm type, locker contract, etc.
@@ -22,6 +33,11 @@ export declare const CHAIN_INFO: Record<CHAIN, {
22
33
  defaultRPC: string[];
23
34
  confirmations: number;
24
35
  timeout: number;
36
+ dex?: {
37
+ uniV3Factory?: `0x${string}`;
38
+ uniV3QuoterV2?: `0x${string}`;
39
+ weth?: `0x${string}`;
40
+ };
25
41
  }>;
26
42
  /**
27
43
  * Extra required info regarding Push Chain
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PUSH_CHAIN_INFO = exports.CHAIN_INFO = exports.UEA_PROXY = exports.VM_NAMESPACE = void 0;
3
+ exports.PUSH_CHAIN_INFO = exports.CHAIN_INFO = exports.SYNTHETIC_PUSH_ERC20 = exports.UEA_PROXY = exports.VM_NAMESPACE = void 0;
4
4
  const enums_1 = require("./enums");
5
5
  const chains_1 = require("viem/chains");
6
6
  /**
@@ -21,6 +21,40 @@ exports.UEA_PROXY = {
21
21
  [enums_1.PUSH_NETWORK.TESTNET]: '0x53179F638eC4613015EC1aA83e89B48BE6ed6d6d',
22
22
  [enums_1.PUSH_NETWORK.LOCALNET]: '0x2FE70447492307108Bdc7Ff6BaB33Ff37Dacc479',
23
23
  };
24
+ /**
25
+ * Addresses for wrapped ETH/SOL/ARBITRUM assets by Push network.
26
+ * Includes pETH and PUSDT bridged from origin on test networks.
27
+ */
28
+ exports.SYNTHETIC_PUSH_ERC20 = {
29
+ [enums_1.PUSH_NETWORK.TESTNET_DONUT]: {
30
+ pETH: '0x2971824Db68229D087931155C2b8bB820B275809',
31
+ pSOL: '0x5D525Df2bD99a6e7ec58b76aF2fd95F39874EBed',
32
+ USDT_ETH: '0xCA0C5E6F002A389E1580F0DB7cd06e4549B5F9d3',
33
+ USDT_ARB: '0x76Ad08339dF606BeEDe06f90e3FaF82c5b2fb2E9',
34
+ USDT_SOL: '0x4f1A3D22d170a2F4Bddb37845a962322e24f4e34',
35
+ },
36
+ [enums_1.PUSH_NETWORK.TESTNET]: {
37
+ pETH: '0x2971824Db68229D087931155C2b8bB820B275809',
38
+ pSOL: '0x5D525Df2bD99a6e7ec58b76aF2fd95F39874EBed',
39
+ USDT_ETH: '0xCA0C5E6F002A389E1580F0DB7cd06e4549B5F9d3',
40
+ USDT_ARB: '0x76Ad08339dF606BeEDe06f90e3FaF82c5b2fb2E9',
41
+ USDT_SOL: '0x4f1A3D22d170a2F4Bddb37845a962322e24f4e34',
42
+ },
43
+ [enums_1.PUSH_NETWORK.LOCALNET]: {
44
+ pETH: '0xTBD',
45
+ pSOL: '0xTBD',
46
+ USDT_ETH: '0xTBD',
47
+ USDT_ARB: '0xTBD',
48
+ USDT_SOL: '0xTBD',
49
+ },
50
+ [enums_1.PUSH_NETWORK.MAINNET]: {
51
+ pETH: '0xTBD',
52
+ pSOL: '0xTBD',
53
+ USDT_ETH: '0xTBD',
54
+ USDT_ARB: '0xTBD',
55
+ USDT_SOL: '0xTBD',
56
+ },
57
+ };
24
58
  /**
25
59
  * Canonical metadata for each chain supported by the SDK.
26
60
  * Acts as a single source of truth for chainId, vm type, locker contract, etc.
@@ -69,6 +103,11 @@ exports.CHAIN_INFO = {
69
103
  defaultRPC: [chains_1.sepolia.rpcUrls.default.http[0]],
70
104
  confirmations: 1,
71
105
  timeout: 30000,
106
+ dex: {
107
+ uniV3Factory: '0x0227628f3F023bb0B980b67D528571c95c6DaC1c',
108
+ uniV3QuoterV2: '0xEd1f6473345F45b75F8179591dd5bA1888cf2FB3',
109
+ weth: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14',
110
+ },
72
111
  },
73
112
  [enums_1.CHAIN.ARBITRUM_SEPOLIA]: {
74
113
  chainId: '421614',
@@ -77,6 +116,11 @@ exports.CHAIN_INFO = {
77
116
  defaultRPC: [chains_1.arbitrumSepolia.rpcUrls.default.http[0]],
78
117
  confirmations: 1,
79
118
  timeout: 30000,
119
+ dex: {
120
+ uniV3Factory: '0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24',
121
+ uniV3QuoterV2: '0xTBD',
122
+ weth: '0x980B62Da83eFf3D4576C647993b0c1D7faf17c73',
123
+ },
80
124
  },
81
125
  [enums_1.CHAIN.BASE_SEPOLIA]: {
82
126
  chainId: '84532',
@@ -85,6 +129,19 @@ exports.CHAIN_INFO = {
85
129
  defaultRPC: [chains_1.baseSepolia.rpcUrls.default.http[0]],
86
130
  confirmations: 1,
87
131
  timeout: 30000,
132
+ dex: {
133
+ uniV3Factory: '0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24',
134
+ uniV3QuoterV2: '0xTBD',
135
+ weth: '0x4200000000000000000000000000000000000006',
136
+ },
137
+ },
138
+ [enums_1.CHAIN.BNB_TESTNET]: {
139
+ chainId: '97',
140
+ vm: enums_1.VM.EVM,
141
+ lockerContract: '0x44aFFC61983F4348DdddB886349eb992C061EaC0',
142
+ defaultRPC: [chains_1.bscTestnet.rpcUrls.default.http[0]],
143
+ confirmations: 1,
144
+ timeout: 30000,
88
145
  },
89
146
  // Solana
90
147
  [enums_1.CHAIN.SOLANA_MAINNET]: {
@@ -1 +1 @@
1
- {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/constants/chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/constants/chain.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ export declare enum CHAIN {
21
21
  ETHEREUM_SEPOLIA = "eip155:11155111",
22
22
  ARBITRUM_SEPOLIA = "eip155:421614",
23
23
  BASE_SEPOLIA = "eip155:84532",
24
+ BNB_TESTNET = "eip155:97",
24
25
  SOLANA_MAINNET = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
25
26
  SOLANA_TESTNET = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z",
26
27
  SOLANA_DEVNET = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"
@@ -28,6 +28,7 @@ var CHAIN;
28
28
  CHAIN["ETHEREUM_SEPOLIA"] = "eip155:11155111";
29
29
  CHAIN["ARBITRUM_SEPOLIA"] = "eip155:421614";
30
30
  CHAIN["BASE_SEPOLIA"] = "eip155:84532";
31
+ CHAIN["BNB_TESTNET"] = "eip155:97";
31
32
  // Solana
32
33
  CHAIN["SOLANA_MAINNET"] = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
33
34
  CHAIN["SOLANA_TESTNET"] = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z";
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/constants/enums.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,+CAA+B,CAAA;IAC/B,mCAAmB,CAAA;IACnB,qCAAqB,CAAA;AACvB,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB;AAED;;GAEG;AACH,IAAY,KAiBX;AAjBD,WAAY,KAAK;IACf,OAAO;IACP,kCAAyB,CAAA;IACzB,sCAA6B,CAAA;IAC7B,4CAAiC,CAAA;IACjC,sCAA6B,CAAA;IAE7B,WAAW;IACX,sCAA6B,CAAA;IAC7B,6CAAoC,CAAA;IACpC,2CAAkC,CAAA;IAClC,sCAA6B,CAAA;IAE7B,SAAS;IACT,mEAA0D,CAAA;IAC1D,mEAA0D,CAAA;IAC1D,kEAAyD,CAAA;AAC3D,CAAC,EAjBW,KAAK,qBAAL,KAAK,QAiBhB;AAED;;GAEG;AACH,IAAY,EAGX;AAHD,WAAY,EAAE;IACZ,iBAAW,CAAA;IACX,iBAAW,CAAA;AACb,CAAC,EAHW,EAAE,kBAAF,EAAE,QAGb;AAED,IAAY,OAIX;AAJD,WAAY,OAAO;IACjB,iCAAsB,CAAA;IACtB,0CAA+B,CAAA;IAC/B,0CAA+B,CAAA;AACjC,CAAC,EAJW,OAAO,uBAAP,OAAO,QAIlB"}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/constants/enums.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,+CAA+B,CAAA;IAC/B,mCAAmB,CAAA;IACnB,qCAAqB,CAAA;AACvB,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB;AAED;;GAEG;AACH,IAAY,KAkBX;AAlBD,WAAY,KAAK;IACf,OAAO;IACP,kCAAyB,CAAA;IACzB,sCAA6B,CAAA;IAC7B,4CAAiC,CAAA;IACjC,sCAA6B,CAAA;IAE7B,WAAW;IACX,sCAA6B,CAAA;IAC7B,6CAAoC,CAAA;IACpC,2CAAkC,CAAA;IAClC,sCAA6B,CAAA;IAC7B,kCAAyB,CAAA;IAEzB,SAAS;IACT,mEAA0D,CAAA;IAC1D,mEAA0D,CAAA;IAC1D,kEAAyD,CAAA;AAC3D,CAAC,EAlBW,KAAK,qBAAL,KAAK,QAkBhB;AAED;;GAEG;AACH,IAAY,EAGX;AAHD,WAAY,EAAE;IACZ,iBAAW,CAAA;IACX,iBAAW,CAAA;AACb,CAAC,EAHW,EAAE,kBAAF,EAAE,QAGb;AAED,IAAY,OAIX;AAJD,WAAY,OAAO;IACjB,iCAAsB,CAAA;IACtB,0CAA+B,CAAA;IAC/B,0CAA+B,CAAA;AACjC,CAAC,EAJW,OAAO,uBAAP,OAAO,QAIlB"}
@@ -111,6 +111,12 @@ exports.MOVEABLE_TOKENS = {
111
111
  address: '0x1419d7C74D234fA6B73E06A2ce7822C1d37922f0',
112
112
  mechanism: 'approve',
113
113
  },
114
+ {
115
+ symbol: 'WETH',
116
+ decimals: 18,
117
+ address: '0x980B62Da83eFf3D4576C647993b0c1D7faf17c73',
118
+ mechanism: 'approve',
119
+ },
114
120
  ],
115
121
  // Base Sepolia
116
122
  [enums_1.CHAIN.BASE_SEPOLIA]: [
@@ -126,6 +132,27 @@ exports.MOVEABLE_TOKENS = {
126
132
  address: '0x9FF5a186f53F6E6964B00320Da1D2024DE11E0cB',
127
133
  mechanism: 'approve',
128
134
  },
135
+ {
136
+ symbol: 'WETH',
137
+ decimals: 18,
138
+ address: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14',
139
+ mechanism: 'approve',
140
+ },
141
+ ],
142
+ // BNB Testnet
143
+ [enums_1.CHAIN.BNB_TESTNET]: [
144
+ {
145
+ symbol: 'ETH',
146
+ decimals: 18,
147
+ address: EVM_NATIVE,
148
+ mechanism: 'native',
149
+ },
150
+ {
151
+ symbol: 'USDT',
152
+ decimals: 6,
153
+ address: '0xBC14F348BC9667be46b35Edc9B68653d86013DC5',
154
+ mechanism: 'approve',
155
+ },
129
156
  ],
130
157
  // Solana Devnet (decimals are per SPL mint; addresses TBD)
131
158
  [enums_1.CHAIN.SOLANA_DEVNET]: [
@@ -217,6 +244,20 @@ exports.PAYABLE_TOKENS = {
217
244
  mechanism: 'approve',
218
245
  },
219
246
  ],
247
+ [enums_1.CHAIN.BNB_TESTNET]: [
248
+ {
249
+ symbol: 'BNB',
250
+ decimals: 18,
251
+ address: EVM_NATIVE,
252
+ mechanism: 'native',
253
+ },
254
+ {
255
+ symbol: 'USDT',
256
+ decimals: 6,
257
+ address: '0xBC14F348BC9667be46b35Edc9B68653d86013DC5',
258
+ mechanism: 'approve',
259
+ },
260
+ ],
220
261
  [enums_1.CHAIN.SOLANA_DEVNET]: [
221
262
  {
222
263
  symbol: 'SOL',
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/constants/tokens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/constants/tokens.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { UniversalAccount, UniversalSigner } from '../universal/universal.types'
3
3
  import { ExecuteParams } from './orchestrator.types';
4
4
  import { ProgressEvent } from '../progress-hook/progress-hook.types';
5
5
  import { UniversalTxResponse } from './orchestrator.types';
6
+ import { ConversionQuote, MoveableToken, PayableToken } from '../constants/tokens';
6
7
  export declare class Orchestrator {
7
8
  private readonly universalSigner;
8
9
  private pushNetwork;
@@ -76,6 +77,14 @@ export declare class Orchestrator {
76
77
  private getUEANonce;
77
78
  getUOA(): UniversalAccount;
78
79
  private waitForLockerFeeConfirmation;
80
+ /**
81
+ * Quotes exact-output on Uniswap V3 for EVM origin chains using QuoterV2.
82
+ * Returns the minimum required input (amountIn) to receive the target amountOut.
83
+ */
84
+ _quoteExactOutput(amountOut: bigint, { from, to, }: {
85
+ from: PayableToken | undefined;
86
+ to: MoveableToken | undefined;
87
+ }): Promise<ConversionQuote>;
79
88
  private ensureErc20Allowance;
80
89
  /**
81
90
  * Ensures we're on Sepolia, returns EVM client and gateway address.
@@ -118,4 +127,5 @@ export declare class Orchestrator {
118
127
  private queryUniversalTxStatusFromGatewayTx;
119
128
  private waitForEvmConfirmationsWithCountdown;
120
129
  private fetchUEAVersion;
130
+ private calculateGasAmountFromAmountOutMinETH;
121
131
  }
@@ -63,7 +63,7 @@ class Orchestrator {
63
63
  */
64
64
  execute(execute) {
65
65
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
66
- var _a, _b, _c;
66
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
67
67
  try {
68
68
  // FUNDS_TX short-circuit: Bridge tokens from origin chain to Push Chain
69
69
  // - EVM (Sepolia): UniversalGatewayV0
@@ -82,8 +82,9 @@ class Orchestrator {
82
82
  if (!(chain === enums_1.CHAIN.ETHEREUM_SEPOLIA ||
83
83
  chain === enums_1.CHAIN.ARBITRUM_SEPOLIA ||
84
84
  chain === enums_1.CHAIN.BASE_SEPOLIA ||
85
+ chain === enums_1.CHAIN.BNB_TESTNET ||
85
86
  chain === enums_1.CHAIN.SOLANA_DEVNET)) {
86
- throw new Error('Funds bridging is only supported on Ethereum Sepolia, Arbitrum Sepolia, Base Sepolia, and Solana Devnet for now');
87
+ throw new Error('Funds bridging is only supported on Ethereum Sepolia, Arbitrum Sepolia, Base Sepolia, BNB Testnet, and Solana Devnet for now');
87
88
  }
88
89
  // Progress: Origin chain detected
89
90
  this.executeProgressHook(progress_hook_types_1.PROGRESS_HOOK.SEND_TX_01, chain);
@@ -168,6 +169,10 @@ class Orchestrator {
168
169
  const [vaultPda] = web3_js_1.PublicKey.findProgramAddressSync([(0, viem_1.stringToBytes)('vault')], programId);
169
170
  const [whitelistPda] = web3_js_1.PublicKey.findProgramAddressSync([(0, viem_1.stringToBytes)('whitelist')], programId);
170
171
  const userPk = new web3_js_1.PublicKey(this.universalSigner.account.address);
172
+ // pay-with-token gas abstraction is not supported on Solana
173
+ if (((_a = execute.funds) === null || _a === void 0 ? void 0 : _a.payWith) !== undefined) {
174
+ throw new Error('Pay-with token is not supported on Solana');
175
+ }
171
176
  let txSignature;
172
177
  // SVM-specific RevertSettings: bytes must be a Buffer
173
178
  const revertSvm = {
@@ -334,7 +339,7 @@ class Orchestrator {
334
339
  const gasEstimate = execute.gasLimit || BigInt(1e7);
335
340
  const gasPrice = yield this.pushClient.getGasPrice();
336
341
  const requiredGasFee = gasEstimate * gasPrice;
337
- const payloadValue = (_a = execute.value) !== null && _a !== void 0 ? _a : BigInt(0);
342
+ const payloadValue = (_b = execute.value) !== null && _b !== void 0 ? _b : BigInt(0);
338
343
  const requiredFunds = requiredGasFee + payloadValue;
339
344
  const ueaAddress = this.computeUEAOffchain();
340
345
  const [ueaBalance] = yield Promise.all([
@@ -367,8 +372,8 @@ class Orchestrator {
367
372
  functionName: 'config',
368
373
  args: [configPda.toBase58()],
369
374
  });
370
- const minField = (_b = cfg.minCapUniversalTxUsd) !== null && _b !== void 0 ? _b : cfg.min_cap_universal_tx_usd;
371
- const maxField = (_c = cfg.maxCapUniversalTxUsd) !== null && _c !== void 0 ? _c : cfg.max_cap_universal_tx_usd;
375
+ const minField = (_c = cfg.minCapUniversalTxUsd) !== null && _c !== void 0 ? _c : cfg.min_cap_universal_tx_usd;
376
+ const maxField = (_d = cfg.maxCapUniversalTxUsd) !== null && _d !== void 0 ? _d : cfg.max_cap_universal_tx_usd;
372
377
  const minCapUsd = BigInt(minField.toString());
373
378
  const maxCapUsd = BigInt(maxField.toString());
374
379
  if (depositUsd < minCapUsd)
@@ -380,7 +385,7 @@ class Orchestrator {
380
385
  if (depositUsd > maxCapUsd)
381
386
  depositUsd = maxCapUsd;
382
387
  }
383
- catch (_d) {
388
+ catch (_m) {
384
389
  // best-effort; fallback to previous bounds if read fails
385
390
  }
386
391
  }
@@ -429,20 +434,73 @@ class Orchestrator {
429
434
  : (0, viem_1.bytesToHex)(eip712Signature);
430
435
  const evmClientEvm = evmClient;
431
436
  const gatewayAddressEvm = gatewayAddress;
432
- txHash = yield evmClientEvm.writeContract({
433
- abi: abi_1.UNIVERSAL_GATEWAY_V0,
434
- address: gatewayAddressEvm,
435
- functionName: 'sendTxWithFunds',
436
- args: [
437
- tokenAddr,
438
- bridgeAmount,
439
- universalPayload,
440
- revertCFG,
441
- eip712SignatureHex,
442
- ],
443
- signer: this.universalSigner,
444
- value: nativeAmount,
445
- });
437
+ // New behavior: if user provided a gasTokenAddress, pay gas in that token via Uniswap quote
438
+ // Determine pay-with token address, min-out and slippage
439
+ const payWith = execute.funds.payWith;
440
+ const gasTokenAddress = (_e = payWith === null || payWith === void 0 ? void 0 : payWith.token) === null || _e === void 0 ? void 0 : _e.address;
441
+ if (gasTokenAddress) {
442
+ if (chain !== enums_1.CHAIN.ETHEREUM_SEPOLIA) {
443
+ throw new Error(`Only ${push_chain_1.PushChain.utils.chains.getChainName(enums_1.CHAIN.ETHEREUM_SEPOLIA)} is supported for paying gas fees with ERC-20 tokens`);
444
+ }
445
+ let amountOutMinETH = (payWith === null || payWith === void 0 ? void 0 : payWith.minAmountOut) !== undefined
446
+ ? BigInt(payWith.minAmountOut)
447
+ : nativeAmount;
448
+ const slippageBps = (_f = payWith === null || payWith === void 0 ? void 0 : payWith.slippageBps) !== null && _f !== void 0 ? _f : 100;
449
+ amountOutMinETH = BigInt(push_chain_1.PushChain.utils.conversion.slippageToMinAmount(amountOutMinETH.toString(), { slippageBps }));
450
+ const { gasAmount } = yield this.calculateGasAmountFromAmountOutMinETH(gasTokenAddress, amountOutMinETH);
451
+ const deadline = BigInt(0);
452
+ // Ensure caller has enough balance of the gas token to cover fees
453
+ const ownerAddress = this.universalSigner.account
454
+ .address;
455
+ const gasTokenBalance = yield evmClientEvm.getErc20Balance({
456
+ tokenAddress: gasTokenAddress,
457
+ ownerAddress,
458
+ });
459
+ if (gasTokenBalance < gasAmount) {
460
+ const sym = (_h = (_g = payWith === null || payWith === void 0 ? void 0 : payWith.token) === null || _g === void 0 ? void 0 : _g.symbol) !== null && _h !== void 0 ? _h : 'gas token';
461
+ const decimals = (_k = (_j = payWith === null || payWith === void 0 ? void 0 : payWith.token) === null || _j === void 0 ? void 0 : _j.decimals) !== null && _k !== void 0 ? _k : 18;
462
+ const needFmt = push_chain_1.PushChain.utils.helpers.formatUnits(gasAmount, decimals);
463
+ const haveFmt = push_chain_1.PushChain.utils.helpers.formatUnits(gasTokenBalance, decimals);
464
+ throw new Error(`Insufficient ${sym} balance to cover gas fees: need ${needFmt}, have ${haveFmt}`);
465
+ }
466
+ // Approve gas token to gateway
467
+ yield this.ensureErc20Allowance(evmClientEvm, gasTokenAddress, gatewayAddressEvm, gasAmount);
468
+ // Approve bridge token already done above; now call new gateway signature (nonpayable)
469
+ txHash = yield evmClientEvm.writeContract({
470
+ abi: abi_1.UNIVERSAL_GATEWAY_V0,
471
+ address: gatewayAddressEvm,
472
+ functionName: 'sendTxWithFunds',
473
+ args: [
474
+ tokenAddr,
475
+ bridgeAmount,
476
+ gasTokenAddress,
477
+ gasAmount,
478
+ amountOutMinETH,
479
+ deadline,
480
+ universalPayload,
481
+ revertCFG,
482
+ eip712SignatureHex,
483
+ ],
484
+ signer: this.universalSigner,
485
+ });
486
+ }
487
+ else {
488
+ // Existing native-ETH value path
489
+ txHash = yield evmClientEvm.writeContract({
490
+ abi: abi_1.UNIVERSAL_GATEWAY_V0,
491
+ address: gatewayAddressEvm,
492
+ functionName: 'sendTxWithFunds',
493
+ args: [
494
+ tokenAddr,
495
+ bridgeAmount,
496
+ universalPayload,
497
+ revertCFG,
498
+ eip712SignatureHex,
499
+ ],
500
+ signer: this.universalSigner,
501
+ value: nativeAmount,
502
+ });
503
+ }
446
504
  }
447
505
  else {
448
506
  // SVM funds+payload path
@@ -456,6 +514,10 @@ class Orchestrator {
456
514
  // whitelistPda already computed above
457
515
  const userPk = new web3_js_1.PublicKey(this.universalSigner.account.address);
458
516
  const priceUpdatePk = new web3_js_1.PublicKey('7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE');
517
+ // pay-with-token gas abstraction is not supported on Solana
518
+ if (((_l = execute.funds) === null || _l === void 0 ? void 0 : _l.payWith) !== undefined) {
519
+ throw new Error('Pay-with token is not supported on Solana');
520
+ }
459
521
  const isNative = mechanism === 'native' || execute.funds.token.symbol === 'SOL';
460
522
  const revertSvm2 = {
461
523
  fundRecipient: userPk,
@@ -1192,6 +1254,118 @@ class Orchestrator {
1192
1254
  }
1193
1255
  });
1194
1256
  }
1257
+ /**
1258
+ * Quotes exact-output on Uniswap V3 for EVM origin chains using QuoterV2.
1259
+ * Returns the minimum required input (amountIn) to receive the target amountOut.
1260
+ */
1261
+ _quoteExactOutput(amountOut_1, _a) {
1262
+ return tslib_1.__awaiter(this, arguments, void 0, function* (amountOut, { from, to, }) {
1263
+ var _b, _c, _d;
1264
+ const originChain = this.universalSigner.account.chain;
1265
+ if (originChain !== enums_1.CHAIN.ETHEREUM_MAINNET &&
1266
+ originChain !== enums_1.CHAIN.ETHEREUM_SEPOLIA) {
1267
+ throw new Error('Exact-output quoting is only supported on Ethereum Mainnet and Sepolia for now');
1268
+ }
1269
+ if (!from) {
1270
+ throw new Error('from token is required');
1271
+ }
1272
+ if (!to) {
1273
+ throw new Error('to token is required');
1274
+ }
1275
+ const rpcUrls = this.getRpcUrls()[originChain] || chain_1.CHAIN_INFO[originChain].defaultRPC;
1276
+ const evm = new evm_client_1.EvmClient({ rpcUrls });
1277
+ const factoryFromConfig = (_b = chain_1.CHAIN_INFO[originChain].dex) === null || _b === void 0 ? void 0 : _b.uniV3Factory;
1278
+ const quoterFromConfig = (_c = chain_1.CHAIN_INFO[originChain].dex) === null || _c === void 0 ? void 0 : _c.uniV3QuoterV2;
1279
+ if (!factoryFromConfig || !quoterFromConfig) {
1280
+ throw new Error('Uniswap V3 addresses not configured for this chain');
1281
+ }
1282
+ const UNISWAP_V3_FACTORY = factoryFromConfig;
1283
+ const UNISWAP_V3_QUOTER_V2 = quoterFromConfig;
1284
+ const factoryAbi = (0, viem_1.parseAbi)([
1285
+ 'function getPool(address tokenA, address tokenB, uint24 fee) view returns (address)',
1286
+ ]);
1287
+ const quoterAbi = (0, viem_1.parseAbi)([
1288
+ 'function quoteExactOutputSingle((address tokenIn, address tokenOut, uint256 amount, uint24 fee, uint160 sqrtPriceLimitX96) params) returns (uint256 amountIn, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)',
1289
+ ]);
1290
+ const poolAbi = (0, viem_1.parseAbi)([
1291
+ 'function liquidity() view returns (uint128)',
1292
+ ]);
1293
+ const feeTiers = [100, 500, 3000, 10000];
1294
+ let bestAmountIn = null;
1295
+ let bestFee = null;
1296
+ for (const fee of feeTiers) {
1297
+ // Find pool address for this fee tier
1298
+ const poolAddress = yield evm.readContract({
1299
+ abi: factoryAbi,
1300
+ address: UNISWAP_V3_FACTORY,
1301
+ functionName: 'getPool',
1302
+ args: [from.address, to.address, fee],
1303
+ });
1304
+ const isZero = !poolAddress ||
1305
+ poolAddress.toLowerCase() ===
1306
+ '0x0000000000000000000000000000000000000000';
1307
+ if (isZero)
1308
+ continue;
1309
+ // Skip uninitialized/empty pools to avoid Quoter reverts
1310
+ try {
1311
+ const liquidity = yield evm.readContract({
1312
+ abi: poolAbi,
1313
+ address: poolAddress,
1314
+ functionName: 'liquidity',
1315
+ args: [],
1316
+ });
1317
+ if (!liquidity || liquidity === BigInt(0))
1318
+ continue;
1319
+ }
1320
+ catch (_e) {
1321
+ continue;
1322
+ }
1323
+ // Quote exact output single for this fee tier
1324
+ try {
1325
+ const result = yield evm.readContract({
1326
+ abi: quoterAbi,
1327
+ address: UNISWAP_V3_QUOTER_V2,
1328
+ functionName: 'quoteExactOutputSingle',
1329
+ args: [
1330
+ {
1331
+ tokenIn: from.address,
1332
+ tokenOut: to.address,
1333
+ amount: amountOut,
1334
+ fee,
1335
+ sqrtPriceLimitX96: BigInt(0),
1336
+ },
1337
+ ],
1338
+ });
1339
+ const amountIn = (_d = result === null || result === void 0 ? void 0 : result[0]) !== null && _d !== void 0 ? _d : BigInt(0);
1340
+ if (amountIn === BigInt(0))
1341
+ continue;
1342
+ if (bestAmountIn === null || amountIn < bestAmountIn) {
1343
+ bestAmountIn = amountIn;
1344
+ bestFee = fee;
1345
+ }
1346
+ }
1347
+ catch (_f) {
1348
+ // try next fee
1349
+ }
1350
+ }
1351
+ if (bestAmountIn === null || bestFee === null) {
1352
+ throw new Error('No direct Uniswap V3 pool found for the given token pair on common fee tiers');
1353
+ }
1354
+ const amountInBig = BigInt(bestAmountIn);
1355
+ const amountInHuman = parseFloat(push_chain_1.PushChain.utils.helpers.formatUnits(amountInBig, {
1356
+ decimals: from.decimals,
1357
+ }));
1358
+ const amountOutHuman = parseFloat(push_chain_1.PushChain.utils.helpers.formatUnits(amountOut, { decimals: to.decimals }));
1359
+ const rate = amountInHuman > 0 ? amountOutHuman / amountInHuman : 0;
1360
+ return {
1361
+ amountIn: bestAmountIn.toString(),
1362
+ amountOut: amountOut.toString(),
1363
+ rate,
1364
+ route: [from.symbol, to.symbol],
1365
+ timestamp: Date.now(),
1366
+ };
1367
+ });
1368
+ }
1195
1369
  ensureErc20Allowance(evmClient, tokenAddress, spender, requiredAmount) {
1196
1370
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
1197
1371
  const chain = this.universalSigner.account.chain;
@@ -1257,8 +1431,9 @@ class Orchestrator {
1257
1431
  if (chain !== enums_1.CHAIN.ETHEREUM_SEPOLIA &&
1258
1432
  chain !== enums_1.CHAIN.ARBITRUM_SEPOLIA &&
1259
1433
  chain !== enums_1.CHAIN.BASE_SEPOLIA &&
1434
+ chain !== enums_1.CHAIN.BNB_TESTNET &&
1260
1435
  chain !== enums_1.CHAIN.SOLANA_DEVNET) {
1261
- throw new Error('Funds + payload bridging is only supported on Ethereum Sepolia, Arbitrum Sepolia, Base Sepolia, and Solana Devnet for now');
1436
+ throw new Error('Funds + payload bridging is only supported on Ethereum Sepolia, Arbitrum Sepolia, Base Sepolia, BNB Testnet, and Solana Devnet for now');
1262
1437
  }
1263
1438
  // For EVM (Sepolia), return client and gateway address. For SVM (Solana Devnet), only chain is needed here.
1264
1439
  if (chain_1.CHAIN_INFO[chain].vm === enums_1.VM.EVM) {
@@ -1717,6 +1892,45 @@ class Orchestrator {
1717
1892
  return version;
1718
1893
  });
1719
1894
  }
1895
+ // Build EVM gas payment parameters when paying gas with an ERC-20 token
1896
+ calculateGasAmountFromAmountOutMinETH(gasTokenAddress, amountOutMinETH) {
1897
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
1898
+ var _a, _b, _c;
1899
+ const originChain = this.universalSigner.account.chain;
1900
+ if (originChain !== enums_1.CHAIN.ETHEREUM_SEPOLIA &&
1901
+ originChain !== enums_1.CHAIN.ARBITRUM_SEPOLIA &&
1902
+ originChain !== enums_1.CHAIN.BASE_SEPOLIA) {
1903
+ throw new Error('Gas payment in ERC-20 is supported only on Ethereum Sepolia, Arbitrum Sepolia, and Base Sepolia for now');
1904
+ }
1905
+ // Resolve WETH: prefer chain config, fallback to registry
1906
+ const WETH = (_a = chain_1.CHAIN_INFO[originChain].dex) === null || _a === void 0 ? void 0 : _a.weth;
1907
+ if (!WETH)
1908
+ throw new Error('WETH address not configured for this chain');
1909
+ let gasAmount;
1910
+ if (gasTokenAddress.toLowerCase() === WETH.toLowerCase()) {
1911
+ gasAmount = BigInt(amountOutMinETH);
1912
+ }
1913
+ else {
1914
+ // Resolve token objects from registries
1915
+ const fromList = (_b = tokens_1.PAYABLE_TOKENS[originChain]) !== null && _b !== void 0 ? _b : [];
1916
+ const fromToken = fromList.find((t) => (t.address || '').toLowerCase() === gasTokenAddress.toLowerCase());
1917
+ const toList = ((_c = tokens_1.MOVEABLE_TOKENS[originChain]) !== null && _c !== void 0 ? _c : []);
1918
+ const toToken = toList.find((t) => t.symbol === 'WETH' ||
1919
+ (t.address || '').toLowerCase() === (WETH || '').toLowerCase());
1920
+ if (!fromToken || !toToken) {
1921
+ throw new Error('Token not supported for quoting');
1922
+ }
1923
+ const targetOut = BigInt(amountOutMinETH);
1924
+ const exactOutQuote = yield this._quoteExactOutput(targetOut, {
1925
+ from: fromToken,
1926
+ to: toToken,
1927
+ });
1928
+ const requiredIn = BigInt(exactOutQuote.amountIn);
1929
+ gasAmount = (requiredIn * BigInt(101)) / BigInt(100); // 1% safety margin
1930
+ }
1931
+ return { gasAmount };
1932
+ });
1933
+ }
1720
1934
  }
1721
1935
  exports.Orchestrator = Orchestrator;
1722
1936
  //# sourceMappingURL=orchestrator.js.map