@d8x/perpetuals-sdk 1.3.6 → 2.0.0-alpha
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/dist/cjs/accountTrade.d.ts +9 -9
- package/dist/cjs/accountTrade.js +19 -17
- package/dist/cjs/accountTrade.js.map +1 -1
- package/dist/cjs/brokerTool.d.ts +11 -12
- package/dist/cjs/brokerTool.js +7 -8
- package/dist/cjs/brokerTool.js.map +1 -1
- package/dist/cjs/constants.d.ts +11 -12
- package/dist/cjs/constants.js +12 -13
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/contracts/ERC20.d.ts +146 -171
- package/dist/cjs/contracts/IPerpetualManager.d.ts +2534 -2225
- package/dist/cjs/contracts/IPyth.d.ts +181 -184
- package/dist/cjs/contracts/LimitOrderBook.d.ts +373 -401
- package/dist/cjs/contracts/LimitOrderBookBeacon.d.ts +53 -104
- package/dist/cjs/contracts/LimitOrderBookFactory.d.ts +129 -185
- package/dist/cjs/contracts/MockTokenSwap.d.ts +109 -169
- package/dist/cjs/contracts/Multicall3.d.ts +147 -211
- package/dist/cjs/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
- package/dist/cjs/contracts/OracleFactory.d.ts +258 -238
- package/dist/cjs/contracts/PerpetualManagerProxy.d.ts +1099 -891
- package/dist/cjs/contracts/RedStoneAbi.d.ts +369 -488
- package/dist/cjs/contracts/ShareToken.d.ts +232 -285
- package/dist/cjs/contracts/common.d.ts +40 -11
- package/dist/cjs/contracts/factories/ERC20__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/ERC20__factory.js +3 -3
- package/dist/cjs/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +3 -3
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/IPyth__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/IPyth__factory.js +3 -3
- package/dist/cjs/contracts/factories/IPyth__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js +3 -3
- package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js +3 -3
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js +3 -3
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js +3 -3
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/Multicall3__factory.d.ts +11 -9
- package/dist/cjs/contracts/factories/Multicall3__factory.js +7 -10
- package/dist/cjs/contracts/factories/Multicall3__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js +3 -3
- package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/OracleFactory__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/OracleFactory__factory.js +3 -3
- package/dist/cjs/contracts/factories/OracleFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js +3 -3
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/RedStoneAbi__factory.js +3 -3
- package/dist/cjs/contracts/factories/RedStoneAbi__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/ShareToken__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/ShareToken__factory.js +3 -3
- package/dist/cjs/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/cjs/d8XMath.d.ts +16 -16
- package/dist/cjs/d8XMath.js +48 -49
- package/dist/cjs/d8XMath.js.map +1 -1
- package/dist/cjs/liquidatorTool.d.ts +8 -8
- package/dist/cjs/liquidatorTool.js +5 -7
- package/dist/cjs/liquidatorTool.js.map +1 -1
- package/dist/cjs/liquidityProviderTool.d.ts +4 -5
- package/dist/cjs/liquidityProviderTool.js.map +1 -1
- package/dist/cjs/marketData.d.ts +27 -28
- package/dist/cjs/marketData.js +65 -69
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/nodeSDKTypes.d.ts +35 -37
- package/dist/cjs/onChainPxFeed.d.ts +2 -2
- package/dist/cjs/onChainPxFeed.js +3 -3
- package/dist/cjs/onChainPxFeed.js.map +1 -1
- package/dist/cjs/onChainPxFeedAngle.d.ts +2 -2
- package/dist/cjs/onChainPxFeedAngle.js +4 -5
- package/dist/cjs/onChainPxFeedAngle.js.map +1 -1
- package/dist/cjs/onChainPxFeedRedStone.js +2 -2
- package/dist/cjs/onChainPxFeedRedStone.js.map +1 -1
- package/dist/cjs/orderExecutorTool.d.ts +7 -9
- package/dist/cjs/orderExecutorTool.js +54 -63
- package/dist/cjs/orderExecutorTool.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.d.ts +38 -35
- package/dist/cjs/perpetualDataHandler.js +173 -167
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/perpetualEventHandler.d.ts +4 -5
- package/dist/cjs/perpetualEventHandler.js +2 -2
- package/dist/cjs/perpetualEventHandler.js.map +1 -1
- package/dist/cjs/priceFeeds.js +2 -3
- package/dist/cjs/priceFeeds.js.map +1 -1
- package/dist/cjs/referralCodeSigner.d.ts +1 -1
- package/dist/cjs/referralCodeSigner.js +12 -16
- package/dist/cjs/referralCodeSigner.js.map +1 -1
- package/dist/cjs/traderDigests.d.ts +2 -1
- package/dist/cjs/traderDigests.js +9 -11
- package/dist/cjs/traderDigests.js.map +1 -1
- package/dist/cjs/traderInterface.d.ts +8 -9
- package/dist/cjs/traderInterface.js +26 -23
- package/dist/cjs/traderInterface.js.map +1 -1
- package/dist/cjs/utils.d.ts +2 -3
- package/dist/cjs/utils.js +1 -2
- package/dist/cjs/utils.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/writeAccessHandler.d.ts +7 -9
- package/dist/cjs/writeAccessHandler.js +13 -16
- package/dist/cjs/writeAccessHandler.js.map +1 -1
- package/dist/esm/accountTrade.d.ts +9 -9
- package/dist/esm/accountTrade.js +19 -17
- package/dist/esm/accountTrade.js.map +1 -1
- package/dist/esm/brokerTool.d.ts +11 -12
- package/dist/esm/brokerTool.js +2 -3
- package/dist/esm/brokerTool.js.map +1 -1
- package/dist/esm/constants.d.ts +11 -12
- package/dist/esm/constants.js +12 -13
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/contracts/ERC20.d.ts +146 -171
- package/dist/esm/contracts/IPerpetualManager.d.ts +2534 -2225
- package/dist/esm/contracts/IPyth.d.ts +181 -184
- package/dist/esm/contracts/LimitOrderBook.d.ts +373 -401
- package/dist/esm/contracts/LimitOrderBookBeacon.d.ts +53 -104
- package/dist/esm/contracts/LimitOrderBookFactory.d.ts +129 -185
- package/dist/esm/contracts/MockTokenSwap.d.ts +109 -169
- package/dist/esm/contracts/Multicall3.d.ts +147 -211
- package/dist/esm/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
- package/dist/esm/contracts/OracleFactory.d.ts +258 -238
- package/dist/esm/contracts/PerpetualManagerProxy.d.ts +1099 -891
- package/dist/esm/contracts/RedStoneAbi.d.ts +369 -488
- package/dist/esm/contracts/ShareToken.d.ts +232 -285
- package/dist/esm/contracts/common.d.ts +40 -11
- package/dist/esm/contracts/factories/ERC20__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/ERC20__factory.js +4 -4
- package/dist/esm/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js +4 -4
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/IPyth__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/IPyth__factory.js +4 -4
- package/dist/esm/contracts/factories/IPyth__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js +4 -4
- package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js +4 -4
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js +4 -4
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/esm/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js +4 -4
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/esm/contracts/factories/Multicall3__factory.d.ts +11 -9
- package/dist/esm/contracts/factories/Multicall3__factory.js +8 -11
- package/dist/esm/contracts/factories/Multicall3__factory.js.map +1 -1
- package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js +4 -4
- package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
- package/dist/esm/contracts/factories/OracleFactory__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/OracleFactory__factory.js +4 -4
- package/dist/esm/contracts/factories/OracleFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js +4 -4
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
- package/dist/esm/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/RedStoneAbi__factory.js +4 -4
- package/dist/esm/contracts/factories/RedStoneAbi__factory.js.map +1 -1
- package/dist/esm/contracts/factories/ShareToken__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/ShareToken__factory.js +4 -4
- package/dist/esm/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/esm/d8XMath.d.ts +16 -16
- package/dist/esm/d8XMath.js +48 -49
- package/dist/esm/d8XMath.js.map +1 -1
- package/dist/esm/liquidatorTool.d.ts +8 -8
- package/dist/esm/liquidatorTool.js +5 -7
- package/dist/esm/liquidatorTool.js.map +1 -1
- package/dist/esm/liquidityProviderTool.d.ts +4 -5
- package/dist/esm/liquidityProviderTool.js.map +1 -1
- package/dist/esm/marketData.d.ts +27 -28
- package/dist/esm/marketData.js +55 -59
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/nodeSDKTypes.d.ts +35 -37
- package/dist/esm/onChainPxFeed.d.ts +2 -2
- package/dist/esm/onChainPxFeed.js +3 -3
- package/dist/esm/onChainPxFeed.js.map +1 -1
- package/dist/esm/onChainPxFeedAngle.d.ts +2 -2
- package/dist/esm/onChainPxFeedAngle.js +2 -3
- package/dist/esm/onChainPxFeedAngle.js.map +1 -1
- package/dist/esm/onChainPxFeedRedStone.js +1 -1
- package/dist/esm/onChainPxFeedRedStone.js.map +1 -1
- package/dist/esm/orderExecutorTool.d.ts +7 -9
- package/dist/esm/orderExecutorTool.js +40 -49
- package/dist/esm/orderExecutorTool.js.map +1 -1
- package/dist/esm/perpetualDataHandler.d.ts +38 -35
- package/dist/esm/perpetualDataHandler.js +114 -108
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/perpetualEventHandler.d.ts +4 -5
- package/dist/esm/perpetualEventHandler.js +2 -2
- package/dist/esm/perpetualEventHandler.js.map +1 -1
- package/dist/esm/priceFeeds.js +2 -3
- package/dist/esm/priceFeeds.js.map +1 -1
- package/dist/esm/referralCodeSigner.d.ts +1 -1
- package/dist/esm/referralCodeSigner.js +6 -10
- package/dist/esm/referralCodeSigner.js.map +1 -1
- package/dist/esm/traderDigests.d.ts +2 -1
- package/dist/esm/traderDigests.js +2 -4
- package/dist/esm/traderDigests.js.map +1 -1
- package/dist/esm/traderInterface.d.ts +8 -9
- package/dist/esm/traderInterface.js +26 -23
- package/dist/esm/traderInterface.js.map +1 -1
- package/dist/esm/utils.d.ts +2 -3
- package/dist/esm/utils.js +1 -2
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/writeAccessHandler.d.ts +7 -9
- package/dist/esm/writeAccessHandler.js +5 -8
- package/dist/esm/writeAccessHandler.js.map +1 -1
- package/package.json +7 -17
- package/src/accountTrade.ts +32 -34
- package/src/brokerTool.ts +17 -20
- package/src/constants.ts +12 -13
- package/src/contracts/ERC20.ts +236 -350
- package/src/contracts/IPerpetualManager.ts +3359 -5050
- package/src/contracts/IPyth.ts +272 -409
- package/src/contracts/LimitOrderBook.ts +503 -779
- package/src/contracts/LimitOrderBookBeacon.ts +123 -171
- package/src/contracts/LimitOrderBookFactory.ts +263 -332
- package/src/contracts/MockTokenSwap.ts +237 -275
- package/src/contracts/Multicall3.ts +208 -374
- package/src/contracts/OnDemandOracleUpgradeable.ts +569 -782
- package/src/contracts/OracleFactory.ts +410 -538
- package/src/contracts/PerpetualManagerProxy.ts +1898 -1426
- package/src/contracts/RedStoneAbi.ts +486 -986
- package/src/contracts/ShareToken.ts +376 -557
- package/src/contracts/common.ts +108 -21
- package/src/contracts/factories/ERC20__factory.ts +4 -5
- package/src/contracts/factories/IPerpetualManager__factory.ts +4 -5
- package/src/contracts/factories/IPyth__factory.ts +4 -5
- package/src/contracts/factories/LimitOrderBookBeacon__factory.ts +5 -6
- package/src/contracts/factories/LimitOrderBookFactory__factory.ts +5 -6
- package/src/contracts/factories/LimitOrderBook__factory.ts +4 -5
- package/src/contracts/factories/MockTokenSwap__factory.ts +4 -5
- package/src/contracts/factories/Multicall3__factory.ts +21 -19
- package/src/contracts/factories/OnDemandOracleUpgradeable__factory.ts +5 -6
- package/src/contracts/factories/OracleFactory__factory.ts +4 -5
- package/src/contracts/factories/PerpetualManagerProxy__factory.ts +5 -6
- package/src/contracts/factories/RedStoneAbi__factory.ts +4 -8
- package/src/contracts/factories/ShareToken__factory.ts +4 -8
- package/src/d8XMath.ts +57 -57
- package/src/liquidatorTool.ts +12 -15
- package/src/liquidityProviderTool.ts +7 -5
- package/src/marketData.ts +110 -121
- package/src/nodeSDKTypes.ts +51 -38
- package/src/onChainPxFeed.ts +4 -4
- package/src/onChainPxFeedAngle.ts +5 -7
- package/src/onChainPxFeedRedStone.ts +1 -3
- package/src/orderExecutorTool.ts +102 -109
- package/src/perpetualDataHandler.ts +181 -167
- package/src/perpetualEventHandler.ts +16 -17
- package/src/priceFeeds.ts +2 -3
- package/src/referralCodeSigner.ts +6 -10
- package/src/traderDigests.ts +8 -5
- package/src/traderInterface.ts +45 -31
- package/src/utils.ts +3 -4
- package/src/version.ts +1 -1
- package/src/writeAccessHandler.ts +26 -17
package/dist/esm/marketData.js
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import { Interface } from "
|
|
2
|
-
import { BigNumber } from "@ethersproject/bignumber";
|
|
3
|
-
import { Contract } from "@ethersproject/contracts";
|
|
4
|
-
import { Provider, StaticJsonRpcProvider } from "@ethersproject/providers";
|
|
5
|
-
import { formatUnits } from "@ethersproject/units";
|
|
1
|
+
import { Contract, formatUnits, Interface, JsonRpcProvider } from "ethers";
|
|
6
2
|
import { BUY_SIDE, CLOSED_SIDE, COLLATERAL_CURRENCY_BASE, COLLATERAL_CURRENCY_QUANTO, CollaterlCCY, ERC20_ABI, MULTICALL_ADDRESS, ORDER_TYPE_MARKET, PERP_STATE_STR, SELL_SIDE, ZERO_ADDRESS, ZERO_ORDER_ID, } from "./constants";
|
|
7
|
-
import { ERC20__factory,
|
|
3
|
+
import { ERC20__factory, Multicall3__factory, } from "./contracts";
|
|
8
4
|
import { ABK64x64ToFloat, calculateLiquidationPriceCollateralBase, calculateLiquidationPriceCollateralQuanto, calculateLiquidationPriceCollateralQuote, dec18ToFloat, decNToFloat, floatToABK64x64, getDepositAmountForLvgTrade, getMaxSignedPositionSize, } from "./d8XMath";
|
|
9
5
|
import PerpetualDataHandler from "./perpetualDataHandler";
|
|
10
6
|
import { contractSymbolToSymbol, toBytes4 } from "./utils";
|
|
@@ -43,14 +39,14 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
43
39
|
* @param providerOrMarketData optional provider or existing market data instance
|
|
44
40
|
*/
|
|
45
41
|
async createProxyInstance(providerOrMarketData, overrides) {
|
|
46
|
-
if (providerOrMarketData == undefined ||
|
|
47
|
-
this.provider = providerOrMarketData ?? new
|
|
42
|
+
if (providerOrMarketData == undefined || !("createProxyInstance" in providerOrMarketData)) {
|
|
43
|
+
this.provider = providerOrMarketData ?? new JsonRpcProvider(this.nodeURL);
|
|
48
44
|
await this.initContractsAndData(this.provider, overrides);
|
|
49
45
|
}
|
|
50
46
|
else {
|
|
51
47
|
const mktData = providerOrMarketData;
|
|
52
48
|
this.nodeURL = mktData.config.nodeURL;
|
|
53
|
-
this.provider = new
|
|
49
|
+
this.provider = new JsonRpcProvider(mktData.config.nodeURL, mktData.network, { staticNetwork: true });
|
|
54
50
|
this.proxyContract = new Contract(mktData.getProxyAddress(), this.config.proxyABI, this.provider);
|
|
55
51
|
this.multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, this.provider);
|
|
56
52
|
({
|
|
@@ -72,7 +68,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
72
68
|
if (this.proxyContract == null) {
|
|
73
69
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
74
70
|
}
|
|
75
|
-
return this.proxyContract.
|
|
71
|
+
return this.proxyContract.target.toString();
|
|
76
72
|
}
|
|
77
73
|
/**
|
|
78
74
|
* Get the pre-computed triangulations
|
|
@@ -139,7 +135,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
139
135
|
if (overrides) {
|
|
140
136
|
({ rpcURL, ...overrides } = overrides);
|
|
141
137
|
}
|
|
142
|
-
const provider = new
|
|
138
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
143
139
|
return await MarketData._exchangeInfo(new Contract(this.proxyAddr, this.config.proxyABI, provider), Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider), this.poolStaticInfos, this.symbolToPerpStaticInfo, this.perpetualIdToSymbol, this.nestedPerpetualIDs, this.symbolList, this.priceFeedGetter, this.oraclefactoryAddr, // not undefined if proxy contract was initialized
|
|
144
140
|
overrides);
|
|
145
141
|
}
|
|
@@ -180,7 +176,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
180
176
|
if (overrides) {
|
|
181
177
|
({ rpcURL, ...overrides } = overrides);
|
|
182
178
|
}
|
|
183
|
-
const provider = new
|
|
179
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
184
180
|
if (symbols.length < 1) {
|
|
185
181
|
throw new Error(`No perpetuals found for symbol ${symbol}`);
|
|
186
182
|
}
|
|
@@ -202,7 +198,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
202
198
|
*/
|
|
203
199
|
async _openOrdersOfPerpetual(traderAddr, symbol, provider, overrides) {
|
|
204
200
|
// open orders requested only for given symbol
|
|
205
|
-
const orderBookContract =
|
|
201
|
+
const orderBookContract = this.getOrderBookContract(symbol, provider);
|
|
206
202
|
const orders = await MarketData.openOrdersOnOrderBook(traderAddr, orderBookContract, this.symbolToPerpStaticInfo, overrides);
|
|
207
203
|
const digests = await MarketData.orderIdsOfTrader(traderAddr, orderBookContract, overrides);
|
|
208
204
|
return { orders: orders, orderIds: digests };
|
|
@@ -218,7 +214,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
218
214
|
// filter by perpetuals with valid order book
|
|
219
215
|
symbols = symbols.filter((symbol) => this.symbolToPerpStaticInfo.get(symbol)?.limitOrderBookAddr !== ZERO_ADDRESS);
|
|
220
216
|
// open orders requested only for given symbol
|
|
221
|
-
const orderBookContracts = symbols.map((symbol) =>
|
|
217
|
+
const orderBookContracts = symbols.map((symbol) => this.getOrderBookContract(symbol, provider), this);
|
|
222
218
|
const multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider);
|
|
223
219
|
const { orders, digests } = await MarketData._openOrdersOnOrderBooks(traderAddr, orderBookContracts, multicall, this.symbolToPerpStaticInfo, overrides);
|
|
224
220
|
return symbols.map((_symbol, i) => ({ orders: orders[i], orderIds: digests[i] }));
|
|
@@ -263,7 +259,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
263
259
|
if (overrides) {
|
|
264
260
|
({ rpcURL, ...overrides } = overrides);
|
|
265
261
|
}
|
|
266
|
-
const provider = new
|
|
262
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
267
263
|
if (symbols.length < 1) {
|
|
268
264
|
throw new Error(`No perpetuals found for symbol ${symbol}`);
|
|
269
265
|
}
|
|
@@ -366,19 +362,19 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
366
362
|
const proxyCalls = [
|
|
367
363
|
// 0: traderState
|
|
368
364
|
{
|
|
369
|
-
target: this.proxyContract.
|
|
365
|
+
target: this.proxyContract.target,
|
|
370
366
|
allowFailure: true,
|
|
371
367
|
callData: this.proxyContract.interface.encodeFunctionData("getTraderState", [perpId, traderAddr, fS2S3]),
|
|
372
368
|
},
|
|
373
369
|
// 1: ammState
|
|
374
370
|
{
|
|
375
|
-
target: this.proxyContract.
|
|
371
|
+
target: this.proxyContract.target,
|
|
376
372
|
allowFailure: true,
|
|
377
373
|
callData: this.proxyContract.interface.encodeFunctionData("getAMMState", [perpId, fS2S3]),
|
|
378
374
|
},
|
|
379
375
|
// 2: exchangeFee
|
|
380
376
|
{
|
|
381
|
-
target: this.proxyContract.
|
|
377
|
+
target: this.proxyContract.target,
|
|
382
378
|
allowFailure: false,
|
|
383
379
|
callData: this.proxyContract.interface.encodeFunctionData("queryExchangeFee", [
|
|
384
380
|
poolId,
|
|
@@ -388,7 +384,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
388
384
|
},
|
|
389
385
|
// 3: perpetual price
|
|
390
386
|
{
|
|
391
|
-
target: this.proxyContract.
|
|
387
|
+
target: this.proxyContract.target,
|
|
392
388
|
allowFailure: true,
|
|
393
389
|
callData: this.proxyContract.interface.encodeFunctionData("queryPerpetualPrice", [
|
|
394
390
|
perpId,
|
|
@@ -398,31 +394,27 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
398
394
|
},
|
|
399
395
|
// 4: max long pos
|
|
400
396
|
{
|
|
401
|
-
target: this.proxyContract.
|
|
397
|
+
target: this.proxyContract.target,
|
|
402
398
|
allowFailure: false,
|
|
403
399
|
callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
|
|
404
400
|
perpId,
|
|
405
|
-
account
|
|
406
|
-
? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1))
|
|
407
|
-
: BigNumber.from(0),
|
|
401
|
+
account ? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1)) : 0n,
|
|
408
402
|
true,
|
|
409
403
|
]),
|
|
410
404
|
},
|
|
411
405
|
// 5: max short pos
|
|
412
406
|
{
|
|
413
|
-
target: this.proxyContract.
|
|
407
|
+
target: this.proxyContract.target,
|
|
414
408
|
allowFailure: false,
|
|
415
409
|
callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
|
|
416
410
|
perpId,
|
|
417
|
-
account
|
|
418
|
-
? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1))
|
|
419
|
-
: BigNumber.from(0),
|
|
411
|
+
account ? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1)) : 0n,
|
|
420
412
|
false,
|
|
421
413
|
]),
|
|
422
414
|
},
|
|
423
415
|
];
|
|
424
416
|
// multicall
|
|
425
|
-
const encodedResults = await this.multicall.
|
|
417
|
+
const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls, (overrides || {}));
|
|
426
418
|
// positionRisk to apply this trade on: if not given, defaults to the current trader's position
|
|
427
419
|
if (!account) {
|
|
428
420
|
let traderState;
|
|
@@ -504,8 +496,8 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
504
496
|
// max sell
|
|
505
497
|
const fMaxShort = this.proxyContract.interface.decodeFunctionResult("getMaxSignedOpenTradeSizeForPos", encodedResults[5].returnData)[0];
|
|
506
498
|
const maxShortTrade = account.side == SELL_SIDE
|
|
507
|
-
? Math.max(0, ABK64x64ToFloat(fMaxShort
|
|
508
|
-
: ABK64x64ToFloat(fMaxShort
|
|
499
|
+
? Math.max(0, Math.abs(ABK64x64ToFloat(fMaxShort)) - (accountGiven ? 0 : Math.abs(account.positionNotionalBaseCCY)))
|
|
500
|
+
: Math.abs(ABK64x64ToFloat(fMaxShort)) + Math.abs(account.positionNotionalBaseCCY);
|
|
509
501
|
// Current state:
|
|
510
502
|
let lotSizeBC = MarketData._getLotSize(order.symbol, this.symbolToPerpStaticInfo);
|
|
511
503
|
// Too small, no change to account
|
|
@@ -529,7 +521,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
529
521
|
let newSide = newPositionBC > 0 ? BUY_SIDE : newPositionBC < 0 ? SELL_SIDE : CLOSED_SIDE;
|
|
530
522
|
if (tradingFeeTbps === undefined) {
|
|
531
523
|
// use usual input if not overriden
|
|
532
|
-
tradingFeeTbps = exchangeFeeTbps + (order.brokerFeeTbps ?? 0);
|
|
524
|
+
tradingFeeTbps = Number(exchangeFeeTbps) + (order.brokerFeeTbps ?? 0);
|
|
533
525
|
}
|
|
534
526
|
let tradingFeeCC = (Math.abs(tradeAmountBC) * tradingFeeTbps * 1e-5 * S2) / S3;
|
|
535
527
|
let referralFeeCC = this.symbolToPerpStaticInfo.get(account.symbol).referralRebate;
|
|
@@ -904,7 +896,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
904
896
|
const proxyCalls = [
|
|
905
897
|
// 0: traderState
|
|
906
898
|
{
|
|
907
|
-
target: this.proxyContract.
|
|
899
|
+
target: this.proxyContract.target,
|
|
908
900
|
allowFailure: false,
|
|
909
901
|
callData: this.proxyContract.interface.encodeFunctionData("getTraderState", [perpId, traderAddr, fS2S3]),
|
|
910
902
|
},
|
|
@@ -916,7 +908,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
916
908
|
},
|
|
917
909
|
// 2: exchange fee
|
|
918
910
|
{
|
|
919
|
-
target: this.proxyContract.
|
|
911
|
+
target: this.proxyContract.target,
|
|
920
912
|
allowFailure: false,
|
|
921
913
|
callData: this.proxyContract.interface.encodeFunctionData("queryExchangeFee", [
|
|
922
914
|
poolId,
|
|
@@ -926,7 +918,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
926
918
|
},
|
|
927
919
|
];
|
|
928
920
|
// multicall
|
|
929
|
-
const encodedResults = await this.multicall.
|
|
921
|
+
const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
930
922
|
// position risk
|
|
931
923
|
const idxNotional = 4;
|
|
932
924
|
const traderState = this.proxyContract.interface.decodeFunctionResult("getTraderState", encodedResults[0].returnData)[0];
|
|
@@ -935,14 +927,14 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
935
927
|
indexPriceInfo[1],
|
|
936
928
|
]);
|
|
937
929
|
// fee rate
|
|
938
|
-
const
|
|
939
|
-
|
|
930
|
+
const feeRateTbps = this.proxyContract.interface.decodeFunctionResult("queryExchangeFee", encodedResults[2].returnData)[0];
|
|
931
|
+
const feeRate = 1e-5 * Number(feeRateTbps);
|
|
940
932
|
// Max based on margin requirements:
|
|
941
933
|
const walletBalance = decNToFloat(IERC20.decodeFunctionResult("balanceOf", encodedResults[1].returnData)[0], poolInfo.poolSettleTokenDecimals);
|
|
942
934
|
const proxyCalls2 = [
|
|
943
935
|
// 0: max long
|
|
944
936
|
{
|
|
945
|
-
target: this.proxyContract.
|
|
937
|
+
target: this.proxyContract.target,
|
|
946
938
|
allowFailure: false,
|
|
947
939
|
callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
|
|
948
940
|
perpId,
|
|
@@ -952,7 +944,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
952
944
|
},
|
|
953
945
|
// 1: max short
|
|
954
946
|
{
|
|
955
|
-
target: this.proxyContract.
|
|
947
|
+
target: this.proxyContract.target,
|
|
956
948
|
allowFailure: false,
|
|
957
949
|
callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
|
|
958
950
|
perpId,
|
|
@@ -962,7 +954,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
962
954
|
},
|
|
963
955
|
];
|
|
964
956
|
// multicall
|
|
965
|
-
const encodedResults2 = await this.multicall.
|
|
957
|
+
const encodedResults2 = await this.multicall.aggregate3.staticCall(proxyCalls2, overrides || {});
|
|
966
958
|
// Max based on perp:
|
|
967
959
|
// max buy
|
|
968
960
|
const maxLongOrderPerp = ABK64x64ToFloat(this.proxyContract.interface.decodeFunctionResult("getMaxSignedOpenTradeSizeForPos", encodedResults2[0].returnData)[0]);
|
|
@@ -1010,7 +1002,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1010
1002
|
async maxSignedPosition(side, symbol, overrides) {
|
|
1011
1003
|
let perpId = this.getPerpIdFromSymbol(symbol);
|
|
1012
1004
|
let isBuy = side == BUY_SIDE;
|
|
1013
|
-
let maxSignedPos = await this.proxyContract.getMaxSignedOpenTradeSizeForPos(perpId,
|
|
1005
|
+
let maxSignedPos = await this.proxyContract.getMaxSignedOpenTradeSizeForPos(perpId, 0n, isBuy, overrides || {});
|
|
1014
1006
|
return ABK64x64ToFloat(maxSignedPos);
|
|
1015
1007
|
}
|
|
1016
1008
|
/**
|
|
@@ -1066,7 +1058,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1066
1058
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
1067
1059
|
}
|
|
1068
1060
|
const orderBookContract = this.getOrderBookContract(symbol);
|
|
1069
|
-
const status = (await orderBookContract.getOrderStatus(orderId, overrides || {}));
|
|
1061
|
+
const status = Number(await orderBookContract.getOrderStatus(orderId, overrides || {}));
|
|
1070
1062
|
return status;
|
|
1071
1063
|
}
|
|
1072
1064
|
/**
|
|
@@ -1095,12 +1087,12 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1095
1087
|
}
|
|
1096
1088
|
const orderBookContract = this.getOrderBookContract(symbol);
|
|
1097
1089
|
const statusCalls = orderId.map((id) => ({
|
|
1098
|
-
target: orderBookContract.
|
|
1090
|
+
target: orderBookContract.target,
|
|
1099
1091
|
allowFailure: false,
|
|
1100
1092
|
callData: orderBookContract.interface.encodeFunctionData("getOrderStatus", [id]),
|
|
1101
1093
|
}));
|
|
1102
1094
|
// multicall
|
|
1103
|
-
const encodedResults = await this.multicall.
|
|
1095
|
+
const encodedResults = await this.multicall.aggregate3.staticCall(statusCalls, overrides || {});
|
|
1104
1096
|
// order status
|
|
1105
1097
|
return encodedResults.map((encodedResult) => orderBookContract.interface.decodeFunctionResult("getOrderStatus", encodedResult.returnData)[0]);
|
|
1106
1098
|
}
|
|
@@ -1306,17 +1298,17 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1306
1298
|
const contracts = orderBookContracts.filter((_c, i) => haveMoreOrders[i]);
|
|
1307
1299
|
// prepare calls
|
|
1308
1300
|
const ordersCalls = contracts.map((c, i) => ({
|
|
1309
|
-
target: c.
|
|
1301
|
+
target: c.target,
|
|
1310
1302
|
allowFailure: true,
|
|
1311
1303
|
callData: c.interface.encodeFunctionData("getOrders", [traderAddr, from[i], bulkSize]),
|
|
1312
1304
|
}));
|
|
1313
1305
|
const digestsCalls = contracts.map((c, i) => ({
|
|
1314
|
-
target: c.
|
|
1306
|
+
target: c.target,
|
|
1315
1307
|
allowFailure: true,
|
|
1316
1308
|
callData: c.interface.encodeFunctionData("limitDigestsOfTrader", [traderAddr, from[i], bulkSize]),
|
|
1317
1309
|
}));
|
|
1318
1310
|
// call
|
|
1319
|
-
const encodedResults = await multicall.
|
|
1311
|
+
const encodedResults = await multicall.aggregate3.staticCall(ordersCalls.concat(digestsCalls), overrides || {});
|
|
1320
1312
|
const encodedOrders = encodedResults.slice(0, ordersCalls.length);
|
|
1321
1313
|
const encodedDigests = encodedResults.slice(ordersCalls.length);
|
|
1322
1314
|
// parse
|
|
@@ -1324,19 +1316,19 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1324
1316
|
.slice(0, ordersCalls.length)
|
|
1325
1317
|
.map(({ success, returnData }, i) => {
|
|
1326
1318
|
if (!success)
|
|
1327
|
-
throw new Error(`Failed to get orders for order book ${contracts[i].
|
|
1319
|
+
throw new Error(`Failed to get orders for order book ${contracts[i].target}`);
|
|
1328
1320
|
return contracts[i].interface.decodeFunctionResult("getOrders", returnData)[0];
|
|
1329
1321
|
});
|
|
1330
1322
|
const allDigests = encodedDigests.map(({ success, returnData }, i) => {
|
|
1331
1323
|
if (!success)
|
|
1332
|
-
throw new Error(`Failed to get orders for order book ${contracts[i].
|
|
1324
|
+
throw new Error(`Failed to get orders for order book ${contracts[i].target}`);
|
|
1333
1325
|
return contracts[i].interface.decodeFunctionResult("limitDigestsOfTrader", returnData)[0];
|
|
1334
1326
|
});
|
|
1335
1327
|
// arrange
|
|
1336
1328
|
for (let j = 0; j < contracts.length; j++) {
|
|
1337
1329
|
let orders = allOrders[j].filter((o) => o.traderAddr != ZERO_ADDRESS);
|
|
1338
1330
|
let digests = allDigests[j].filter((d) => d != ZERO_ORDER_ID);
|
|
1339
|
-
let i = orderBookContracts.findIndex((c) => c.
|
|
1331
|
+
let i = orderBookContracts.findIndex((c) => c.target == contracts[j].target);
|
|
1340
1332
|
let k = 0;
|
|
1341
1333
|
while (k < orders.length && orders[k].traderAddr != ZERO_ADDRESS) {
|
|
1342
1334
|
userFriendlyOrders[i].push(PerpetualDataHandler.fromClientOrder(orders[k], symbolToPerpStaticInfo));
|
|
@@ -1360,7 +1352,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1360
1352
|
let digestsRaw = await orderBookContract.limitDigestsOfTrader(traderAddr, 0, 15, overrides || {});
|
|
1361
1353
|
let k = 0;
|
|
1362
1354
|
let digests = [];
|
|
1363
|
-
while (k < digestsRaw.length &&
|
|
1355
|
+
while (k < digestsRaw.length && BigInt(digestsRaw[k]) > 0n) {
|
|
1364
1356
|
digests.push(digestsRaw[k]);
|
|
1365
1357
|
k++;
|
|
1366
1358
|
}
|
|
@@ -1536,7 +1528,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1536
1528
|
let symbol3s = _perpetualIdToSymbol.get(id);
|
|
1537
1529
|
let info = _symbolToPerpStaticInfo.get(symbol3s);
|
|
1538
1530
|
let S2 = floatToABK64x64(_idxPriceMap.get(info.S2Symbol)[0]);
|
|
1539
|
-
let S3 =
|
|
1531
|
+
let S3 = 0n;
|
|
1540
1532
|
if (info.S3Symbol != "") {
|
|
1541
1533
|
S3 = floatToABK64x64(_idxPriceMap.get(info.S3Symbol)[0]);
|
|
1542
1534
|
}
|
|
@@ -1544,13 +1536,13 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1544
1536
|
indexPrices.push(S3);
|
|
1545
1537
|
}
|
|
1546
1538
|
proxyCalls.push({
|
|
1547
|
-
target: _proxyContract.
|
|
1539
|
+
target: _proxyContract.target,
|
|
1548
1540
|
allowFailure: false,
|
|
1549
1541
|
callData: _proxyContract.interface.encodeFunctionData("queryMidPrices", [perpetualIDChunks[k], indexPrices]),
|
|
1550
1542
|
});
|
|
1551
1543
|
}
|
|
1552
1544
|
// multicall
|
|
1553
|
-
const encodedResults = await _multicall.
|
|
1545
|
+
const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
1554
1546
|
// apply results
|
|
1555
1547
|
for (let k = 0; k < perpetualIDChunks.length; k++) {
|
|
1556
1548
|
let fMidPrice = _proxyContract.interface.decodeFunctionResult("queryMidPrices", encodedResults[k].returnData)[0];
|
|
@@ -1581,13 +1573,13 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1581
1573
|
const proxyCalls = [
|
|
1582
1574
|
// getLiquidityPools
|
|
1583
1575
|
{
|
|
1584
|
-
target: _proxyContract.
|
|
1576
|
+
target: _proxyContract.target,
|
|
1585
1577
|
allowFailure: false,
|
|
1586
1578
|
callData: _proxyContract.interface.encodeFunctionData("getLiquidityPools", [iFrom, iFrom + chunkSize - 1]), // from-to includes "to"
|
|
1587
1579
|
},
|
|
1588
1580
|
// getPerpetuals
|
|
1589
1581
|
{
|
|
1590
|
-
target: _proxyContract.
|
|
1582
|
+
target: _proxyContract.target,
|
|
1591
1583
|
allowFailure: false,
|
|
1592
1584
|
callData: _proxyContract.interface.encodeFunctionData("getPerpetuals", [
|
|
1593
1585
|
_nestedPerpetualIDs.slice(iFrom - 1, iFrom + chunkSize - 1).flat(), // from-to does not include "to"
|
|
@@ -1595,7 +1587,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1595
1587
|
},
|
|
1596
1588
|
];
|
|
1597
1589
|
// multicall
|
|
1598
|
-
const encodedResults = await _multicall.
|
|
1590
|
+
const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
1599
1591
|
const pools = _proxyContract.interface.decodeFunctionResult("getLiquidityPools", encodedResults[0].returnData)[0];
|
|
1600
1592
|
const perps = _proxyContract.interface.decodeFunctionResult("getPerpetuals", encodedResults[1].returnData)[0];
|
|
1601
1593
|
poolStates = poolStates.concat(MarketData._poolDataToPoolState(pools, _poolStaticInfos));
|
|
@@ -1634,7 +1626,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1634
1626
|
*/
|
|
1635
1627
|
static _perpetualDataToPerpetualState(_perpetuals, _symbolList) {
|
|
1636
1628
|
const perpStates = _perpetuals.map((perp) => ({
|
|
1637
|
-
id: perp.id,
|
|
1629
|
+
id: Number(perp.id),
|
|
1638
1630
|
state: PERP_STATE_STR[perp.state],
|
|
1639
1631
|
baseCurrency: contractSymbolToSymbol(perp.S2BaseCCY, _symbolList),
|
|
1640
1632
|
quoteCurrency: contractSymbolToSymbol(perp.S2QuoteCCY, _symbolList),
|
|
@@ -1664,7 +1656,11 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1664
1656
|
*/
|
|
1665
1657
|
static async _exchangeInfo(_proxyContract, _multicall, _poolStaticInfos, _symbolToPerpStaticInfo, _perpetualIdToSymbol, _nestedPerpetualIDs, _symbolList, _priceFeedGetter, _oracleFactoryAddr, overrides) {
|
|
1666
1658
|
// get the factory address (shared among all pools)
|
|
1667
|
-
let info = {
|
|
1659
|
+
let info = {
|
|
1660
|
+
pools: [],
|
|
1661
|
+
oracleFactoryAddr: _oracleFactoryAddr,
|
|
1662
|
+
proxyAddr: _proxyContract.target.toString(),
|
|
1663
|
+
};
|
|
1668
1664
|
// get all prices from off-chain price-sources: no RPC calls
|
|
1669
1665
|
let idxPriceMap = await MarketData._getAllIndexPrices(_symbolToPerpStaticInfo, _priceFeedGetter);
|
|
1670
1666
|
// query mid-prices from on-chain conditional on the off-chain prices
|
|
@@ -1763,7 +1759,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1763
1759
|
this.getPerpIdFromSymbol(s),
|
|
1764
1760
|
]),
|
|
1765
1761
|
}));
|
|
1766
|
-
const encodedResults = await this.multicall.
|
|
1762
|
+
const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls);
|
|
1767
1763
|
const prices = encodedResults.map((result) => this.proxyContract.interface.decodeFunctionResult("getLastPerpetualBaseToUSDConversion", result.returnData)[0]);
|
|
1768
1764
|
prices.forEach((px, i) => {
|
|
1769
1765
|
const s = `${symbols[i].split("-")[0]}-USD`;
|