@pushchain/core 1.1.36 → 1.1.37

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.
@@ -11,6 +11,8 @@ const signer_1 = require("../universal/signer");
11
11
  const utils_1 = require("../utils");
12
12
  const anchor_1 = require("@coral-xyz/anchor");
13
13
  const viem_1 = require("viem");
14
+ const evm_client_1 = require("../vm-client/evm-client");
15
+ const tokens_1 = require("../constants/tokens");
14
16
  /**
15
17
  * @class PushChain
16
18
  *
@@ -25,6 +27,7 @@ class PushChain {
25
27
  return !('signMessage' in input) && !('signAndSendTransaction' in input);
26
28
  }
27
29
  constructor(orchestrator, universalSigner, blockExplorers, isReadMode) {
30
+ var _b, _c, _d, _e, _f, _g;
28
31
  this.orchestrator = orchestrator;
29
32
  this.universalSigner = universalSigner;
30
33
  this.blockExplorers = blockExplorers;
@@ -97,6 +100,193 @@ class PushChain {
97
100
  return (_b = blockExplorers[enums_1.CHAIN.PUSH_TESTNET_DONUT]) !== null && _b !== void 0 ? _b : [];
98
101
  },
99
102
  };
103
+ // Derive moveable/payable tokens for the current origin chain
104
+ const originChain = universalSigner.account.chain;
105
+ const toTokenMap = (arr) => (arr !== null && arr !== void 0 ? arr : []).reduce((acc, t) => {
106
+ acc[t.symbol] = t;
107
+ return acc;
108
+ }, {});
109
+ const moveableList = (_d = (_c = (_b = tokens_1.MOVEABLE_TOKENS[originChain]) !== null && _b !== void 0 ? _b : tokens_1.MOVEABLE_TOKENS[enums_1.CHAIN.ETHEREUM_MAINNET]) !== null && _c !== void 0 ? _c : tokens_1.MOVEABLE_TOKENS[enums_1.CHAIN.ETHEREUM_SEPOLIA]) !== null && _d !== void 0 ? _d : [];
110
+ const payableList = (_g = (_f = (_e = tokens_1.PAYABLE_TOKENS[originChain]) !== null && _e !== void 0 ? _e : tokens_1.PAYABLE_TOKENS[enums_1.CHAIN.ETHEREUM_MAINNET]) !== null && _f !== void 0 ? _f : tokens_1.PAYABLE_TOKENS[enums_1.CHAIN.ETHEREUM_SEPOLIA]) !== null && _g !== void 0 ? _g : [];
111
+ this.moveable = {
112
+ token: new tokens_1.MoveableTokenAccessor(toTokenMap(moveableList)),
113
+ };
114
+ this.payable = {
115
+ token: new tokens_1.PayableTokenAccessor(toTokenMap(payableList)),
116
+ };
117
+ this.funds = {
118
+ getConversionQuote: (amountIn_1, _b) => tslib_1.__awaiter(this, [amountIn_1, _b], void 0, function* (amountIn, { from, to, }) {
119
+ var _c, _d;
120
+ const originChain = universalSigner.account.chain;
121
+ if (originChain !== enums_1.CHAIN.ETHEREUM_MAINNET &&
122
+ originChain !== enums_1.CHAIN.ETHEREUM_SEPOLIA) {
123
+ throw new Error('getConversionQuote is only supported on Ethereum Mainnet and Sepolia for now');
124
+ }
125
+ if (!from) {
126
+ throw new Error('from token is required');
127
+ }
128
+ if (!to) {
129
+ throw new Error('to token is required');
130
+ }
131
+ // Sepolia-only override: if quoting USDT -> WETH, use Chainlink ETH/USD to match UniversalGatewayV0.sol
132
+ if (originChain === enums_1.CHAIN.ETHEREUM_SEPOLIA &&
133
+ from.symbol === 'USDT' &&
134
+ to.symbol === 'WETH') {
135
+ // Resolve RPCs from client config, falling back to defaults
136
+ const rpcUrls = orchestrator.getRpcUrls()[originChain] ||
137
+ chain_1.CHAIN_INFO[originChain].defaultRPC;
138
+ const evm = new evm_client_1.EvmClient({ rpcUrls });
139
+ // Chainlink AggregatorV3Interface (ETH/USD) on Sepolia
140
+ const aggregatorAbi = (0, viem_1.parseAbi)([
141
+ 'function latestRoundData() view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)',
142
+ 'function decimals() view returns (uint8)',
143
+ ]);
144
+ const ETH_USD_FEED_SEPOLIA = '0x694AA1769357215DE4FAC081bf1f309aDC325306';
145
+ // Get price and decimals
146
+ const [latest, dec] = yield Promise.all([
147
+ evm.readContract({
148
+ abi: aggregatorAbi,
149
+ address: ETH_USD_FEED_SEPOLIA,
150
+ functionName: 'latestRoundData',
151
+ args: [],
152
+ }),
153
+ evm.readContract({
154
+ abi: aggregatorAbi,
155
+ address: ETH_USD_FEED_SEPOLIA,
156
+ functionName: 'decimals',
157
+ args: [],
158
+ }),
159
+ ]);
160
+ const answer = (_c = latest === null || latest === void 0 ? void 0 : latest[1]) !== null && _c !== void 0 ? _c : BigInt(0); // USD price per ETH with "dec" decimals
161
+ if (answer <= BigInt(0)) {
162
+ throw new Error('Chainlink ETH/USD price is invalid');
163
+ }
164
+ // Scale price to 1e18 without using bigint exponent operator (target constraints)
165
+ if (dec > 18) {
166
+ throw new Error('Unexpected Chainlink decimals');
167
+ }
168
+ const pow10 = (exp) => {
169
+ if (exp <= 0)
170
+ return BigInt(1);
171
+ let result = BigInt(1);
172
+ for (let i = 0; i < exp; i++)
173
+ result *= BigInt(10);
174
+ return result;
175
+ };
176
+ const priceScale = pow10(18 - dec);
177
+ const price1e18 = answer * priceScale; // USD(1e18) per 1 ETH
178
+ // Convert USDT amount to USD(1e18) using token decimals (default 6)
179
+ const fromDecimals = typeof from.decimals === 'number' ? from.decimals : 6;
180
+ const usd1e18 = fromDecimals <= 18
181
+ ? amountIn * pow10(18 - fromDecimals)
182
+ : amountIn / pow10(fromDecimals - 18);
183
+ // ETH(wei) = (USD(1e18) * 1e18) / price1e18
184
+ const amountOutWei = (usd1e18 * pow10(18)) / price1e18;
185
+ const amountInHuman = parseFloat(utils_1.Utils.helpers.formatUnits(amountIn, { decimals: from.decimals }));
186
+ const amountOutHuman = parseFloat(utils_1.Utils.helpers.formatUnits(amountOutWei, { decimals: to.decimals }));
187
+ const rate = amountInHuman > 0 ? amountOutHuman / amountInHuman : 0;
188
+ return {
189
+ amountIn: amountIn.toString(),
190
+ amountOut: amountOutWei.toString(),
191
+ rate,
192
+ route: [from.symbol, to.symbol],
193
+ timestamp: Date.now(),
194
+ };
195
+ }
196
+ // Resolve RPCs from client config, falling back to defaults
197
+ const rpcUrls = orchestrator.getRpcUrls()[originChain] ||
198
+ chain_1.CHAIN_INFO[originChain].defaultRPC;
199
+ const evm = new evm_client_1.EvmClient({ rpcUrls });
200
+ // Minimal ABIs and known Uniswap V3 addresses (per network)
201
+ const UNISWAP_V3_FACTORY = originChain === enums_1.CHAIN.ETHEREUM_SEPOLIA
202
+ ? '0x0227628f3F023bb0B980b67D528571c95c6DaC1c'
203
+ : '0x1F98431c8aD98523631AE4a59f267346ea31F984';
204
+ const UNISWAP_V3_QUOTER_V2 = originChain === enums_1.CHAIN.ETHEREUM_SEPOLIA
205
+ ? '0xEd1f6473345F45b75F8179591dd5bA1888cf2FB3'
206
+ : '0x61fFE014bA17989E743c5F6cB21bF9697530B21e';
207
+ const factoryAbi = (0, viem_1.parseAbi)([
208
+ 'function getPool(address tokenA, address tokenB, uint24 fee) view returns (address)',
209
+ ]);
210
+ const quoterAbi = (0, viem_1.parseAbi)([
211
+ 'function quoteExactInputSingle((address tokenIn, address tokenOut, uint256 amountIn, uint24 fee, uint160 sqrtPriceLimitX96) params) returns (uint256 amountOut, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)',
212
+ ]);
213
+ const poolAbi = (0, viem_1.parseAbi)([
214
+ 'function liquidity() view returns (uint128)',
215
+ ]);
216
+ const feeTiers = [100, 500, 3000, 10000];
217
+ let bestAmountOut = BigInt(0);
218
+ let bestFee = null;
219
+ for (const fee of feeTiers) {
220
+ // Find pool address for this fee tier
221
+ const poolAddress = yield evm.readContract({
222
+ abi: factoryAbi,
223
+ address: UNISWAP_V3_FACTORY,
224
+ functionName: 'getPool',
225
+ args: [from.address, to.address, fee],
226
+ });
227
+ const isZero = !poolAddress ||
228
+ poolAddress.toLowerCase() ===
229
+ '0x0000000000000000000000000000000000000000';
230
+ if (isZero)
231
+ continue;
232
+ // Skip uninitialized/empty pools to avoid Quoter reverts
233
+ try {
234
+ const liquidity = yield evm.readContract({
235
+ abi: poolAbi,
236
+ address: poolAddress,
237
+ functionName: 'liquidity',
238
+ args: [],
239
+ });
240
+ if (!liquidity || liquidity === BigInt(0)) {
241
+ continue;
242
+ }
243
+ }
244
+ catch (_e) {
245
+ // If we can't read liquidity, skip this pool/fee tier
246
+ continue;
247
+ }
248
+ // Quote exact input single for this fee tier; catch reverts due to empty/uninitialized pools
249
+ try {
250
+ const result = yield evm.readContract({
251
+ abi: quoterAbi,
252
+ address: UNISWAP_V3_QUOTER_V2,
253
+ functionName: 'quoteExactInputSingle',
254
+ args: [
255
+ {
256
+ tokenIn: from.address,
257
+ tokenOut: to.address,
258
+ amountIn,
259
+ fee,
260
+ sqrtPriceLimitX96: BigInt(0),
261
+ },
262
+ ],
263
+ });
264
+ const amountOut = (_d = result === null || result === void 0 ? void 0 : result[0]) !== null && _d !== void 0 ? _d : BigInt(0);
265
+ if (amountOut > bestAmountOut) {
266
+ bestAmountOut = amountOut;
267
+ bestFee = fee;
268
+ }
269
+ }
270
+ catch (_f) {
271
+ // try next fee
272
+ }
273
+ }
274
+ if (!bestFee) {
275
+ throw new Error('No direct Uniswap V3 pool found for the given token pair on common fee tiers');
276
+ }
277
+ // Compute normalized rate: tokenOut per tokenIn
278
+ const amountInHuman = parseFloat(utils_1.Utils.helpers.formatUnits(amountIn, { decimals: from.decimals }));
279
+ const amountOutHuman = parseFloat(utils_1.Utils.helpers.formatUnits(bestAmountOut, { decimals: to.decimals }));
280
+ const rate = amountInHuman > 0 ? amountOutHuman / amountInHuman : 0;
281
+ return {
282
+ amountIn: amountIn.toString(),
283
+ amountOut: bestAmountOut.toString(),
284
+ rate,
285
+ route: [from.symbol, to.symbol],
286
+ timestamp: Date.now(),
287
+ };
288
+ }),
289
+ };
100
290
  }
101
291
  /**
102
292
  * @private
@@ -1 +1 @@
1
- {"version":3,"file":"push-chain.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/push-chain/push-chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push-chain.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/push-chain/push-chain.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import { convertOriginToExecutor, fromChainAgnostic, convertExecutorToOriginAccount, toChainAgnostic, toUniversal } from './universal/account';
2
2
  import { construct, toUniversal as toUniversalSigner, toUniversalFromKeypair } from './universal/signer';
3
+ import { CHAIN } from './constants/enums';
4
+ import type { PushChain } from './push-chain/push-chain';
3
5
  /**
4
6
  * @dev - THESE UTILS ARE EXPORTED TO SDK CONSUMER
5
7
  * @dev - Make sure each exported fn has good comments to help out sdk consumer
@@ -55,7 +57,7 @@ export declare class Utils {
55
57
  * For example, converting "1.5" ETH to wei (18 decimals) would be parseUnits("1.5", 18).
56
58
  *
57
59
  * @param {string} value - The string representation of the number to multiply.
58
- * @param {number} exponent - The exponent (number of decimal places).
60
+ * @param {number | {decimals: number}} exponent - The exponent (number of decimal places) or an object with decimals property.
59
61
  * @returns {bigint} The result as a bigint.
60
62
  *
61
63
  * @example
@@ -65,7 +67,101 @@ export declare class Utils {
65
67
  * @example
66
68
  * Utils.helpers.parseUnits('1.5', 18)
67
69
  * // → 1500000000000000000n
70
+ *
71
+ * @example
72
+ * Utils.helpers.parseUnits('1.5', {decimals: 18})
73
+ * // → 1500000000000000000n
68
74
  */
69
- parseUnits(value: string, exponent: number): bigint;
75
+ parseUnits(value: string, exponent: number | {
76
+ decimals: number;
77
+ }): bigint;
78
+ /**
79
+ * Formats a value from smallest units to human-readable string.
80
+ *
81
+ * Supports both EVM-style (like ethers/viem) and Push-style (options object) usage patterns.
82
+ * Always returns a string for UI safety.
83
+ *
84
+ * @param {bigint | string} value - The value in smallest units (e.g., "1500000" or 1500000000000000000n).
85
+ * @param {number | {decimals: number; precision?: number}} decimalsOrOptions - Token decimals or options object.
86
+ * @returns {string} Human-readable string (e.g., "1.5").
87
+ *
88
+ * @example
89
+ * // EVM-style usage
90
+ * Utils.helpers.formatUnits(1500000000000000000n, 18)
91
+ * // → "1.5"
92
+ *
93
+ * @example
94
+ * // Push-style usage
95
+ * Utils.helpers.formatUnits("1500000", { decimals: 6 })
96
+ * // → "1.5"
97
+ *
98
+ * @example
99
+ * // With precision (truncate after 2 decimals)
100
+ * Utils.helpers.formatUnits("1234567", { decimals: 6, precision: 2 })
101
+ * // → "1.23"
102
+ */
103
+ formatUnits(value: bigint | string, decimalsOrOptions: number | {
104
+ decimals: number;
105
+ precision?: number;
106
+ }): string;
107
+ /**
108
+ * Calculates the minimum amount out after applying slippage.
109
+ *
110
+ * Given an input amount and slippage in basis points, returns the minimum amount
111
+ * that should be received after accounting for slippage.
112
+ *
113
+ * @param {string} amount - The input amount in smallest units (e.g., "100000000" for 100 USDC with 6 decimals)
114
+ * @param {object} options - Configuration options
115
+ * @param {number} options.slippageBps - Slippage in basis points (100 = 1%, 50 = 0.5%)
116
+ * @returns {string} The minimum amount out in smallest units
117
+ *
118
+ * @example
119
+ * // Calculate minimum amount for 100 USDC with 1% slippage
120
+ * const amount = PushChain.utils.helpers.parseUnits("100", 6); // "100000000"
121
+ * const minOut = PushChain.utils.helpers.slippageToMinAmount(amount, {
122
+ * slippageBps: 100, // 1%
123
+ * });
124
+ * // => "99000000" (99 USDC in smallest units)
125
+ *
126
+ * @example
127
+ * // Simple case with whole numbers
128
+ * const minOut = PushChain.utils.helpers.slippageToMinAmount("100", {
129
+ * slippageBps: 100, // 1%
130
+ * });
131
+ * // => "99"
132
+ */
133
+ slippageToMinAmount(amount: string, options: {
134
+ slippageBps: number;
135
+ }): string;
136
+ };
137
+ /**
138
+ * Returns supported moveable tokens as a flat list with chain info.
139
+ * - If a specific chain or a PushChain client is passed, returns only that chain's tokens
140
+ * - Otherwise returns tokens across all chains
141
+ */
142
+ static getMoveableTokens(chainOrClient?: CHAIN | PushChain): {
143
+ tokens: Array<{
144
+ chain: CHAIN;
145
+ symbol: string;
146
+ decimals: number;
147
+ address: string;
148
+ }>;
149
+ };
150
+ /**
151
+ * Returns supported payable tokens as a flat list with chain info.
152
+ * - If a specific chain or a PushChain client is passed, returns only that chain's tokens
153
+ * - Otherwise returns tokens across all chains
154
+ */
155
+ static getPayableTokens(chainOrClient?: CHAIN | PushChain): {
156
+ tokens: Array<{
157
+ chain: CHAIN;
158
+ symbol: string;
159
+ decimals: number;
160
+ address: string;
161
+ }>;
70
162
  };
163
+ /**
164
+ * Internal: resolves a CHAIN enum from either a CHAIN value or a PushChain client instance.
165
+ */
166
+ private static resolveChainFromInput;
71
167
  }