@reyaxyz/common 0.341.0 → 0.343.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/README.md +1 -1
- package/dist/trading-api-types.js.map +1 -1
- package/dist/transactions/abis/OFT.json +201 -0
- package/dist/transactions/abis/Periphery.json +233 -0
- package/dist/transactions/index.js +3 -1
- package/dist/transactions/index.js.map +1 -1
- package/dist/types/trading-api-types.d.ts +8 -0
- package/dist/types/trading-api-types.d.ts.map +1 -1
- package/dist/types/transactions/index.d.ts +1 -0
- package/dist/types/transactions/index.d.ts.map +1 -1
- package/dist/types/types.d.ts +2 -1
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils/calculate.d.ts +32 -1
- package/dist/types/utils/calculate.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/layerzero/index.d.ts +3 -0
- package/dist/types/utils/layerzero/index.d.ts.map +1 -0
- package/dist/types/utils/layerzero/oft-config.d.ts +4 -0
- package/dist/types/utils/layerzero/oft-config.d.ts.map +1 -0
- package/dist/types/utils/layerzero/types.d.ts +23 -0
- package/dist/types/utils/layerzero/types.d.ts.map +1 -0
- package/dist/types/utils/token/token-info.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/calculate.js +69 -2
- package/dist/utils/calculate.js.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/layerzero/index.js +19 -0
- package/dist/utils/layerzero/index.js.map +1 -0
- package/dist/utils/layerzero/oft-config.js +29 -0
- package/dist/utils/layerzero/oft-config.js.map +1 -0
- package/dist/utils/layerzero/types.js +3 -0
- package/dist/utils/layerzero/types.js.map +1 -0
- package/dist/utils/token/token-info.js +64 -0
- package/dist/utils/token/token-info.js.map +1 -1
- package/package.json +2 -2
- package/src/trading-api-types.ts +11 -0
- package/src/transactions/abis/OFT.json +201 -0
- package/src/transactions/abis/Periphery.json +233 -0
- package/src/transactions/index.ts +1 -0
- package/src/types.ts +3 -0
- package/src/utils/calculate.ts +86 -1
- package/src/utils/index.ts +1 -0
- package/src/utils/layerzero/index.ts +2 -0
- package/src/utils/layerzero/oft-config.ts +32 -0
- package/src/utils/layerzero/types.ts +25 -0
- package/src/utils/token/token-info.ts +64 -0
package/dist/utils/calculate.js
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
+
if (ar || !(i in from)) {
|
|
5
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
+
ar[i] = from[i];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
+
};
|
|
2
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
13
|
};
|
|
5
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.calculatePositionAdlPnL = exports.calculatePositionAdjustedQty = exports.calculateRealBalance = exports.calculatePricePnl = exports.calculateFundingPnl = exports.calculateTotalMargin = exports.calculateMarginRatio = exports.calculateLMR = exports.calculateIMR = exports.calculateMaxOrderSize = exports.calculateRequiredMargin = exports.calculateLeverage = exports.calculateEstimatedLiquidationPrice = exports.calculateSpread = exports.calculateTradeFee = exports.calculateEstimatedExecutionPrice = exports.computeNewLogF = exports.splitTradeExposure = exports.calculateMaxExposure = exports.calculateMaxWithdraw = exports.POOL_IMR = void 0;
|
|
15
|
+
exports.calculatePositionAdlPnL = exports.calculateDynamicDepthFactor = exports.interpolateDepthRatio = exports.calculatePositionAdjustedQty = exports.calculateRealBalance = exports.calculatePricePnl = exports.calculateFundingPnl = exports.calculateTotalMargin = exports.calculateMarginRatio = exports.calculateLMR = exports.calculateIMR = exports.calculateMaxOrderSize = exports.calculateRequiredMargin = exports.calculateLeverage = exports.calculateEstimatedLiquidationPrice = exports.calculateSpread = exports.calculateTradeFee = exports.calculateEstimatedExecutionPrice = exports.computeNewLogF = exports.splitTradeExposure = exports.calculateMaxExposure = exports.calculateMaxWithdraw = exports.POOL_IMR = void 0;
|
|
7
16
|
var struct_1 = require("./struct");
|
|
8
17
|
var bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
9
18
|
exports.POOL_IMR = 9.1;
|
|
@@ -293,8 +302,66 @@ var calculatePositionAdjustedQty = function (origQty, marketBaseMultiplier, posi
|
|
|
293
302
|
};
|
|
294
303
|
exports.calculatePositionAdjustedQty = calculatePositionAdjustedQty;
|
|
295
304
|
/**
|
|
296
|
-
*
|
|
305
|
+
* Linearly interpolate a depth ratio from a (thresholds, ratios) curve.
|
|
306
|
+
* The curve implicitly starts at (exposure=0, ratio=1.0).
|
|
307
|
+
* - Between thresholds: linear interpolation
|
|
308
|
+
* - Above last threshold: last ratio (flat extrapolation)
|
|
309
|
+
*
|
|
310
|
+
* @param thresholds - Sorted ascending exposure thresholds in notional USD (must be non-empty)
|
|
311
|
+
* @param ratios - Depth ratio at each threshold (same length as thresholds, must be non-empty)
|
|
312
|
+
* @param exposure - Absolute exposure notional (must be >= 0)
|
|
313
|
+
* @throws if thresholds or ratios are empty, or if they have different lengths
|
|
297
314
|
*/
|
|
315
|
+
var interpolateDepthRatio = function (thresholds, ratios, exposure) {
|
|
316
|
+
if (exposure < 0) {
|
|
317
|
+
throw new Error('interpolateDepthRatio: exposure must be >= 0');
|
|
318
|
+
}
|
|
319
|
+
if (thresholds.length === 0 || ratios.length === 0) {
|
|
320
|
+
throw new Error('interpolateDepthRatio: thresholds and ratios must be non-empty');
|
|
321
|
+
}
|
|
322
|
+
if (thresholds.length !== ratios.length) {
|
|
323
|
+
throw new Error('interpolateDepthRatio: thresholds and ratios must have equal length');
|
|
324
|
+
}
|
|
325
|
+
var allThresholds = __spreadArray([0], thresholds, true);
|
|
326
|
+
var allRatios = __spreadArray([1.0], ratios, true);
|
|
327
|
+
if (exposure === 0)
|
|
328
|
+
return 1.0;
|
|
329
|
+
if (exposure >= allThresholds[allThresholds.length - 1]) {
|
|
330
|
+
return allRatios[allRatios.length - 1];
|
|
331
|
+
}
|
|
332
|
+
for (var i = 0; i < allThresholds.length - 1; i++) {
|
|
333
|
+
if (exposure <= allThresholds[i + 1]) {
|
|
334
|
+
var t = (exposure - allThresholds[i]) /
|
|
335
|
+
(allThresholds[i + 1] - allThresholds[i]);
|
|
336
|
+
return allRatios[i] + t * (allRatios[i + 1] - allRatios[i]);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
throw new Error('interpolateDepthRatio: unreachable');
|
|
340
|
+
};
|
|
341
|
+
exports.interpolateDepthRatio = interpolateDepthRatio;
|
|
342
|
+
/**
|
|
343
|
+
* Calculate the dynamic depth factor for a trade given pool state and config.
|
|
344
|
+
*
|
|
345
|
+
* The pool takes the opposite side of the trade, so:
|
|
346
|
+
* poolNotionalAfterTrade = currentPoolNotional - signedTradeNotional
|
|
347
|
+
*
|
|
348
|
+
* The depth ratio is interpolated from the exposure curve, then multiplied
|
|
349
|
+
* by baseDepth to produce the final depth factor.
|
|
350
|
+
*
|
|
351
|
+
* @param baseDepth - Base depth multiplier for this market
|
|
352
|
+
* @param thresholds - Sorted ascending exposure thresholds (notional USD)
|
|
353
|
+
* @param ratios - Depth ratio at each threshold
|
|
354
|
+
* @param currentPoolNotional - Pool's current notional in this market (signed)
|
|
355
|
+
* @param signedTradeNotional - Trade notional (positive=buy, negative=sell)
|
|
356
|
+
*/
|
|
357
|
+
var calculateDynamicDepthFactor = function (_a) {
|
|
358
|
+
var baseDepth = _a.baseDepth, thresholds = _a.thresholds, ratios = _a.ratios, currentPoolNotional = _a.currentPoolNotional, signedTradeNotional = _a.signedTradeNotional;
|
|
359
|
+
var poolNotionalAfterTrade = currentPoolNotional - signedTradeNotional;
|
|
360
|
+
var absExposureNotional = Math.abs(poolNotionalAfterTrade);
|
|
361
|
+
var depthRatio = (0, exports.interpolateDepthRatio)(thresholds, ratios, absExposureNotional);
|
|
362
|
+
return depthRatio * baseDepth;
|
|
363
|
+
};
|
|
364
|
+
exports.calculateDynamicDepthFactor = calculateDynamicDepthFactor;
|
|
298
365
|
var calculatePositionAdlPnL = function (_a) {
|
|
299
366
|
var marketTrackerAdlUnwindPrice = _a.marketTrackerAdlUnwindPrice, marketTrackerBaseMultiplier = _a.marketTrackerBaseMultiplier, positionBase = _a.positionBase, positionAvgEntryPrice = _a.positionAvgEntryPrice, positionTrackerBaseMultiplier = _a.positionTrackerBaseMultiplier, positionTrackerAdlUnwindPrice = _a.positionTrackerAdlUnwindPrice;
|
|
300
367
|
var currentAdlUnwindPrice = marketTrackerAdlUnwindPrice
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculate.js","sourceRoot":"/","sources":["utils/calculate.ts"],"names":[],"mappings":"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","sourcesContent":["import { mergeMap } from './struct';\nimport BigNumber from 'bignumber.js';\n\nexport const POOL_IMR = 9.1;\n\ntype MarketId = string;\ntype Address = string;\n\n/**\n * Calculates the maximum amount that can be withdrawn in terms of the token\n * (e.g., if rUSD then in rUSD terms, if WETH then in WETH terms)\n */\nexport const calculateMaxWithdraw = ({\n currentIMR,\n marginBalance,\n realBalance,\n haircut,\n price,\n}: {\n /** Current Initial Margin Requirement of the account in rUSD terms */\n currentIMR: number;\n /** Current margin balance of the account (expected to already include haircuts) in rUSD terms */\n marginBalance: number;\n /**\n * Current real balance of the token the user wants to withdraw in token terms.\n * For rUSD: this equals net deposits (balanceDeprecated from v2 endpoints + realized PnL).\n * For all other tokens: this equals balanceDeprecated (since realized PnL is 0 for them).\n */\n realBalance: number;\n /**\n * Haircut parameter of the token.\n * Note: haircut for rUSD is always expected to be 0.\n */\n haircut: number;\n /** Price of the token in rUSD terms */\n price: number;\n}): number => {\n if (currentIMR < 0 || price < 0 || haircut < 0) {\n throw new Error('currentIMR, price, and haircut cannot be negative');\n }\n\n if (currentIMR === 0) {\n return realBalance;\n }\n\n if (haircut === 1 || price === 0) {\n return 0;\n }\n\n const availableMargin = marginBalance - currentIMR;\n const maxFromMargin = availableMargin / (price * (1 - haircut));\n\n return Math.max(0, Math.min(realBalance, maxFromMargin));\n};\n\nexport const calculateMaxExposure = ({\n poolBalance,\n riskFactor,\n poolIMR = POOL_IMR,\n}: {\n poolBalance: number;\n poolIMR?: number;\n riskFactor: number;\n}) => poolBalance / (poolIMR * Math.sqrt(riskFactor));\n\n/**\n * Splits a trade exposure into rebalancing and unbalancing portions relative to pool net exposure.\n * Rebalancing reduces pool's absolute exposure; unbalancing increases it.\n */\nexport const splitTradeExposure = (\n tradeExposure: number,\n poolNetExposure: number,\n): { rebalancing: number; unbalancing: number } => {\n if (tradeExposure === 0) {\n return { rebalancing: 0, unbalancing: 0 };\n }\n\n // If pool has no exposure, entire trade is unbalancing\n if (poolNetExposure === 0) {\n return { rebalancing: 0, unbalancing: tradeExposure };\n }\n\n // Opposite sign means trade increases pool exposure → pure unbalancing\n const sameSign =\n (poolNetExposure > 0 && tradeExposure > 0) ||\n (poolNetExposure < 0 && tradeExposure < 0);\n if (!sameSign) {\n return { rebalancing: 0, unbalancing: tradeExposure };\n }\n\n // Same sign: trade reduces pool exposure (pool takes opposite side)\n const absPool = Math.abs(poolNetExposure);\n const absTrade = Math.abs(tradeExposure);\n\n if (absTrade <= absPool) {\n // Pure rebalancing — trade doesn't cross zero\n return { rebalancing: tradeExposure, unbalancing: 0 };\n }\n\n // Mixed: rebalance up to pool exposure, then unbalance the rest\n const rebalancing = poolNetExposure;\n const unbalancing = tradeExposure - rebalancing;\n return { rebalancing, unbalancing };\n};\n\n/**\n * Computes the new log price multiplier (logF) after a trade, handling both\n * rebalancing and unbalancing portions.\n *\n * Mirrors on-chain logic in PriceMultiplier.sol:computeNewLogPriceMultiplier.\n */\nexport const computeNewLogF = ({\n currentLogF,\n tradeExposure,\n poolNetExposure,\n depthFactor,\n maxExposure,\n}: {\n currentLogF: number;\n tradeExposure: number;\n poolNetExposure: number;\n depthFactor: number;\n maxExposure: number;\n}): number => {\n if (tradeExposure === 0) return currentLogF;\n\n const { rebalancing, unbalancing } = splitTradeExposure(\n tradeExposure,\n poolNetExposure,\n );\n\n // Case 1: Has unbalancing portion (includes mixed trades)\n if (unbalancing !== 0) {\n // If also rebalancing, it brings logF to 0 by definition (trade crosses zero)\n const startLogF = rebalancing === 0 ? currentLogF : 0;\n return startLogF + unbalancing / (depthFactor * maxExposure);\n }\n\n // Case 2: Only rebalancing\n // Both rebalancing and poolNetExposure have the same sign, so ratio is in [0, 1]\n if (rebalancing !== 0 && poolNetExposure !== 0) {\n const ratio = rebalancing / poolNetExposure;\n return currentLogF * (1 - ratio);\n }\n\n return currentLogF;\n};\n\n/**\n * Estimates the execution price for a trade using the exponential logPriceMultiplier formula.\n *\n * Mirrors on-chain logic:\n * 1. computeNewLogPriceMultiplier (PriceMultiplier.sol)\n * 2. computeAmmPrice: ammPrice = oraclePrice * exp(logF)\n * 3. computeSignedSpread: executionPrice = ammPrice * (1 + signedSpread)\n *\n * @audit spreadDiscount not applied — known limitation, to be addressed later\n * @audit priceSpacing rounding not applied\n */\nexport const calculateEstimatedExecutionPrice = ({\n oraclePrice,\n currentLogF,\n tradeExposure,\n poolNetExposure,\n depthFactor,\n maxExposure,\n priceSpread,\n}: {\n oraclePrice: number;\n currentLogF: number;\n tradeExposure: number;\n poolNetExposure: number;\n depthFactor: number;\n maxExposure: number;\n priceSpread: number;\n}): number => {\n if (tradeExposure === 0) {\n return oraclePrice * Math.exp(currentLogF);\n }\n\n // 1. Compute new logF after trade impact\n const newLogF = computeNewLogF({\n currentLogF,\n tradeExposure,\n poolNetExposure,\n depthFactor,\n maxExposure,\n });\n\n // 2. Compute AMM price: oraclePrice * exp(newLogF)\n const ammPrice = oraclePrice * Math.exp(newLogF);\n\n // 3. Apply signed spread\n const signedSpread = tradeExposure > 0 ? priceSpread : -priceSpread;\n return Math.max(0, ammPrice * (1 + signedSpread));\n};\n\nexport const calculateTradeFee = ({\n feeRate,\n tradeNotional,\n}: {\n feeRate: number;\n tradeNotional: number;\n}) => feeRate * Math.abs(tradeNotional);\n\nexport const calculateSpread = ({\n depthFactor,\n maxExposure,\n oraclePrice,\n poolPrice,\n tradeNotional,\n}: {\n depthFactor: number;\n maxExposure: number;\n oraclePrice: number;\n poolPrice: number;\n tradeNotional: number;\n}) =>\n (poolPrice / oraclePrice) *\n (1 + tradeNotional / (depthFactor * maxExposure) - 1) *\n tradeNotional;\n\nexport const calculateEstimatedLiquidationPrice = ({\n LMR,\n accountBalance,\n isShort,\n notional,\n oraclePrice,\n}: {\n LMR: number;\n accountBalance: number;\n isShort: boolean;\n notional: number;\n oraclePrice: number;\n}) =>\n Math.max(\n 0,\n oraclePrice *\n (1 - ((accountBalance - LMR) / notional) * (isShort ? -1 : 1)),\n );\n\nexport const calculateLeverage = ({\n imrMultiplier,\n riskFactor,\n}: {\n imrMultiplier: number;\n riskFactor: number;\n}) => 1 / (imrMultiplier * Math.sqrt(riskFactor));\n\nexport const calculateRequiredMargin = ({\n currIMR,\n currentNotional,\n leverage,\n tradeNotional,\n}: {\n currIMR: number;\n currentNotional: number;\n leverage: number;\n tradeNotional: number;\n}) =>\n currIMR +\n (Math.abs(currentNotional + tradeNotional) - Math.abs(currentNotional)) /\n leverage;\n\nexport const calculateMaxOrderSize = ({\n currIMR,\n currNodeBalance,\n currNotional,\n depthFactor,\n extendingPosition,\n feeRate,\n isShortTrade,\n leverage,\n maxExposure,\n oraclePrice,\n poolPrice,\n}: {\n currIMR: number;\n currNodeBalance: number;\n currNotional: number;\n depthFactor: number;\n extendingPosition: boolean;\n feeRate: number;\n isShortTrade: boolean;\n leverage: number;\n maxExposure: number;\n oraclePrice: number;\n poolPrice: number;\n}) => {\n const a = poolPrice / oraclePrice;\n const c = 1 / (depthFactor * maxExposure);\n const R = a - 1 - feeRate * (isShortTrade ? -1 : 1);\n const SN = currNotional < 0 ? -1 : 1;\n const Q = R - (SN / leverage) * (extendingPosition ? 1 : -1);\n return Math.abs(\n (-1 * Q +\n Math.sqrt(\n Math.pow(Q, 2) -\n 4 *\n a *\n c *\n (currNodeBalance -\n currIMR +\n (extendingPosition ? 0 : ((2 * SN) / leverage) * currNotional)),\n ) *\n (isShortTrade ? 1 : -1)) /\n (2 * a * c),\n );\n};\n\nexport const calculateIMR = ({\n marketLeverages,\n marketPrices,\n positions,\n}: {\n marketLeverages: Map<MarketId, number>;\n marketPrices: Map<MarketId, number>;\n positions: Map<MarketId, number>;\n}) => {\n return Array.from(positions.entries()).reduce(\n (sum, [marketId, positionSize]) => {\n const leverage = marketLeverages.get(marketId);\n return leverage\n ? sum +\n (Math.abs(positionSize) * (marketPrices.get(marketId) ?? 0)) /\n leverage\n : sum;\n },\n 0,\n );\n};\n\nexport const calculateLMR = ({\n marketPrices,\n positions,\n riskFactors,\n marketId,\n tradeSize,\n}: {\n marketId?: string;\n marketPrices: Map<MarketId, number>;\n positions: Map<MarketId, number>;\n riskFactors: Map<MarketId, number>;\n tradeSize?: number;\n}) =>\n Array.from(\n (marketId && tradeSize\n ? mergeMap(positions, [\n [marketId, (positions.get(marketId) ?? 0) + tradeSize],\n ])\n : positions\n ).entries(),\n ).reduce((sum, [marketId, positionSize]) => {\n const riskFactor = riskFactors.get(marketId);\n return riskFactor\n ? sum +\n Math.abs(positionSize) *\n (marketPrices.get(marketId) ?? 0) *\n Math.sqrt(riskFactor)\n : sum;\n }, 0);\n\n// if account balance is below LMR position is liquidable\n\nexport const calculateMarginRatio = ({\n LMR,\n totalBalance,\n tradeCost,\n}: {\n LMR: number;\n totalBalance: number;\n tradeCost: number;\n}) => {\n if (LMR === 0) {\n return 0;\n }\n if (tradeCost > totalBalance) {\n return 1;\n }\n if (totalBalance === tradeCost) {\n return Infinity;\n }\n return Math.min(1, LMR / (totalBalance - tradeCost));\n};\n\nexport const calculateTotalMargin = ({\n marketsTrackers,\n accountBalances,\n assetPrices,\n markPrices,\n marketsTokenInfo,\n positions,\n rUSDAddress,\n}: {\n accountBalances: Map<Address, number>;\n assetPrices: Map<Address, number>;\n markPrices: Map<Address, number>;\n marketsTokenInfo: Map<\n MarketId,\n {\n quoteTokenId: string;\n underlyingAssetId: string;\n }\n >;\n marketsTrackers: Map<\n MarketId,\n {\n longADLUnwindPrice: number;\n longBaseMultiplier: number;\n longFundingValue: number;\n shortADLUnwindPrice: number;\n shortBaseMultiplier: number;\n shortFundingValue: number;\n }\n >;\n positions: {\n adlUnwindPrice: number;\n base: number;\n baseMultiplier: number;\n fundingValue: number;\n lastPrice: number;\n marketId: string;\n realizedPnl: number;\n }[];\n rUSDAddress?: string;\n}) => {\n const pnl = new Map<Address, number>();\n const rUSDPrice = (rUSDAddress && assetPrices.get(rUSDAddress)) ?? 1;\n positions.forEach((position) => {\n const marketTracker = marketsTrackers?.get(position.marketId);\n const tokenInfo = marketsTokenInfo.get(position.marketId);\n if (!tokenInfo) return;\n let fundingCashFlow = 0;\n let adlCashFlow = 0;\n\n if (marketTracker) {\n // fundingCashFlow\n const marketTrackerFundingValue =\n position.base < 0\n ? marketTracker.shortFundingValue\n : marketTracker.longFundingValue;\n const trackerDelta = marketTrackerFundingValue - position.fundingValue;\n fundingCashFlow =\n (trackerDelta / position.baseMultiplier) * -1 * position.base;\n\n // adlCashFlow\n const adlUnwindPrice =\n ((position.base < 0\n ? marketTracker.shortADLUnwindPrice\n : marketTracker.longADLUnwindPrice) -\n position.adlUnwindPrice) /\n position.baseMultiplier;\n const baseMultiplier =\n (position.base < 0\n ? marketTracker.shortBaseMultiplier\n : marketTracker.longBaseMultiplier) / position.baseMultiplier;\n const lastPriceCoefficient = 1 - baseMultiplier;\n const initialPrice = lastPriceCoefficient * position.lastPrice;\n adlCashFlow = (adlUnwindPrice - initialPrice) * position.base;\n }\n\n const unrealizedPnl =\n ((markPrices.get(tokenInfo.quoteTokenId) ?? 0) - position.lastPrice) *\n position.base;\n\n pnl.set(\n tokenInfo.underlyingAssetId,\n (pnl.get(tokenInfo.underlyingAssetId) ?? 0) +\n position.realizedPnl +\n fundingCashFlow +\n adlCashFlow +\n unrealizedPnl,\n );\n });\n\n return Array.from(accountBalances.entries()).reduce(\n (sum, [address, balance]) =>\n sum +\n (balance + (pnl.get(address) ?? 0)) *\n (address === rUSDAddress\n ? 1\n : (assetPrices.get(address) ?? 0) / (rUSDPrice || 1)),\n 0,\n );\n};\n\nexport const calculateFundingPnl = ({\n marketFundingValue,\n marketBaseMultiplier,\n positionAvgEntryFundingValue,\n positionAdjustedBase,\n}: {\n marketFundingValue: number;\n marketBaseMultiplier: number;\n positionAvgEntryFundingValue: number;\n positionAdjustedBase: number;\n}): number => {\n return (\n -1 *\n (((marketFundingValue - positionAvgEntryFundingValue) *\n positionAdjustedBase) /\n marketBaseMultiplier)\n );\n};\n\nexport const calculatePricePnl = ({\n price,\n positionAvgEntryPrice,\n positionAdjustedBase,\n}: {\n price: number;\n positionAvgEntryPrice: number;\n positionAdjustedBase: number;\n}): number => {\n return (price - positionAvgEntryPrice) * positionAdjustedBase;\n};\n\nexport const calculateRealBalance = (\n netDeposits: BigNumber,\n realized_pnl: BigNumber,\n) => {\n return netDeposits.plus(realized_pnl);\n};\n\nexport const calculatePositionAdjustedQty = (\n origQty: BigNumber,\n marketBaseMultiplier: BigNumber,\n positionBaseMultiplier: BigNumber,\n): BigNumber => {\n return origQty.times(marketBaseMultiplier).div(positionBaseMultiplier);\n};\n\n/**\n * Note: This function assumes all the inputs are scaled by 10^18.\n */\nexport const calculatePositionAdlPnL = ({\n marketTrackerAdlUnwindPrice,\n marketTrackerBaseMultiplier,\n positionBase,\n positionAvgEntryPrice,\n positionTrackerBaseMultiplier,\n positionTrackerAdlUnwindPrice,\n}: {\n marketTrackerAdlUnwindPrice: BigNumber;\n marketTrackerBaseMultiplier: BigNumber;\n positionBase: BigNumber;\n positionAvgEntryPrice: BigNumber;\n positionTrackerBaseMultiplier: BigNumber;\n positionTrackerAdlUnwindPrice: BigNumber;\n}): BigNumber => {\n const currentAdlUnwindPrice = marketTrackerAdlUnwindPrice\n .minus(positionTrackerAdlUnwindPrice)\n .multipliedBy(1e18)\n .div(positionTrackerBaseMultiplier);\n\n const initialPrice = positionAvgEntryPrice\n .times(\n BigNumber(1e18).minus(\n marketTrackerBaseMultiplier\n .multipliedBy(1e18)\n .div(positionTrackerBaseMultiplier),\n ),\n )\n .div(1e18);\n\n const adlPnL = positionBase\n .times(currentAdlUnwindPrice.minus(initialPrice))\n .div(1e18);\n\n return adlPnL;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"calculate.js","sourceRoot":"/","sources":["utils/calculate.ts"],"names":[],"mappings":"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","sourcesContent":["import { mergeMap } from './struct';\nimport BigNumber from 'bignumber.js';\n\nexport const POOL_IMR = 9.1;\n\ntype MarketId = string;\ntype Address = string;\n\n/**\n * Calculates the maximum amount that can be withdrawn in terms of the token\n * (e.g., if rUSD then in rUSD terms, if WETH then in WETH terms)\n */\nexport const calculateMaxWithdraw = ({\n currentIMR,\n marginBalance,\n realBalance,\n haircut,\n price,\n}: {\n /** Current Initial Margin Requirement of the account in rUSD terms */\n currentIMR: number;\n /** Current margin balance of the account (expected to already include haircuts) in rUSD terms */\n marginBalance: number;\n /**\n * Current real balance of the token the user wants to withdraw in token terms.\n * For rUSD: this equals net deposits (balanceDeprecated from v2 endpoints + realized PnL).\n * For all other tokens: this equals balanceDeprecated (since realized PnL is 0 for them).\n */\n realBalance: number;\n /**\n * Haircut parameter of the token.\n * Note: haircut for rUSD is always expected to be 0.\n */\n haircut: number;\n /** Price of the token in rUSD terms */\n price: number;\n}): number => {\n if (currentIMR < 0 || price < 0 || haircut < 0) {\n throw new Error('currentIMR, price, and haircut cannot be negative');\n }\n\n if (currentIMR === 0) {\n return realBalance;\n }\n\n if (haircut === 1 || price === 0) {\n return 0;\n }\n\n const availableMargin = marginBalance - currentIMR;\n const maxFromMargin = availableMargin / (price * (1 - haircut));\n\n return Math.max(0, Math.min(realBalance, maxFromMargin));\n};\n\nexport const calculateMaxExposure = ({\n poolBalance,\n riskFactor,\n poolIMR = POOL_IMR,\n}: {\n poolBalance: number;\n poolIMR?: number;\n riskFactor: number;\n}) => poolBalance / (poolIMR * Math.sqrt(riskFactor));\n\n/**\n * Splits a trade exposure into rebalancing and unbalancing portions relative to pool net exposure.\n * Rebalancing reduces pool's absolute exposure; unbalancing increases it.\n */\nexport const splitTradeExposure = (\n tradeExposure: number,\n poolNetExposure: number,\n): { rebalancing: number; unbalancing: number } => {\n if (tradeExposure === 0) {\n return { rebalancing: 0, unbalancing: 0 };\n }\n\n // If pool has no exposure, entire trade is unbalancing\n if (poolNetExposure === 0) {\n return { rebalancing: 0, unbalancing: tradeExposure };\n }\n\n // Opposite sign means trade increases pool exposure → pure unbalancing\n const sameSign =\n (poolNetExposure > 0 && tradeExposure > 0) ||\n (poolNetExposure < 0 && tradeExposure < 0);\n if (!sameSign) {\n return { rebalancing: 0, unbalancing: tradeExposure };\n }\n\n // Same sign: trade reduces pool exposure (pool takes opposite side)\n const absPool = Math.abs(poolNetExposure);\n const absTrade = Math.abs(tradeExposure);\n\n if (absTrade <= absPool) {\n // Pure rebalancing — trade doesn't cross zero\n return { rebalancing: tradeExposure, unbalancing: 0 };\n }\n\n // Mixed: rebalance up to pool exposure, then unbalance the rest\n const rebalancing = poolNetExposure;\n const unbalancing = tradeExposure - rebalancing;\n return { rebalancing, unbalancing };\n};\n\n/**\n * Computes the new log price multiplier (logF) after a trade, handling both\n * rebalancing and unbalancing portions.\n *\n * Mirrors on-chain logic in PriceMultiplier.sol:computeNewLogPriceMultiplier.\n */\nexport const computeNewLogF = ({\n currentLogF,\n tradeExposure,\n poolNetExposure,\n depthFactor,\n maxExposure,\n}: {\n currentLogF: number;\n tradeExposure: number;\n poolNetExposure: number;\n depthFactor: number;\n maxExposure: number;\n}): number => {\n if (tradeExposure === 0) return currentLogF;\n\n const { rebalancing, unbalancing } = splitTradeExposure(\n tradeExposure,\n poolNetExposure,\n );\n\n // Case 1: Has unbalancing portion (includes mixed trades)\n if (unbalancing !== 0) {\n // If also rebalancing, it brings logF to 0 by definition (trade crosses zero)\n const startLogF = rebalancing === 0 ? currentLogF : 0;\n return startLogF + unbalancing / (depthFactor * maxExposure);\n }\n\n // Case 2: Only rebalancing\n // Both rebalancing and poolNetExposure have the same sign, so ratio is in [0, 1]\n if (rebalancing !== 0 && poolNetExposure !== 0) {\n const ratio = rebalancing / poolNetExposure;\n return currentLogF * (1 - ratio);\n }\n\n return currentLogF;\n};\n\n/**\n * Estimates the execution price for a trade using the exponential logPriceMultiplier formula.\n *\n * Mirrors on-chain logic:\n * 1. computeNewLogPriceMultiplier (PriceMultiplier.sol)\n * 2. computeAmmPrice: ammPrice = oraclePrice * exp(logF)\n * 3. computeSignedSpread: executionPrice = ammPrice * (1 + signedSpread)\n *\n * @audit spreadDiscount not applied — known limitation, to be addressed later\n * @audit priceSpacing rounding not applied\n */\nexport const calculateEstimatedExecutionPrice = ({\n oraclePrice,\n currentLogF,\n tradeExposure,\n poolNetExposure,\n depthFactor,\n maxExposure,\n priceSpread,\n}: {\n oraclePrice: number;\n currentLogF: number;\n tradeExposure: number;\n poolNetExposure: number;\n depthFactor: number;\n maxExposure: number;\n priceSpread: number;\n}): number => {\n if (tradeExposure === 0) {\n return oraclePrice * Math.exp(currentLogF);\n }\n\n // 1. Compute new logF after trade impact\n const newLogF = computeNewLogF({\n currentLogF,\n tradeExposure,\n poolNetExposure,\n depthFactor,\n maxExposure,\n });\n\n // 2. Compute AMM price: oraclePrice * exp(newLogF)\n const ammPrice = oraclePrice * Math.exp(newLogF);\n\n // 3. Apply signed spread\n const signedSpread = tradeExposure > 0 ? priceSpread : -priceSpread;\n return Math.max(0, ammPrice * (1 + signedSpread));\n};\n\nexport const calculateTradeFee = ({\n feeRate,\n tradeNotional,\n}: {\n feeRate: number;\n tradeNotional: number;\n}) => feeRate * Math.abs(tradeNotional);\n\nexport const calculateSpread = ({\n depthFactor,\n maxExposure,\n oraclePrice,\n poolPrice,\n tradeNotional,\n}: {\n depthFactor: number;\n maxExposure: number;\n oraclePrice: number;\n poolPrice: number;\n tradeNotional: number;\n}) =>\n (poolPrice / oraclePrice) *\n (1 + tradeNotional / (depthFactor * maxExposure) - 1) *\n tradeNotional;\n\nexport const calculateEstimatedLiquidationPrice = ({\n LMR,\n accountBalance,\n isShort,\n notional,\n oraclePrice,\n}: {\n LMR: number;\n accountBalance: number;\n isShort: boolean;\n notional: number;\n oraclePrice: number;\n}) =>\n Math.max(\n 0,\n oraclePrice *\n (1 - ((accountBalance - LMR) / notional) * (isShort ? -1 : 1)),\n );\n\nexport const calculateLeverage = ({\n imrMultiplier,\n riskFactor,\n}: {\n imrMultiplier: number;\n riskFactor: number;\n}) => 1 / (imrMultiplier * Math.sqrt(riskFactor));\n\nexport const calculateRequiredMargin = ({\n currIMR,\n currentNotional,\n leverage,\n tradeNotional,\n}: {\n currIMR: number;\n currentNotional: number;\n leverage: number;\n tradeNotional: number;\n}) =>\n currIMR +\n (Math.abs(currentNotional + tradeNotional) - Math.abs(currentNotional)) /\n leverage;\n\nexport const calculateMaxOrderSize = ({\n currIMR,\n currNodeBalance,\n currNotional,\n depthFactor,\n extendingPosition,\n feeRate,\n isShortTrade,\n leverage,\n maxExposure,\n oraclePrice,\n poolPrice,\n}: {\n currIMR: number;\n currNodeBalance: number;\n currNotional: number;\n depthFactor: number;\n extendingPosition: boolean;\n feeRate: number;\n isShortTrade: boolean;\n leverage: number;\n maxExposure: number;\n oraclePrice: number;\n poolPrice: number;\n}) => {\n const a = poolPrice / oraclePrice;\n const c = 1 / (depthFactor * maxExposure);\n const R = a - 1 - feeRate * (isShortTrade ? -1 : 1);\n const SN = currNotional < 0 ? -1 : 1;\n const Q = R - (SN / leverage) * (extendingPosition ? 1 : -1);\n return Math.abs(\n (-1 * Q +\n Math.sqrt(\n Math.pow(Q, 2) -\n 4 *\n a *\n c *\n (currNodeBalance -\n currIMR +\n (extendingPosition ? 0 : ((2 * SN) / leverage) * currNotional)),\n ) *\n (isShortTrade ? 1 : -1)) /\n (2 * a * c),\n );\n};\n\nexport const calculateIMR = ({\n marketLeverages,\n marketPrices,\n positions,\n}: {\n marketLeverages: Map<MarketId, number>;\n marketPrices: Map<MarketId, number>;\n positions: Map<MarketId, number>;\n}) => {\n return Array.from(positions.entries()).reduce(\n (sum, [marketId, positionSize]) => {\n const leverage = marketLeverages.get(marketId);\n return leverage\n ? sum +\n (Math.abs(positionSize) * (marketPrices.get(marketId) ?? 0)) /\n leverage\n : sum;\n },\n 0,\n );\n};\n\nexport const calculateLMR = ({\n marketPrices,\n positions,\n riskFactors,\n marketId,\n tradeSize,\n}: {\n marketId?: string;\n marketPrices: Map<MarketId, number>;\n positions: Map<MarketId, number>;\n riskFactors: Map<MarketId, number>;\n tradeSize?: number;\n}) =>\n Array.from(\n (marketId && tradeSize\n ? mergeMap(positions, [\n [marketId, (positions.get(marketId) ?? 0) + tradeSize],\n ])\n : positions\n ).entries(),\n ).reduce((sum, [marketId, positionSize]) => {\n const riskFactor = riskFactors.get(marketId);\n return riskFactor\n ? sum +\n Math.abs(positionSize) *\n (marketPrices.get(marketId) ?? 0) *\n Math.sqrt(riskFactor)\n : sum;\n }, 0);\n\n// if account balance is below LMR position is liquidable\n\nexport const calculateMarginRatio = ({\n LMR,\n totalBalance,\n tradeCost,\n}: {\n LMR: number;\n totalBalance: number;\n tradeCost: number;\n}) => {\n if (LMR === 0) {\n return 0;\n }\n if (tradeCost > totalBalance) {\n return 1;\n }\n if (totalBalance === tradeCost) {\n return Infinity;\n }\n return Math.min(1, LMR / (totalBalance - tradeCost));\n};\n\nexport const calculateTotalMargin = ({\n marketsTrackers,\n accountBalances,\n assetPrices,\n markPrices,\n marketsTokenInfo,\n positions,\n rUSDAddress,\n}: {\n accountBalances: Map<Address, number>;\n assetPrices: Map<Address, number>;\n markPrices: Map<Address, number>;\n marketsTokenInfo: Map<\n MarketId,\n {\n quoteTokenId: string;\n underlyingAssetId: string;\n }\n >;\n marketsTrackers: Map<\n MarketId,\n {\n longADLUnwindPrice: number;\n longBaseMultiplier: number;\n longFundingValue: number;\n shortADLUnwindPrice: number;\n shortBaseMultiplier: number;\n shortFundingValue: number;\n }\n >;\n positions: {\n adlUnwindPrice: number;\n base: number;\n baseMultiplier: number;\n fundingValue: number;\n lastPrice: number;\n marketId: string;\n realizedPnl: number;\n }[];\n rUSDAddress?: string;\n}) => {\n const pnl = new Map<Address, number>();\n const rUSDPrice = (rUSDAddress && assetPrices.get(rUSDAddress)) ?? 1;\n positions.forEach((position) => {\n const marketTracker = marketsTrackers?.get(position.marketId);\n const tokenInfo = marketsTokenInfo.get(position.marketId);\n if (!tokenInfo) return;\n let fundingCashFlow = 0;\n let adlCashFlow = 0;\n\n if (marketTracker) {\n // fundingCashFlow\n const marketTrackerFundingValue =\n position.base < 0\n ? marketTracker.shortFundingValue\n : marketTracker.longFundingValue;\n const trackerDelta = marketTrackerFundingValue - position.fundingValue;\n fundingCashFlow =\n (trackerDelta / position.baseMultiplier) * -1 * position.base;\n\n // adlCashFlow\n const adlUnwindPrice =\n ((position.base < 0\n ? marketTracker.shortADLUnwindPrice\n : marketTracker.longADLUnwindPrice) -\n position.adlUnwindPrice) /\n position.baseMultiplier;\n const baseMultiplier =\n (position.base < 0\n ? marketTracker.shortBaseMultiplier\n : marketTracker.longBaseMultiplier) / position.baseMultiplier;\n const lastPriceCoefficient = 1 - baseMultiplier;\n const initialPrice = lastPriceCoefficient * position.lastPrice;\n adlCashFlow = (adlUnwindPrice - initialPrice) * position.base;\n }\n\n const unrealizedPnl =\n ((markPrices.get(tokenInfo.quoteTokenId) ?? 0) - position.lastPrice) *\n position.base;\n\n pnl.set(\n tokenInfo.underlyingAssetId,\n (pnl.get(tokenInfo.underlyingAssetId) ?? 0) +\n position.realizedPnl +\n fundingCashFlow +\n adlCashFlow +\n unrealizedPnl,\n );\n });\n\n return Array.from(accountBalances.entries()).reduce(\n (sum, [address, balance]) =>\n sum +\n (balance + (pnl.get(address) ?? 0)) *\n (address === rUSDAddress\n ? 1\n : (assetPrices.get(address) ?? 0) / (rUSDPrice || 1)),\n 0,\n );\n};\n\nexport const calculateFundingPnl = ({\n marketFundingValue,\n marketBaseMultiplier,\n positionAvgEntryFundingValue,\n positionAdjustedBase,\n}: {\n marketFundingValue: number;\n marketBaseMultiplier: number;\n positionAvgEntryFundingValue: number;\n positionAdjustedBase: number;\n}): number => {\n return (\n -1 *\n (((marketFundingValue - positionAvgEntryFundingValue) *\n positionAdjustedBase) /\n marketBaseMultiplier)\n );\n};\n\nexport const calculatePricePnl = ({\n price,\n positionAvgEntryPrice,\n positionAdjustedBase,\n}: {\n price: number;\n positionAvgEntryPrice: number;\n positionAdjustedBase: number;\n}): number => {\n return (price - positionAvgEntryPrice) * positionAdjustedBase;\n};\n\nexport const calculateRealBalance = (\n netDeposits: BigNumber,\n realized_pnl: BigNumber,\n) => {\n return netDeposits.plus(realized_pnl);\n};\n\nexport const calculatePositionAdjustedQty = (\n origQty: BigNumber,\n marketBaseMultiplier: BigNumber,\n positionBaseMultiplier: BigNumber,\n): BigNumber => {\n return origQty.times(marketBaseMultiplier).div(positionBaseMultiplier);\n};\n\n/**\n * Linearly interpolate a depth ratio from a (thresholds, ratios) curve.\n * The curve implicitly starts at (exposure=0, ratio=1.0).\n * - Between thresholds: linear interpolation\n * - Above last threshold: last ratio (flat extrapolation)\n *\n * @param thresholds - Sorted ascending exposure thresholds in notional USD (must be non-empty)\n * @param ratios - Depth ratio at each threshold (same length as thresholds, must be non-empty)\n * @param exposure - Absolute exposure notional (must be >= 0)\n * @throws if thresholds or ratios are empty, or if they have different lengths\n */\nexport const interpolateDepthRatio = (\n thresholds: number[],\n ratios: number[],\n exposure: number,\n): number => {\n if (exposure < 0) {\n throw new Error('interpolateDepthRatio: exposure must be >= 0');\n }\n if (thresholds.length === 0 || ratios.length === 0) {\n throw new Error(\n 'interpolateDepthRatio: thresholds and ratios must be non-empty',\n );\n }\n if (thresholds.length !== ratios.length) {\n throw new Error(\n 'interpolateDepthRatio: thresholds and ratios must have equal length',\n );\n }\n\n const allThresholds = [0, ...thresholds];\n const allRatios = [1.0, ...ratios];\n\n if (exposure === 0) return 1.0;\n if (exposure >= allThresholds[allThresholds.length - 1]) {\n return allRatios[allRatios.length - 1];\n }\n\n for (let i = 0; i < allThresholds.length - 1; i++) {\n if (exposure <= allThresholds[i + 1]) {\n const t =\n (exposure - allThresholds[i]) /\n (allThresholds[i + 1] - allThresholds[i]);\n return allRatios[i] + t * (allRatios[i + 1] - allRatios[i]);\n }\n }\n\n throw new Error('interpolateDepthRatio: unreachable');\n};\n\n/**\n * Calculate the dynamic depth factor for a trade given pool state and config.\n *\n * The pool takes the opposite side of the trade, so:\n * poolNotionalAfterTrade = currentPoolNotional - signedTradeNotional\n *\n * The depth ratio is interpolated from the exposure curve, then multiplied\n * by baseDepth to produce the final depth factor.\n *\n * @param baseDepth - Base depth multiplier for this market\n * @param thresholds - Sorted ascending exposure thresholds (notional USD)\n * @param ratios - Depth ratio at each threshold\n * @param currentPoolNotional - Pool's current notional in this market (signed)\n * @param signedTradeNotional - Trade notional (positive=buy, negative=sell)\n */\nexport const calculateDynamicDepthFactor = ({\n baseDepth,\n thresholds,\n ratios,\n currentPoolNotional,\n signedTradeNotional,\n}: {\n baseDepth: number;\n thresholds: number[];\n ratios: number[];\n currentPoolNotional: number;\n signedTradeNotional: number;\n}): number => {\n const poolNotionalAfterTrade = currentPoolNotional - signedTradeNotional;\n const absExposureNotional = Math.abs(poolNotionalAfterTrade);\n const depthRatio = interpolateDepthRatio(\n thresholds,\n ratios,\n absExposureNotional,\n );\n return depthRatio * baseDepth;\n};\n\nexport const calculatePositionAdlPnL = ({\n marketTrackerAdlUnwindPrice,\n marketTrackerBaseMultiplier,\n positionBase,\n positionAvgEntryPrice,\n positionTrackerBaseMultiplier,\n positionTrackerAdlUnwindPrice,\n}: {\n marketTrackerAdlUnwindPrice: BigNumber;\n marketTrackerBaseMultiplier: BigNumber;\n positionBase: BigNumber;\n positionAvgEntryPrice: BigNumber;\n positionTrackerBaseMultiplier: BigNumber;\n positionTrackerAdlUnwindPrice: BigNumber;\n}): BigNumber => {\n const currentAdlUnwindPrice = marketTrackerAdlUnwindPrice\n .minus(positionTrackerAdlUnwindPrice)\n .multipliedBy(1e18)\n .div(positionTrackerBaseMultiplier);\n\n const initialPrice = positionAvgEntryPrice\n .times(\n BigNumber(1e18).minus(\n marketTrackerBaseMultiplier\n .multipliedBy(1e18)\n .div(positionTrackerBaseMultiplier),\n ),\n )\n .div(1e18);\n\n const adlPnL = positionBase\n .times(currentAdlUnwindPrice.minus(initialPrice))\n .div(1e18);\n\n return adlPnL;\n};\n"]}
|
package/dist/utils/index.js
CHANGED
|
@@ -29,4 +29,5 @@ __exportStar(require("./whitelisted-wallets"), exports);
|
|
|
29
29
|
__exportStar(require("./stringify"), exports);
|
|
30
30
|
__exportStar(require("./delay"), exports);
|
|
31
31
|
__exportStar(require("./transaction-receipt"), exports);
|
|
32
|
+
__exportStar(require("./layerzero"), exports);
|
|
32
33
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,sDAAoC;AACpC,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,0CAAwB;AACxB,iDAA+B;AAC/B,wDAAsC;AACtC,8CAA4B;AAC5B,0CAAwB;AACxB,wDAAsC","sourcesContent":["export * from './consts';\nexport * from './points';\nexport * from './calculate';\nexport * from './struct';\nexport * from './cooldown-interval';\nexport * from './network';\nexport * from './number';\nexport * from './retry';\nexport * from './timestamp';\nexport * from './token';\nexport * from './task-wrapper';\nexport * from './whitelisted-wallets';\nexport * from './stringify';\nexport * from './delay';\nexport * from './transaction-receipt';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,sDAAoC;AACpC,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,0CAAwB;AACxB,iDAA+B;AAC/B,wDAAsC;AACtC,8CAA4B;AAC5B,0CAAwB;AACxB,wDAAsC;AACtC,8CAA4B","sourcesContent":["export * from './consts';\nexport * from './points';\nexport * from './calculate';\nexport * from './struct';\nexport * from './cooldown-interval';\nexport * from './network';\nexport * from './number';\nexport * from './retry';\nexport * from './timestamp';\nexport * from './token';\nexport * from './task-wrapper';\nexport * from './whitelisted-wallets';\nexport * from './stringify';\nexport * from './delay';\nexport * from './transaction-receipt';\nexport * from './layerzero';\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./oft-config"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["utils/layerzero/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,+CAA6B","sourcesContent":["export * from './types';\nexport * from './oft-config';\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOFTTokenAddress = exports.getLzEndpointId = void 0;
|
|
4
|
+
var types_1 = require("../../types");
|
|
5
|
+
var token_info_getters_1 = require("../token/token-info-getters");
|
|
6
|
+
var getLzEndpointId = function (chainId) {
|
|
7
|
+
var _a;
|
|
8
|
+
var chainToLzEid = (_a = {},
|
|
9
|
+
_a[types_1.MoneyInOutChainId.ethereumMainnet] = 30101,
|
|
10
|
+
_a[types_1.MoneyInOutChainId.ethereumSepolia] = 40161,
|
|
11
|
+
_a[types_1.ReyaChainId.reyaNetwork] = 30313,
|
|
12
|
+
_a[types_1.ReyaChainId.reyaCronos] = 40319,
|
|
13
|
+
_a);
|
|
14
|
+
var lzEid = chainToLzEid[chainId];
|
|
15
|
+
if (!lzEid) {
|
|
16
|
+
throw new Error("No LayerZero endpoint ID found for chain ".concat(chainId));
|
|
17
|
+
}
|
|
18
|
+
return lzEid;
|
|
19
|
+
};
|
|
20
|
+
exports.getLzEndpointId = getLzEndpointId;
|
|
21
|
+
var getOFTTokenAddress = function (tokenName, chainId) {
|
|
22
|
+
var tokenInfo = (0, token_info_getters_1.getTokenInfoByName)(tokenName, chainId);
|
|
23
|
+
if (!tokenInfo.isOFT) {
|
|
24
|
+
throw new Error("getOFTTokenAddress: token ".concat(tokenName, " on chain ").concat(chainId, " is not an OFT token"));
|
|
25
|
+
}
|
|
26
|
+
return tokenInfo.address;
|
|
27
|
+
};
|
|
28
|
+
exports.getOFTTokenAddress = getOFTTokenAddress;
|
|
29
|
+
//# sourceMappingURL=oft-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oft-config.js","sourceRoot":"/","sources":["utils/layerzero/oft-config.ts"],"names":[],"mappings":";;;AAAA,qCAAwE;AACxE,kEAAiE;AAE1D,IAAM,eAAe,GAAG,UAC7B,OAAwC;;IAExC,IAAM,YAAY;QAChB,GAAC,yBAAiB,CAAC,eAAe,IAAG,KAAK;QAC1C,GAAC,yBAAiB,CAAC,eAAe,IAAG,KAAK;QAC1C,GAAC,mBAAW,CAAC,WAAW,IAAG,KAAK;QAChC,GAAC,mBAAW,CAAC,UAAU,IAAG,KAAK;WAChC,CAAC;IAEF,IAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mDAA4C,OAAO,CAAE,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAfW,QAAA,eAAe,mBAe1B;AAEK,IAAM,kBAAkB,GAAG,UAChC,SAAoB,EACpB,OAAwC;IAExC,IAAM,SAAS,GAAG,IAAA,uCAAkB,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACzD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,oCAA6B,SAAS,uBAAa,OAAO,yBAAsB,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC,OAAO,CAAC;AAC3B,CAAC,CAAC;AAXW,QAAA,kBAAkB,sBAW7B","sourcesContent":["import { MoneyInOutChainId, ReyaChainId, TokenName } from '../../types';\nimport { getTokenInfoByName } from '../token/token-info-getters';\n\nexport const getLzEndpointId = (\n chainId: MoneyInOutChainId | ReyaChainId,\n): number => {\n const chainToLzEid: Record<number, number> = {\n [MoneyInOutChainId.ethereumMainnet]: 30101,\n [MoneyInOutChainId.ethereumSepolia]: 40161,\n [ReyaChainId.reyaNetwork]: 30313,\n [ReyaChainId.reyaCronos]: 40319,\n };\n\n const lzEid = chainToLzEid[chainId];\n if (!lzEid) {\n throw new Error(`No LayerZero endpoint ID found for chain ${chainId}`);\n }\n return lzEid;\n};\n\nexport const getOFTTokenAddress = (\n tokenName: TokenName,\n chainId: MoneyInOutChainId | ReyaChainId,\n): string => {\n const tokenInfo = getTokenInfoByName(tokenName, chainId);\n if (!tokenInfo.isOFT) {\n throw new Error(\n `getOFTTokenAddress: token ${tokenName} on chain ${chainId} is not an OFT token`,\n );\n }\n return tokenInfo.address;\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"/","sources":["utils/layerzero/types.ts"],"names":[],"mappings":"","sourcesContent":["export type OFTSendParam = {\n dstEid: number;\n to: string;\n amountLD: bigint;\n minAmountLD: bigint;\n extraOptions: string;\n composeMsg: string;\n oftCmd: string;\n};\n\nexport type OFTMessagingFee = {\n nativeFee: bigint;\n lzTokenFee: bigint;\n};\n\nexport type OFTMessagingReceipt = {\n guid: string;\n nonce: bigint;\n fee: OFTMessagingFee;\n};\n\nexport type OFTReceipt = {\n amountSentLD: bigint;\n amountReceivedLD: bigint;\n};\n"]}
|
|
@@ -45,6 +45,27 @@ exports.TOKEN_INFO = (_a = {},
|
|
|
45
45
|
minWithdrawAmount: 0.0001,
|
|
46
46
|
minTransferAmount: 0.0001,
|
|
47
47
|
},
|
|
48
|
+
{
|
|
49
|
+
name: 'REYA',
|
|
50
|
+
address: '0xcc8e02d7112ddaa66a63b89d73e4eda65722b111',
|
|
51
|
+
decimals: 18,
|
|
52
|
+
isRUSDUnderlying: false,
|
|
53
|
+
whitelistedWalletOnly: true,
|
|
54
|
+
isOFT: true,
|
|
55
|
+
minDepositAmount: 1,
|
|
56
|
+
minWithdrawAmount: 1,
|
|
57
|
+
minTransferAmount: 1,
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'SREYA',
|
|
61
|
+
address: '0xf3dd224de5f9b112690a15521b4a0c450a4a82c2',
|
|
62
|
+
decimals: 18,
|
|
63
|
+
isRUSDUnderlying: false,
|
|
64
|
+
whitelistedWalletOnly: true,
|
|
65
|
+
minDepositAmount: 1,
|
|
66
|
+
minWithdrawAmount: 1,
|
|
67
|
+
minTransferAmount: 1,
|
|
68
|
+
},
|
|
48
69
|
],
|
|
49
70
|
_a[types_1.MoneyInOutChainId.ethereumMainnet] = [
|
|
50
71
|
__assign(__assign({ name: 'USDC', address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', decimals: 6, isRUSDUnderlying: true }, defaultTokenThresholds), { minWithdrawAmount: 28 }),
|
|
@@ -55,6 +76,17 @@ exports.TOKEN_INFO = (_a = {},
|
|
|
55
76
|
__assign({ name: 'DEUSD', address: '0x15700b564ca08d9439c58ca5053166e8317aa138', decimals: 18, isRUSDUnderlying: false, whitelistedWalletOnly: false, isElixirToken: true }, defaultTokenThresholds),
|
|
56
77
|
__assign({ name: 'SDEUSD', address: '0x5c5b196abe0d54485975d1ec29617d42d9198326', decimals: 18, isRUSDUnderlying: false, whitelistedWalletOnly: false, isElixirToken: true }, defaultTokenThresholds),
|
|
57
78
|
__assign(__assign({ name: 'WBTC', address: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', decimals: 8, isRUSDUnderlying: false }, defaultTokenThresholds), { minDepositAmount: 0.0001, minWithdrawAmount: 0.0001, minTransferAmount: 0.0001 }),
|
|
79
|
+
{
|
|
80
|
+
name: 'REYA',
|
|
81
|
+
address: '0xcc8e02d7112ddaa66a63b89d73e4eda65722b111',
|
|
82
|
+
decimals: 18,
|
|
83
|
+
isRUSDUnderlying: false,
|
|
84
|
+
whitelistedWalletOnly: true,
|
|
85
|
+
isOFT: true,
|
|
86
|
+
minDepositAmount: 1,
|
|
87
|
+
minWithdrawAmount: 1,
|
|
88
|
+
minTransferAmount: 1,
|
|
89
|
+
},
|
|
58
90
|
],
|
|
59
91
|
_a[types_1.MoneyInOutChainId.opMainnet] = [
|
|
60
92
|
__assign(__assign({ name: 'USDC', address: '0x0b2c639c533813f4aa9d7837caf62653d097ff85', decimals: 6, isRUSDUnderlying: true }, defaultTokenThresholds), { minWithdrawAmount: 10 }),
|
|
@@ -95,6 +127,27 @@ exports.TOKEN_INFO = (_a = {},
|
|
|
95
127
|
__assign({ name: 'RAMBER', address: '0x125fd68ec0ab65ce9606ded99e8f19c286f9e534', decimals: 18, isRUSDUnderlying: false, whitelistedWalletOnly: true, isLmToken: true }, defaultTokenThresholds),
|
|
96
128
|
__assign({ name: 'RHEDGE', address: '0xfb9eed7a6f3100db35c94b214917a0a64aec1a97', decimals: 18, isRUSDUnderlying: false, whitelistedWalletOnly: true, isLmToken: true }, defaultTokenThresholds),
|
|
97
129
|
__assign({ name: 'SRUSD', address: '0xb9f531a54fc0e9adca1b931d9533b4e49bb2fad6', decimals: 30, isRUSDUnderlying: false, whitelistedWalletOnly: false, isPoolToken: true }, defaultTokenThresholds),
|
|
130
|
+
{
|
|
131
|
+
name: 'REYA',
|
|
132
|
+
address: '0xbd96be24f68c5e616ff22ffc32715ffa1c4b70d0',
|
|
133
|
+
decimals: 18,
|
|
134
|
+
isRUSDUnderlying: false,
|
|
135
|
+
whitelistedWalletOnly: true,
|
|
136
|
+
isOFT: true,
|
|
137
|
+
minDepositAmount: 1,
|
|
138
|
+
minWithdrawAmount: 1,
|
|
139
|
+
minTransferAmount: 1,
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
name: 'SREYA',
|
|
143
|
+
address: '0xecab1c86ecf1100ad3aa7a2c175aede4c87e949b',
|
|
144
|
+
decimals: 18,
|
|
145
|
+
isRUSDUnderlying: false,
|
|
146
|
+
whitelistedWalletOnly: true,
|
|
147
|
+
minDepositAmount: 1,
|
|
148
|
+
minWithdrawAmount: 1,
|
|
149
|
+
minTransferAmount: 1,
|
|
150
|
+
},
|
|
98
151
|
],
|
|
99
152
|
_a[types_1.MoneyInOutChainId.arbitrumSepolia] = [
|
|
100
153
|
__assign({ name: 'USDC', address: '0x8537307810fc40f4073a12a38554d4ff78efff41', decimals: 6, isRUSDUnderlying: true }, defaultTokenThresholds),
|
|
@@ -118,6 +171,17 @@ exports.TOKEN_INFO = (_a = {},
|
|
|
118
171
|
__assign({ name: 'WBTC', address: '0x94beff5da6201cb2c8f489196fd970b3df5aa32a', decimals: 8, isRUSDUnderlying: false }, defaultTokenThresholds),
|
|
119
172
|
__assign({ name: 'DEUSD', address: '0xa6b08f1b0d894429ed73fb68f0330318b188e2b0', decimals: 18, isRUSDUnderlying: false, whitelistedWalletOnly: false, isElixirToken: true }, defaultTokenThresholds),
|
|
120
173
|
__assign({ name: 'SDEUSD', address: '0x97d3e518029c622015afa7ad20036ebef60a7a4e', decimals: 18, isRUSDUnderlying: false, whitelistedWalletOnly: false, isElixirToken: true }, defaultTokenThresholds),
|
|
174
|
+
{
|
|
175
|
+
name: 'REYA',
|
|
176
|
+
address: '0x2998f96655f6c8814bec364c8ffdd3cd7dfc4b2e',
|
|
177
|
+
decimals: 18,
|
|
178
|
+
isRUSDUnderlying: false,
|
|
179
|
+
whitelistedWalletOnly: true,
|
|
180
|
+
isOFT: true,
|
|
181
|
+
minDepositAmount: 1,
|
|
182
|
+
minWithdrawAmount: 1,
|
|
183
|
+
minTransferAmount: 1,
|
|
184
|
+
},
|
|
121
185
|
],
|
|
122
186
|
_a);
|
|
123
187
|
//# sourceMappingURL=token-info.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-info.js","sourceRoot":"/","sources":["utils/token/token-info.ts"],"names":[],"mappings":"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","sourcesContent":["import { MoneyInOutChainId, ReyaChainId, TokenInfo } from '../../types';\n\nconst defaultTokenThresholds: Pick<\n TokenInfo,\n 'minDepositAmount' | 'minWithdrawAmount' | 'minTransferAmount'\n> = {\n minDepositAmount: 10,\n minWithdrawAmount: 10,\n minTransferAmount: 1,\n};\n\nexport const TOKEN_INFO: Record<ReyaChainId | MoneyInOutChainId, TokenInfo[]> =\n {\n /* ------------------------------------------------------ */\n /* MAINNET */\n /* ------------------------------------------------------ */\n [ReyaChainId.reyaNetwork]: [\n {\n name: 'RUSD',\n address: '0xa9f32a851b1800742e47725da54a09a7ef2556a3',\n decimals: 6,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'USDC',\n address: '0x3b860c0b53f2e8bd5264aa7c3451d41263c933f2',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'WETH',\n address: '0x6b48c2e6a32077ec17e8ba0d98ffc676dfab1a30',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'WSTETH',\n address: '0x7ae54d5a9e5a975dfc3261d915f8151dcca76be0',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'USDE',\n address: '0xaab18b45467ece5e47f85ca6d3dc4df2a350fd42',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'SUSDE',\n address: '0x2339d41f410ea761f346a14c184385d15f7266c4',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'DEUSD',\n address: '0x809b99df4ddd6fa90f2cf305e2cdc310c6ad3c2c',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SDEUSD',\n address: '0x4d3feb76ab1c7ef40388cd7a2066edace1a2237d',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'RSELINI',\n address: '0xb6a307bb281bca13d69792eaf5db7c2bbe6de248',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isLmToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'RAMBER',\n address: '0x63fc3f743ee2e70e670864079978a1deb9c18b76',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isLmToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'RHEDGE',\n address: '0x3ee6f82498d4e40db33bac3addabd8b41eca1c9c',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isLmToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SRUSD',\n address: '0x162b78e827a8db8173d13735c08c8d40cb5ccdab',\n decimals: 30,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isPoolToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'WBTC',\n address: '0xa6cf523f856f4a0aab78848e251c1b042e6406d5',\n decimals: 8,\n isRUSDUnderlying: false,\n minDepositAmount: 0.0001,\n minWithdrawAmount: 0.0001,\n minTransferAmount: 0.0001,\n },\n ],\n [MoneyInOutChainId.ethereumMainnet]: [\n {\n name: 'USDC',\n address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 28,\n },\n {\n name: 'WETH',\n address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.001,\n },\n {\n name: 'WSTETH',\n address: '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.001,\n },\n {\n name: 'USDE',\n address: '0x4c9edd5852cd905f086c759e8383e09bff1e68b3',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SUSDE',\n address: '0x9d39a5de30e57443bff2a8307a4256c8797a3497',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'DEUSD',\n address: '0x15700b564ca08d9439c58ca5053166e8317aa138',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SDEUSD',\n address: '0x5c5b196abe0d54485975d1ec29617d42d9198326',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'WBTC',\n address: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599',\n decimals: 8,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.0001,\n minWithdrawAmount: 0.0001,\n minTransferAmount: 0.0001,\n },\n ],\n [MoneyInOutChainId.opMainnet]: [\n {\n name: 'USDC',\n address: '0x0b2c639c533813f4aa9d7837caf62653d097ff85',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'USDC.E',\n address: '0x7f5c764cbc14f9669b88837ca1490cca17c31607',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'WETH',\n address: '0x4200000000000000000000000000000000000006',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'SUSDE',\n address: '0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n ...defaultTokenThresholds,\n },\n ],\n [MoneyInOutChainId.polygonMainnet]: [\n {\n name: 'USDC',\n address: '0x3c499c542cef5e3811e1192ce70d8cc03d5c3359',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'USDC.E',\n address: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'WETH',\n address: '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n ],\n [MoneyInOutChainId.arbitrumOne]: [\n {\n name: 'USDC',\n address: '0xaf88d065e77c8cc2239327c5edb3a432268e5831',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'USDC.E',\n address: '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'WETH',\n address: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'SUSDE',\n address: '0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n ...defaultTokenThresholds,\n },\n ],\n [MoneyInOutChainId.baseMainnet]: [\n {\n name: 'USDC',\n address: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'WETH',\n address: '0x4200000000000000000000000000000000000006',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'SUSDE',\n address: '0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n ...defaultTokenThresholds,\n },\n ],\n\n /* ------------------------------------------------------ */\n /* TESTNET */\n /* ------------------------------------------------------ */\n [ReyaChainId.reyaCronos]: [\n {\n name: 'RUSD',\n address: '0x9de724e7b3facf87ce39465d3d712717182e3e55',\n decimals: 6,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'USDC',\n address: '0xfa27c7c6051344263533cc365274d9569b0272a8',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'USDE',\n address: '0xdca6971c26fdee0536fdff076d063643f7810621',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'SUSDE',\n address: '0x08a766935478a1632fa776dcebd3e75ce88a1034',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'WETH',\n address: '0x2cf56315acc7e791b1a0135c09d8d5c8dbcd2f14',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'WSTETH',\n address: '0xdf52410a19298fe168c900513e762adad00c42b1',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'WBTC',\n address: '0x459374f3f3e92728bca838dfa8c95e706fe67e8a',\n decimals: 8,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'DEUSD',\n address: '0x3b9d28dc180813a106d26778135ac2a674f89957',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SDEUSD',\n address: '0xbeb316680b6fcd2dc3af1fc933b3a27a2513d89d',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'RSELINI',\n address: '0xba8ae4d2a147c54c3aba123e8e01937af505fc3c',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isLmToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'RAMBER',\n address: '0x125fd68ec0ab65ce9606ded99e8f19c286f9e534',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isLmToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'RHEDGE',\n address: '0xfb9eed7a6f3100db35c94b214917a0a64aec1a97',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isLmToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SRUSD',\n address: '0xb9f531a54fc0e9adca1b931d9533b4e49bb2fad6',\n decimals: 30,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isPoolToken: true,\n ...defaultTokenThresholds,\n },\n ],\n [MoneyInOutChainId.arbitrumSepolia]: [\n {\n name: 'USDC',\n address: '0x8537307810fc40f4073a12a38554d4ff78efff41',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'USDE',\n address: '0xdca6971c26fdee0536fdff076d063643f7810621',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'SUSDE',\n address: '0xef642117fc6d88cd7efe81fa0dacab196102f2ae',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'WETH',\n address: '0x565810cbfa3cf1390963e5afa2fb953795686339',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'WBTC',\n address: '0x1019958c2bd43b882a4e1349337a32ef9563fc4d',\n decimals: 8,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n ],\n [MoneyInOutChainId.opSepolia]: [\n {\n name: 'USDC',\n address: '0x6d290609b3f5f02d52f28d97c75a443ed8564cbf',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'USDE',\n address: '0xdca6971c26fdee0536fdff076d063643f7810621',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'SUSDE',\n address: '0xef642117fc6d88cd7efe81fa0dacab196102f2ae',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'WETH',\n address: '0x2b42affd4b7c14d9b7c2579229495c052672ccd3',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'WBTC',\n address: '0xfc5cc93d85861ac82d89fc2d3e56315540e9c8a7',\n decimals: 8,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n ],\n [MoneyInOutChainId.ethereumSepolia]: [\n {\n name: 'USDC',\n address: '0x565810cbfa3cf1390963e5afa2fb953795686339',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'USDE',\n address: '0xdca6971c26fdee0536fdff076d063643f7810621',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'SUSDE',\n address: '0xef642117fc6d88cd7efe81fa0dacab196102f2ae',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'WETH',\n address: '0x771d1ae208377453d478df08bbc38034f72ac833',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'WBTC',\n address: '0x94beff5da6201cb2c8f489196fd970b3df5aa32a',\n decimals: 8,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'DEUSD',\n address: '0xa6b08f1b0d894429ed73fb68f0330318b188e2b0',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SDEUSD',\n address: '0x97d3e518029c622015afa7ad20036ebef60a7a4e',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n ],\n };\n"]}
|
|
1
|
+
{"version":3,"file":"token-info.js","sourceRoot":"/","sources":["utils/token/token-info.ts"],"names":[],"mappings":"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","sourcesContent":["import { MoneyInOutChainId, ReyaChainId, TokenInfo } from '../../types';\n\nconst defaultTokenThresholds: Pick<\n TokenInfo,\n 'minDepositAmount' | 'minWithdrawAmount' | 'minTransferAmount'\n> = {\n minDepositAmount: 10,\n minWithdrawAmount: 10,\n minTransferAmount: 1,\n};\n\nexport const TOKEN_INFO: Record<ReyaChainId | MoneyInOutChainId, TokenInfo[]> =\n {\n /* ------------------------------------------------------ */\n /* MAINNET */\n /* ------------------------------------------------------ */\n [ReyaChainId.reyaNetwork]: [\n {\n name: 'RUSD',\n address: '0xa9f32a851b1800742e47725da54a09a7ef2556a3',\n decimals: 6,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'USDC',\n address: '0x3b860c0b53f2e8bd5264aa7c3451d41263c933f2',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'WETH',\n address: '0x6b48c2e6a32077ec17e8ba0d98ffc676dfab1a30',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'WSTETH',\n address: '0x7ae54d5a9e5a975dfc3261d915f8151dcca76be0',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'USDE',\n address: '0xaab18b45467ece5e47f85ca6d3dc4df2a350fd42',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'SUSDE',\n address: '0x2339d41f410ea761f346a14c184385d15f7266c4',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'DEUSD',\n address: '0x809b99df4ddd6fa90f2cf305e2cdc310c6ad3c2c',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SDEUSD',\n address: '0x4d3feb76ab1c7ef40388cd7a2066edace1a2237d',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'RSELINI',\n address: '0xb6a307bb281bca13d69792eaf5db7c2bbe6de248',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isLmToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'RAMBER',\n address: '0x63fc3f743ee2e70e670864079978a1deb9c18b76',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isLmToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'RHEDGE',\n address: '0x3ee6f82498d4e40db33bac3addabd8b41eca1c9c',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isLmToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SRUSD',\n address: '0x162b78e827a8db8173d13735c08c8d40cb5ccdab',\n decimals: 30,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isPoolToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'WBTC',\n address: '0xa6cf523f856f4a0aab78848e251c1b042e6406d5',\n decimals: 8,\n isRUSDUnderlying: false,\n minDepositAmount: 0.0001,\n minWithdrawAmount: 0.0001,\n minTransferAmount: 0.0001,\n },\n {\n name: 'REYA',\n address: '0xcc8e02d7112ddaa66a63b89d73e4eda65722b111',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isOFT: true,\n minDepositAmount: 1,\n minWithdrawAmount: 1,\n minTransferAmount: 1,\n },\n {\n name: 'SREYA',\n address: '0xf3dd224de5f9b112690a15521b4a0c450a4a82c2',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n minDepositAmount: 1,\n minWithdrawAmount: 1,\n minTransferAmount: 1,\n },\n ],\n [MoneyInOutChainId.ethereumMainnet]: [\n {\n name: 'USDC',\n address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 28,\n },\n {\n name: 'WETH',\n address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.001,\n },\n {\n name: 'WSTETH',\n address: '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.001,\n },\n {\n name: 'USDE',\n address: '0x4c9edd5852cd905f086c759e8383e09bff1e68b3',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SUSDE',\n address: '0x9d39a5de30e57443bff2a8307a4256c8797a3497',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'DEUSD',\n address: '0x15700b564ca08d9439c58ca5053166e8317aa138',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SDEUSD',\n address: '0x5c5b196abe0d54485975d1ec29617d42d9198326',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'WBTC',\n address: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599',\n decimals: 8,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.0001,\n minWithdrawAmount: 0.0001,\n minTransferAmount: 0.0001,\n },\n {\n name: 'REYA',\n address: '0xcc8e02d7112ddaa66a63b89d73e4eda65722b111',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isOFT: true,\n minDepositAmount: 1,\n minWithdrawAmount: 1,\n minTransferAmount: 1,\n },\n ],\n [MoneyInOutChainId.opMainnet]: [\n {\n name: 'USDC',\n address: '0x0b2c639c533813f4aa9d7837caf62653d097ff85',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'USDC.E',\n address: '0x7f5c764cbc14f9669b88837ca1490cca17c31607',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'WETH',\n address: '0x4200000000000000000000000000000000000006',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'SUSDE',\n address: '0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n ...defaultTokenThresholds,\n },\n ],\n [MoneyInOutChainId.polygonMainnet]: [\n {\n name: 'USDC',\n address: '0x3c499c542cef5e3811e1192ce70d8cc03d5c3359',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'USDC.E',\n address: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'WETH',\n address: '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n ],\n [MoneyInOutChainId.arbitrumOne]: [\n {\n name: 'USDC',\n address: '0xaf88d065e77c8cc2239327c5edb3a432268e5831',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'USDC.E',\n address: '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'WETH',\n address: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'SUSDE',\n address: '0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n ...defaultTokenThresholds,\n },\n ],\n [MoneyInOutChainId.baseMainnet]: [\n {\n name: 'USDC',\n address: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n minWithdrawAmount: 10,\n },\n {\n name: 'WETH',\n address: '0x4200000000000000000000000000000000000006',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'SUSDE',\n address: '0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n ...defaultTokenThresholds,\n },\n ],\n\n /* ------------------------------------------------------ */\n /* TESTNET */\n /* ------------------------------------------------------ */\n [ReyaChainId.reyaCronos]: [\n {\n name: 'RUSD',\n address: '0x9de724e7b3facf87ce39465d3d712717182e3e55',\n decimals: 6,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'USDC',\n address: '0xfa27c7c6051344263533cc365274d9569b0272a8',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'USDE',\n address: '0xdca6971c26fdee0536fdff076d063643f7810621',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'SUSDE',\n address: '0x08a766935478a1632fa776dcebd3e75ce88a1034',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'WETH',\n address: '0x2cf56315acc7e791b1a0135c09d8d5c8dbcd2f14',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'WSTETH',\n address: '0xdf52410a19298fe168c900513e762adad00c42b1',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'WBTC',\n address: '0x459374f3f3e92728bca838dfa8c95e706fe67e8a',\n decimals: 8,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'DEUSD',\n address: '0x3b9d28dc180813a106d26778135ac2a674f89957',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SDEUSD',\n address: '0xbeb316680b6fcd2dc3af1fc933b3a27a2513d89d',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'RSELINI',\n address: '0xba8ae4d2a147c54c3aba123e8e01937af505fc3c',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isLmToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'RAMBER',\n address: '0x125fd68ec0ab65ce9606ded99e8f19c286f9e534',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isLmToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'RHEDGE',\n address: '0xfb9eed7a6f3100db35c94b214917a0a64aec1a97',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isLmToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SRUSD',\n address: '0xb9f531a54fc0e9adca1b931d9533b4e49bb2fad6',\n decimals: 30,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isPoolToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'REYA',\n address: '0xbd96be24f68c5e616ff22ffc32715ffa1c4b70d0',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isOFT: true,\n minDepositAmount: 1,\n minWithdrawAmount: 1,\n minTransferAmount: 1,\n },\n {\n name: 'SREYA',\n address: '0xecab1c86ecf1100ad3aa7a2c175aede4c87e949b',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n minDepositAmount: 1,\n minWithdrawAmount: 1,\n minTransferAmount: 1,\n },\n ],\n [MoneyInOutChainId.arbitrumSepolia]: [\n {\n name: 'USDC',\n address: '0x8537307810fc40f4073a12a38554d4ff78efff41',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'USDE',\n address: '0xdca6971c26fdee0536fdff076d063643f7810621',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'SUSDE',\n address: '0xef642117fc6d88cd7efe81fa0dacab196102f2ae',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'WETH',\n address: '0x565810cbfa3cf1390963e5afa2fb953795686339',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'WBTC',\n address: '0x1019958c2bd43b882a4e1349337a32ef9563fc4d',\n decimals: 8,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n ],\n [MoneyInOutChainId.opSepolia]: [\n {\n name: 'USDC',\n address: '0x6d290609b3f5f02d52f28d97c75a443ed8564cbf',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'USDE',\n address: '0xdca6971c26fdee0536fdff076d063643f7810621',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'SUSDE',\n address: '0xef642117fc6d88cd7efe81fa0dacab196102f2ae',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'WETH',\n address: '0x2b42affd4b7c14d9b7c2579229495c052672ccd3',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'WBTC',\n address: '0xfc5cc93d85861ac82d89fc2d3e56315540e9c8a7',\n decimals: 8,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n ],\n [MoneyInOutChainId.ethereumSepolia]: [\n {\n name: 'USDC',\n address: '0x565810cbfa3cf1390963e5afa2fb953795686339',\n decimals: 6,\n isRUSDUnderlying: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'USDE',\n address: '0xdca6971c26fdee0536fdff076d063643f7810621',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'SUSDE',\n address: '0xef642117fc6d88cd7efe81fa0dacab196102f2ae',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'WETH',\n address: '0x771d1ae208377453d478df08bbc38034f72ac833',\n decimals: 18,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n minDepositAmount: 0.01,\n minWithdrawAmount: 0.01,\n minTransferAmount: 0.01,\n },\n {\n name: 'WBTC',\n address: '0x94beff5da6201cb2c8f489196fd970b3df5aa32a',\n decimals: 8,\n isRUSDUnderlying: false,\n ...defaultTokenThresholds,\n },\n {\n name: 'DEUSD',\n address: '0xa6b08f1b0d894429ed73fb68f0330318b188e2b0',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'SDEUSD',\n address: '0x97d3e518029c622015afa7ad20036ebef60a7a4e',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: false,\n isElixirToken: true,\n ...defaultTokenThresholds,\n },\n {\n name: 'REYA',\n address: '0x2998f96655f6c8814bec364c8ffdd3cd7dfc4b2e',\n decimals: 18,\n isRUSDUnderlying: false,\n whitelistedWalletOnly: true,\n isOFT: true,\n minDepositAmount: 1,\n minWithdrawAmount: 1,\n minTransferAmount: 1,\n },\n ],\n };\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reyaxyz/common",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.343.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"generate:coverage-badges": "npx istanbul-badges-readme --silent"
|
|
46
46
|
},
|
|
47
47
|
"packageManager": "pnpm@8.3.1",
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "23f99a87a4d07d618dff26ceedb5c0bae7494e3a"
|
|
49
49
|
}
|
package/src/trading-api-types.ts
CHANGED
|
@@ -553,6 +553,17 @@ export type TradingApiSource = {
|
|
|
553
553
|
},
|
|
554
554
|
never
|
|
555
555
|
>;
|
|
556
|
+
dynamicDepthConfig: TradingApiEndpoint<
|
|
557
|
+
{
|
|
558
|
+
markets: {
|
|
559
|
+
marketId: number;
|
|
560
|
+
baseDepth: number;
|
|
561
|
+
thresholds: number[];
|
|
562
|
+
ratios: number[];
|
|
563
|
+
}[];
|
|
564
|
+
},
|
|
565
|
+
never
|
|
566
|
+
>;
|
|
556
567
|
'wallet/:address/configuration': TradingApiEndpoint<
|
|
557
568
|
{
|
|
558
569
|
tier_id: Decimal;
|