@reyaxyz/common 0.332.0 → 0.333.2

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.
@@ -30,13 +30,46 @@ export declare const calculateMaxExposure: ({ poolBalance, riskFactor, poolIMR,
30
30
  poolIMR?: number | undefined;
31
31
  riskFactor: number;
32
32
  }) => number;
33
- export declare const calculateEstimatedExecutionPrice: ({ poolPrice, oraclePrice, tradeBaseSize, poolMaxExposure, marketDepthFactor, marketSpread, }: {
34
- poolPrice: number;
33
+ /**
34
+ * Splits a trade exposure into rebalancing and unbalancing portions relative to pool net exposure.
35
+ * Rebalancing reduces pool's absolute exposure; unbalancing increases it.
36
+ */
37
+ export declare const splitTradeExposure: (tradeExposure: number, poolNetExposure: number) => {
38
+ rebalancing: number;
39
+ unbalancing: number;
40
+ };
41
+ /**
42
+ * Computes the new log price multiplier (logF) after a trade, handling both
43
+ * rebalancing and unbalancing portions.
44
+ *
45
+ * Mirrors on-chain logic in PriceMultiplier.sol:computeNewLogPriceMultiplier.
46
+ */
47
+ export declare const computeNewLogF: ({ currentLogF, tradeExposure, poolNetExposure, depthFactor, maxExposure, }: {
48
+ currentLogF: number;
49
+ tradeExposure: number;
50
+ poolNetExposure: number;
51
+ depthFactor: number;
52
+ maxExposure: number;
53
+ }) => number;
54
+ /**
55
+ * Estimates the execution price for a trade using the exponential logPriceMultiplier formula.
56
+ *
57
+ * Mirrors on-chain logic:
58
+ * 1. computeNewLogPriceMultiplier (PriceMultiplier.sol)
59
+ * 2. computeAmmPrice: ammPrice = oraclePrice * exp(logF)
60
+ * 3. computeSignedSpread: executionPrice = ammPrice * (1 + signedSpread)
61
+ *
62
+ * @audit spreadDiscount not applied — known limitation, to be addressed later
63
+ * @audit priceSpacing rounding not applied
64
+ */
65
+ export declare const calculateEstimatedExecutionPrice: ({ oraclePrice, currentLogF, tradeExposure, poolNetExposure, depthFactor, maxExposure, priceSpread, }: {
35
66
  oraclePrice: number;
36
- tradeBaseSize: number;
37
- poolMaxExposure: number;
38
- marketDepthFactor: number;
39
- marketSpread: number;
67
+ currentLogF: number;
68
+ tradeExposure: number;
69
+ poolNetExposure: number;
70
+ depthFactor: number;
71
+ maxExposure: number;
72
+ priceSpread: number;
40
73
  }) => number;
41
74
  export declare const calculateTradeFee: ({ feeRate, tradeNotional, }: {
42
75
  feeRate: number;
@@ -1 +1 @@
1
- {"version":3,"file":"calculate.d.ts","sourceRoot":"/","sources":["utils/calculate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calculate.d.ts","sourceRoot":"/","sources":["utils/calculate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"token-info.d.ts","sourceRoot":"/","sources":["utils/token/token-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAWxE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,WAAW,GAAG,iBAAiB,EAAE,SAAS,EAAE,CA+jBzE,CAAC"}
1
+ {"version":3,"file":"token-info.d.ts","sourceRoot":"/","sources":["utils/token/token-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAWxE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,WAAW,GAAG,iBAAiB,EAAE,SAAS,EAAE,CAikBzE,CAAC"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  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.calculateMaxExposure = exports.calculateMaxWithdraw = exports.POOL_IMR = void 0;
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;
7
7
  var struct_1 = require("./struct");
8
8
  var bignumber_js_1 = __importDefault(require("bignumber.js"));
9
9
  exports.POOL_IMR = 9.1;
@@ -32,15 +32,92 @@ var calculateMaxExposure = function (_a) {
32
32
  return poolBalance / (poolIMR * Math.sqrt(riskFactor));
33
33
  };
34
34
  exports.calculateMaxExposure = calculateMaxExposure;
35
+ /**
36
+ * Splits a trade exposure into rebalancing and unbalancing portions relative to pool net exposure.
37
+ * Rebalancing reduces pool's absolute exposure; unbalancing increases it.
38
+ */
39
+ var splitTradeExposure = function (tradeExposure, poolNetExposure) {
40
+ if (tradeExposure === 0) {
41
+ return { rebalancing: 0, unbalancing: 0 };
42
+ }
43
+ // If pool has no exposure, entire trade is unbalancing
44
+ if (poolNetExposure === 0) {
45
+ return { rebalancing: 0, unbalancing: tradeExposure };
46
+ }
47
+ // Opposite sign means trade increases pool exposure → pure unbalancing
48
+ var sameSign = (poolNetExposure > 0 && tradeExposure > 0) ||
49
+ (poolNetExposure < 0 && tradeExposure < 0);
50
+ if (!sameSign) {
51
+ return { rebalancing: 0, unbalancing: tradeExposure };
52
+ }
53
+ // Same sign: trade reduces pool exposure (pool takes opposite side)
54
+ var absPool = Math.abs(poolNetExposure);
55
+ var absTrade = Math.abs(tradeExposure);
56
+ if (absTrade <= absPool) {
57
+ // Pure rebalancing — trade doesn't cross zero
58
+ return { rebalancing: tradeExposure, unbalancing: 0 };
59
+ }
60
+ // Mixed: rebalance up to pool exposure, then unbalance the rest
61
+ var rebalancing = poolNetExposure;
62
+ var unbalancing = tradeExposure - rebalancing;
63
+ return { rebalancing: rebalancing, unbalancing: unbalancing };
64
+ };
65
+ exports.splitTradeExposure = splitTradeExposure;
66
+ /**
67
+ * Computes the new log price multiplier (logF) after a trade, handling both
68
+ * rebalancing and unbalancing portions.
69
+ *
70
+ * Mirrors on-chain logic in PriceMultiplier.sol:computeNewLogPriceMultiplier.
71
+ */
72
+ var computeNewLogF = function (_a) {
73
+ var currentLogF = _a.currentLogF, tradeExposure = _a.tradeExposure, poolNetExposure = _a.poolNetExposure, depthFactor = _a.depthFactor, maxExposure = _a.maxExposure;
74
+ if (tradeExposure === 0)
75
+ return currentLogF;
76
+ var _b = (0, exports.splitTradeExposure)(tradeExposure, poolNetExposure), rebalancing = _b.rebalancing, unbalancing = _b.unbalancing;
77
+ // Case 1: Has unbalancing portion (includes mixed trades)
78
+ if (unbalancing !== 0) {
79
+ // If also rebalancing, it brings logF to 0 by definition (trade crosses zero)
80
+ var startLogF = rebalancing === 0 ? currentLogF : 0;
81
+ return startLogF + unbalancing / (depthFactor * maxExposure);
82
+ }
83
+ // Case 2: Only rebalancing
84
+ // Both rebalancing and poolNetExposure have the same sign, so ratio is in [0, 1]
85
+ if (rebalancing !== 0 && poolNetExposure !== 0) {
86
+ var ratio = rebalancing / poolNetExposure;
87
+ return currentLogF * (1 - ratio);
88
+ }
89
+ return currentLogF;
90
+ };
91
+ exports.computeNewLogF = computeNewLogF;
92
+ /**
93
+ * Estimates the execution price for a trade using the exponential logPriceMultiplier formula.
94
+ *
95
+ * Mirrors on-chain logic:
96
+ * 1. computeNewLogPriceMultiplier (PriceMultiplier.sol)
97
+ * 2. computeAmmPrice: ammPrice = oraclePrice * exp(logF)
98
+ * 3. computeSignedSpread: executionPrice = ammPrice * (1 + signedSpread)
99
+ *
100
+ * @audit spreadDiscount not applied — known limitation, to be addressed later
101
+ * @audit priceSpacing rounding not applied
102
+ */
35
103
  var calculateEstimatedExecutionPrice = function (_a) {
36
- var poolPrice = _a.poolPrice, oraclePrice = _a.oraclePrice, tradeBaseSize = _a.tradeBaseSize, poolMaxExposure = _a.poolMaxExposure, marketDepthFactor = _a.marketDepthFactor, marketSpread = _a.marketSpread;
37
- if (tradeBaseSize === 0) {
38
- return poolPrice;
104
+ var oraclePrice = _a.oraclePrice, currentLogF = _a.currentLogF, tradeExposure = _a.tradeExposure, poolNetExposure = _a.poolNetExposure, depthFactor = _a.depthFactor, maxExposure = _a.maxExposure, priceSpread = _a.priceSpread;
105
+ if (tradeExposure === 0) {
106
+ return oraclePrice * Math.exp(currentLogF);
39
107
  }
40
- var poolDeviation = (tradeBaseSize * oraclePrice) / (marketDepthFactor * poolMaxExposure);
41
- var appliedSpread = tradeBaseSize > 0 ? marketSpread : -marketSpread;
42
- var estExecutionPrice = poolPrice * (1 + poolDeviation + appliedSpread);
43
- return Math.max(0, estExecutionPrice);
108
+ // 1. Compute new logF after trade impact
109
+ var newLogF = (0, exports.computeNewLogF)({
110
+ currentLogF: currentLogF,
111
+ tradeExposure: tradeExposure,
112
+ poolNetExposure: poolNetExposure,
113
+ depthFactor: depthFactor,
114
+ maxExposure: maxExposure,
115
+ });
116
+ // 2. Compute AMM price: oraclePrice * exp(newLogF)
117
+ var ammPrice = oraclePrice * Math.exp(newLogF);
118
+ // 3. Apply signed spread
119
+ var signedSpread = tradeExposure > 0 ? priceSpread : -priceSpread;
120
+ return Math.max(0, ammPrice * (1 + signedSpread));
44
121
  };
45
122
  exports.calculateEstimatedExecutionPrice = calculateEstimatedExecutionPrice;
46
123
  var calculateTradeFee = function (_a) {
@@ -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\nexport const calculateEstimatedExecutionPrice = ({\n poolPrice,\n oraclePrice,\n tradeBaseSize,\n poolMaxExposure,\n marketDepthFactor,\n marketSpread,\n}: {\n poolPrice: number;\n oraclePrice: number;\n tradeBaseSize: number;\n poolMaxExposure: number;\n marketDepthFactor: number;\n marketSpread: number;\n}): number => {\n if (tradeBaseSize === 0) {\n return poolPrice;\n }\n\n const poolDeviation =\n (tradeBaseSize * oraclePrice) / (marketDepthFactor * poolMaxExposure);\n const appliedSpread = tradeBaseSize > 0 ? marketSpread : -marketSpread;\n const estExecutionPrice = poolPrice * (1 + poolDeviation + appliedSpread);\n\n return Math.max(0, estExecutionPrice);\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 marketsTokenInfo,\n positions,\n rUSDAddress,\n}: {\n accountBalances: Map<Address, number>;\n assetPrices: 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 ((assetPrices.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 marketsTokenInfo,\n positions,\n rUSDAddress,\n}: {\n accountBalances: Map<Address, number>;\n assetPrices: 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 ((assetPrices.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"]}
@@ -36,7 +36,15 @@ exports.TOKEN_INFO = (_a = {},
36
36
  __assign({ name: 'RAMBER', address: '0x63fc3f743ee2e70e670864079978a1deb9c18b76', decimals: 18, isRUSDUnderlying: false, whitelistedWalletOnly: true, isLmToken: true }, defaultTokenThresholds),
37
37
  __assign({ name: 'RHEDGE', address: '0x3ee6f82498d4e40db33bac3addabd8b41eca1c9c', decimals: 18, isRUSDUnderlying: false, whitelistedWalletOnly: true, isLmToken: true }, defaultTokenThresholds),
38
38
  __assign({ name: 'SRUSD', address: '0x162b78e827a8db8173d13735c08c8d40cb5ccdab', decimals: 30, isRUSDUnderlying: false, whitelistedWalletOnly: false, isPoolToken: true }, defaultTokenThresholds),
39
- __assign({ name: 'WBTC', address: '0xa6cf523f856f4a0aab78848e251c1b042e6406d5', decimals: 8, isRUSDUnderlying: false }, defaultTokenThresholds),
39
+ {
40
+ name: 'WBTC',
41
+ address: '0xa6cf523f856f4a0aab78848e251c1b042e6406d5',
42
+ decimals: 8,
43
+ isRUSDUnderlying: false,
44
+ minDepositAmount: 0.0001,
45
+ minWithdrawAmount: 0.0001,
46
+ minTransferAmount: 0.0001,
47
+ },
40
48
  ],
41
49
  _a[types_1.MoneyInOutChainId.ethereumMainnet] = [
42
50
  __assign(__assign({ name: 'USDC', address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', decimals: 6, isRUSDUnderlying: true }, defaultTokenThresholds), { minWithdrawAmount: 28 }),
@@ -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 ...defaultTokenThresholds,\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 [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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reyaxyz/common",
3
- "version": "0.332.0",
3
+ "version": "0.333.2",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -44,5 +44,5 @@
44
44
  "generate:coverage-badges": "npx istanbul-badges-readme --silent"
45
45
  },
46
46
  "packageManager": "pnpm@8.3.1",
47
- "gitHead": "18d1244ed773f461fc6abe4bb6b28616fe0be8ab"
47
+ "gitHead": "45f69c1b4911b3388ef2b48bbf270ab9c5e7aee0"
48
48
  }
@@ -894,6 +894,12 @@ export class ExposureCommand {
894
894
  );
895
895
  }
896
896
 
897
+ /**
898
+ * @audit This function uses a linear approximation that is not aligned with the on-chain
899
+ * exponential logPriceMultiplier pricing logic (PriceMultiplier.sol). The intention is to
900
+ * deprecate this function completely once downstream consumers (PoolLiquidityCommand,
901
+ * updateLiquidity.task, marketDataLiquidity.task) are migrated.
902
+ */
897
903
  getSlippage(
898
904
  deltaBase: number,
899
905
  marketConfiguration: MarketConfiguration,
@@ -233,6 +233,9 @@ type MarketData = {
233
233
  shortBaseMultiplier?: number;
234
234
  longAdlUnwindPrice?: number;
235
235
  shortAdlUnwindPrice?: number;
236
+ depthFactor?: number;
237
+ priceSpread?: number;
238
+ logPriceMultiplier?: number;
236
239
  };
237
240
 
238
241
  type MarketTrackers = {
@@ -256,6 +259,9 @@ type MarketTrackers = {
256
259
  block_timestamp: Decimal | null;
257
260
  block_number: Decimal;
258
261
  unique_id: bigint | null;
262
+ price_spread: Decimal | null;
263
+ depth_factor: Decimal | null;
264
+ log_price_multiplier: Decimal | null;
259
265
  };
260
266
 
261
267
  export type TradingApiReplication<