@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/cjs/marketData.js
CHANGED
|
@@ -3,13 +3,9 @@ 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
|
-
const
|
|
7
|
-
const bignumber_1 = require("@ethersproject/bignumber");
|
|
8
|
-
const contracts_1 = require("@ethersproject/contracts");
|
|
9
|
-
const providers_1 = require("@ethersproject/providers");
|
|
10
|
-
const units_1 = require("@ethersproject/units");
|
|
6
|
+
const ethers_1 = require("ethers");
|
|
11
7
|
const constants_1 = require("./constants");
|
|
12
|
-
const
|
|
8
|
+
const contracts_1 = require("./contracts");
|
|
13
9
|
const d8XMath_1 = require("./d8XMath");
|
|
14
10
|
const perpetualDataHandler_1 = __importDefault(require("./perpetualDataHandler"));
|
|
15
11
|
const utils_1 = require("./utils");
|
|
@@ -48,16 +44,16 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
48
44
|
* @param providerOrMarketData optional provider or existing market data instance
|
|
49
45
|
*/
|
|
50
46
|
async createProxyInstance(providerOrMarketData, overrides) {
|
|
51
|
-
if (providerOrMarketData == undefined ||
|
|
52
|
-
this.provider = providerOrMarketData ?? new
|
|
47
|
+
if (providerOrMarketData == undefined || !("createProxyInstance" in providerOrMarketData)) {
|
|
48
|
+
this.provider = providerOrMarketData ?? new ethers_1.JsonRpcProvider(this.nodeURL);
|
|
53
49
|
await this.initContractsAndData(this.provider, overrides);
|
|
54
50
|
}
|
|
55
51
|
else {
|
|
56
52
|
const mktData = providerOrMarketData;
|
|
57
53
|
this.nodeURL = mktData.config.nodeURL;
|
|
58
|
-
this.provider = new
|
|
59
|
-
this.proxyContract = new
|
|
60
|
-
this.multicall =
|
|
54
|
+
this.provider = new ethers_1.JsonRpcProvider(mktData.config.nodeURL, mktData.network, { staticNetwork: true });
|
|
55
|
+
this.proxyContract = new ethers_1.Contract(mktData.getProxyAddress(), this.config.proxyABI, this.provider);
|
|
56
|
+
this.multicall = contracts_1.Multicall3__factory.connect(this.config.multicall ?? constants_1.MULTICALL_ADDRESS, this.provider);
|
|
61
57
|
({
|
|
62
58
|
nestedPerpetualIDs: this.nestedPerpetualIDs,
|
|
63
59
|
poolStaticInfos: this.poolStaticInfos,
|
|
@@ -77,7 +73,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
77
73
|
if (this.proxyContract == null) {
|
|
78
74
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
79
75
|
}
|
|
80
|
-
return this.proxyContract.
|
|
76
|
+
return this.proxyContract.target.toString();
|
|
81
77
|
}
|
|
82
78
|
/**
|
|
83
79
|
* Get the pre-computed triangulations
|
|
@@ -144,8 +140,8 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
144
140
|
if (overrides) {
|
|
145
141
|
({ rpcURL, ...overrides } = overrides);
|
|
146
142
|
}
|
|
147
|
-
const provider = new
|
|
148
|
-
return await MarketData._exchangeInfo(new
|
|
143
|
+
const provider = new ethers_1.JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
144
|
+
return await MarketData._exchangeInfo(new ethers_1.Contract(this.proxyAddr, this.config.proxyABI, provider), contracts_1.Multicall3__factory.connect(this.config.multicall ?? constants_1.MULTICALL_ADDRESS, provider), this.poolStaticInfos, this.symbolToPerpStaticInfo, this.perpetualIdToSymbol, this.nestedPerpetualIDs, this.symbolList, this.priceFeedGetter, this.oraclefactoryAddr, // not undefined if proxy contract was initialized
|
|
149
145
|
overrides);
|
|
150
146
|
}
|
|
151
147
|
/**
|
|
@@ -185,7 +181,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
185
181
|
if (overrides) {
|
|
186
182
|
({ rpcURL, ...overrides } = overrides);
|
|
187
183
|
}
|
|
188
|
-
const provider = new
|
|
184
|
+
const provider = new ethers_1.JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
189
185
|
if (symbols.length < 1) {
|
|
190
186
|
throw new Error(`No perpetuals found for symbol ${symbol}`);
|
|
191
187
|
}
|
|
@@ -207,7 +203,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
207
203
|
*/
|
|
208
204
|
async _openOrdersOfPerpetual(traderAddr, symbol, provider, overrides) {
|
|
209
205
|
// open orders requested only for given symbol
|
|
210
|
-
const orderBookContract =
|
|
206
|
+
const orderBookContract = this.getOrderBookContract(symbol, provider);
|
|
211
207
|
const orders = await MarketData.openOrdersOnOrderBook(traderAddr, orderBookContract, this.symbolToPerpStaticInfo, overrides);
|
|
212
208
|
const digests = await MarketData.orderIdsOfTrader(traderAddr, orderBookContract, overrides);
|
|
213
209
|
return { orders: orders, orderIds: digests };
|
|
@@ -223,8 +219,8 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
223
219
|
// filter by perpetuals with valid order book
|
|
224
220
|
symbols = symbols.filter((symbol) => this.symbolToPerpStaticInfo.get(symbol)?.limitOrderBookAddr !== constants_1.ZERO_ADDRESS);
|
|
225
221
|
// open orders requested only for given symbol
|
|
226
|
-
const orderBookContracts = symbols.map((symbol) =>
|
|
227
|
-
const multicall =
|
|
222
|
+
const orderBookContracts = symbols.map((symbol) => this.getOrderBookContract(symbol, provider), this);
|
|
223
|
+
const multicall = contracts_1.Multicall3__factory.connect(this.config.multicall ?? constants_1.MULTICALL_ADDRESS, provider);
|
|
228
224
|
const { orders, digests } = await MarketData._openOrdersOnOrderBooks(traderAddr, orderBookContracts, multicall, this.symbolToPerpStaticInfo, overrides);
|
|
229
225
|
return symbols.map((_symbol, i) => ({ orders: orders[i], orderIds: digests[i] }));
|
|
230
226
|
}
|
|
@@ -268,7 +264,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
268
264
|
if (overrides) {
|
|
269
265
|
({ rpcURL, ...overrides } = overrides);
|
|
270
266
|
}
|
|
271
|
-
const provider = new
|
|
267
|
+
const provider = new ethers_1.JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
272
268
|
if (symbols.length < 1) {
|
|
273
269
|
throw new Error(`No perpetuals found for symbol ${symbol}`);
|
|
274
270
|
}
|
|
@@ -290,7 +286,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
290
286
|
*/
|
|
291
287
|
async _positionRiskForTraderInPerpetual(traderAddr, symbol, provider, overrides) {
|
|
292
288
|
let obj = await this.priceFeedGetter.fetchPricesForPerpetual(symbol);
|
|
293
|
-
let mgnAcct = await perpetualDataHandler_1.default.getMarginAccount(traderAddr, symbol, this.symbolToPerpStaticInfo, new
|
|
289
|
+
let mgnAcct = await perpetualDataHandler_1.default.getMarginAccount(traderAddr, symbol, this.symbolToPerpStaticInfo, new ethers_1.Contract(this.proxyAddr, this.config.proxyABI, provider), [obj.idxPrices[0], obj.idxPrices[1]], overrides);
|
|
294
290
|
return mgnAcct;
|
|
295
291
|
}
|
|
296
292
|
/**
|
|
@@ -311,7 +307,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
311
307
|
let callSymbols = symbols.slice(0, MAX_SYMBOLS_PER_CALL);
|
|
312
308
|
let pxS2S3 = S2S3.slice(0, MAX_SYMBOLS_PER_CALL);
|
|
313
309
|
while (callSymbols.length > 0) {
|
|
314
|
-
let acc = await perpetualDataHandler_1.default.getMarginAccounts(Array(callSymbols.length).fill(traderAddr), callSymbols, this.symbolToPerpStaticInfo,
|
|
310
|
+
let acc = await perpetualDataHandler_1.default.getMarginAccounts(Array(callSymbols.length).fill(traderAddr), callSymbols, this.symbolToPerpStaticInfo, contracts_1.Multicall3__factory.connect(this.config.multicall ?? constants_1.MULTICALL_ADDRESS, provider), new ethers_1.Contract(this.proxyAddr, this.config.proxyABI, provider), pxS2S3, overrides);
|
|
315
311
|
mgnAcct = mgnAcct.concat(acc);
|
|
316
312
|
callSymbols = symbols.slice(mgnAcct.length, mgnAcct.length + MAX_SYMBOLS_PER_CALL);
|
|
317
313
|
pxS2S3 = S2S3.slice(mgnAcct.length, mgnAcct.length + MAX_SYMBOLS_PER_CALL);
|
|
@@ -371,19 +367,19 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
371
367
|
const proxyCalls = [
|
|
372
368
|
// 0: traderState
|
|
373
369
|
{
|
|
374
|
-
target: this.proxyContract.
|
|
370
|
+
target: this.proxyContract.target,
|
|
375
371
|
allowFailure: true,
|
|
376
372
|
callData: this.proxyContract.interface.encodeFunctionData("getTraderState", [perpId, traderAddr, fS2S3]),
|
|
377
373
|
},
|
|
378
374
|
// 1: ammState
|
|
379
375
|
{
|
|
380
|
-
target: this.proxyContract.
|
|
376
|
+
target: this.proxyContract.target,
|
|
381
377
|
allowFailure: true,
|
|
382
378
|
callData: this.proxyContract.interface.encodeFunctionData("getAMMState", [perpId, fS2S3]),
|
|
383
379
|
},
|
|
384
380
|
// 2: exchangeFee
|
|
385
381
|
{
|
|
386
|
-
target: this.proxyContract.
|
|
382
|
+
target: this.proxyContract.target,
|
|
387
383
|
allowFailure: false,
|
|
388
384
|
callData: this.proxyContract.interface.encodeFunctionData("queryExchangeFee", [
|
|
389
385
|
poolId,
|
|
@@ -393,7 +389,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
393
389
|
},
|
|
394
390
|
// 3: perpetual price
|
|
395
391
|
{
|
|
396
|
-
target: this.proxyContract.
|
|
392
|
+
target: this.proxyContract.target,
|
|
397
393
|
allowFailure: true,
|
|
398
394
|
callData: this.proxyContract.interface.encodeFunctionData("queryPerpetualPrice", [
|
|
399
395
|
perpId,
|
|
@@ -403,31 +399,27 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
403
399
|
},
|
|
404
400
|
// 4: max long pos
|
|
405
401
|
{
|
|
406
|
-
target: this.proxyContract.
|
|
402
|
+
target: this.proxyContract.target,
|
|
407
403
|
allowFailure: false,
|
|
408
404
|
callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
|
|
409
405
|
perpId,
|
|
410
|
-
account
|
|
411
|
-
? (0, d8XMath_1.floatToABK64x64)(account.positionNotionalBaseCCY * (account.side === constants_1.BUY_SIDE ? 1 : -1))
|
|
412
|
-
: bignumber_1.BigNumber.from(0),
|
|
406
|
+
account ? (0, d8XMath_1.floatToABK64x64)(account.positionNotionalBaseCCY * (account.side === constants_1.BUY_SIDE ? 1 : -1)) : 0n,
|
|
413
407
|
true,
|
|
414
408
|
]),
|
|
415
409
|
},
|
|
416
410
|
// 5: max short pos
|
|
417
411
|
{
|
|
418
|
-
target: this.proxyContract.
|
|
412
|
+
target: this.proxyContract.target,
|
|
419
413
|
allowFailure: false,
|
|
420
414
|
callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
|
|
421
415
|
perpId,
|
|
422
|
-
account
|
|
423
|
-
? (0, d8XMath_1.floatToABK64x64)(account.positionNotionalBaseCCY * (account.side === constants_1.BUY_SIDE ? 1 : -1))
|
|
424
|
-
: bignumber_1.BigNumber.from(0),
|
|
416
|
+
account ? (0, d8XMath_1.floatToABK64x64)(account.positionNotionalBaseCCY * (account.side === constants_1.BUY_SIDE ? 1 : -1)) : 0n,
|
|
425
417
|
false,
|
|
426
418
|
]),
|
|
427
419
|
},
|
|
428
420
|
];
|
|
429
421
|
// multicall
|
|
430
|
-
const encodedResults = await this.multicall.
|
|
422
|
+
const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls, (overrides || {}));
|
|
431
423
|
// positionRisk to apply this trade on: if not given, defaults to the current trader's position
|
|
432
424
|
if (!account) {
|
|
433
425
|
let traderState;
|
|
@@ -509,8 +501,8 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
509
501
|
// max sell
|
|
510
502
|
const fMaxShort = this.proxyContract.interface.decodeFunctionResult("getMaxSignedOpenTradeSizeForPos", encodedResults[5].returnData)[0];
|
|
511
503
|
const maxShortTrade = account.side == constants_1.SELL_SIDE
|
|
512
|
-
? Math.max(0, (0, d8XMath_1.ABK64x64ToFloat)(fMaxShort
|
|
513
|
-
: (0, d8XMath_1.ABK64x64ToFloat)(fMaxShort
|
|
504
|
+
? Math.max(0, Math.abs((0, d8XMath_1.ABK64x64ToFloat)(fMaxShort)) - (accountGiven ? 0 : Math.abs(account.positionNotionalBaseCCY)))
|
|
505
|
+
: Math.abs((0, d8XMath_1.ABK64x64ToFloat)(fMaxShort)) + Math.abs(account.positionNotionalBaseCCY);
|
|
514
506
|
// Current state:
|
|
515
507
|
let lotSizeBC = MarketData._getLotSize(order.symbol, this.symbolToPerpStaticInfo);
|
|
516
508
|
// Too small, no change to account
|
|
@@ -534,7 +526,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
534
526
|
let newSide = newPositionBC > 0 ? constants_1.BUY_SIDE : newPositionBC < 0 ? constants_1.SELL_SIDE : constants_1.CLOSED_SIDE;
|
|
535
527
|
if (tradingFeeTbps === undefined) {
|
|
536
528
|
// use usual input if not overriden
|
|
537
|
-
tradingFeeTbps = exchangeFeeTbps + (order.brokerFeeTbps ?? 0);
|
|
529
|
+
tradingFeeTbps = Number(exchangeFeeTbps) + (order.brokerFeeTbps ?? 0);
|
|
538
530
|
}
|
|
539
531
|
let tradingFeeCC = (Math.abs(tradeAmountBC) * tradingFeeTbps * 1e-5 * S2) / S3;
|
|
540
532
|
let referralFeeCC = this.symbolToPerpStaticInfo.get(account.symbol).referralRebate;
|
|
@@ -754,10 +746,10 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
754
746
|
async getWalletBalance(address, symbol, overrides) {
|
|
755
747
|
let poolIdx = this.getPoolStaticInfoIndexFromSymbol(symbol);
|
|
756
748
|
let settleTokenAddr = this.poolStaticInfos[poolIdx].poolSettleTokenAddr;
|
|
757
|
-
let token =
|
|
749
|
+
let token = contracts_1.ERC20__factory.connect(settleTokenAddr, this.provider);
|
|
758
750
|
let walletBalance = await token.balanceOf(address, overrides || {});
|
|
759
751
|
let decimals = this.poolStaticInfos[poolIdx].poolSettleTokenDecimals;
|
|
760
|
-
return Number((0,
|
|
752
|
+
return Number((0, ethers_1.formatUnits)(walletBalance, decimals));
|
|
761
753
|
}
|
|
762
754
|
/**
|
|
763
755
|
* Get the address' balance of the pool share token
|
|
@@ -791,7 +783,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
791
783
|
*/
|
|
792
784
|
async _getPoolShareTokenBalanceFromId(address, poolId, overrides) {
|
|
793
785
|
let shareTokenAddr = this.poolStaticInfos[poolId - 1].shareTokenAddr;
|
|
794
|
-
let shareToken =
|
|
786
|
+
let shareToken = contracts_1.ERC20__factory.connect(shareTokenAddr, this.provider);
|
|
795
787
|
let d18ShareTokenBalanceOfAddr = await shareToken.balanceOf(address, overrides || {});
|
|
796
788
|
return (0, d8XMath_1.dec18ToFloat)(d18ShareTokenBalanceOfAddr);
|
|
797
789
|
}
|
|
@@ -900,7 +892,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
900
892
|
const poolId = this.getPoolIdFromSymbol(symbol);
|
|
901
893
|
const poolInfo = this.poolStaticInfos[this.getPoolStaticInfoIndexFromSymbol(symbol)];
|
|
902
894
|
const perpInfo = this.getPerpetualStaticInfo(symbol);
|
|
903
|
-
const IERC20 = new
|
|
895
|
+
const IERC20 = new ethers_1.Interface(constants_1.ERC20_ABI);
|
|
904
896
|
const indexPriceInfo = await this.priceFeedGetter
|
|
905
897
|
.fetchPricesForPerpetual(symbol)
|
|
906
898
|
.then((obj) => [obj.idxPrices[0], obj.idxPrices[1], obj.mktClosed[0], obj.mktClosed[1]]);
|
|
@@ -909,7 +901,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
909
901
|
const proxyCalls = [
|
|
910
902
|
// 0: traderState
|
|
911
903
|
{
|
|
912
|
-
target: this.proxyContract.
|
|
904
|
+
target: this.proxyContract.target,
|
|
913
905
|
allowFailure: false,
|
|
914
906
|
callData: this.proxyContract.interface.encodeFunctionData("getTraderState", [perpId, traderAddr, fS2S3]),
|
|
915
907
|
},
|
|
@@ -921,7 +913,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
921
913
|
},
|
|
922
914
|
// 2: exchange fee
|
|
923
915
|
{
|
|
924
|
-
target: this.proxyContract.
|
|
916
|
+
target: this.proxyContract.target,
|
|
925
917
|
allowFailure: false,
|
|
926
918
|
callData: this.proxyContract.interface.encodeFunctionData("queryExchangeFee", [
|
|
927
919
|
poolId,
|
|
@@ -931,7 +923,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
931
923
|
},
|
|
932
924
|
];
|
|
933
925
|
// multicall
|
|
934
|
-
const encodedResults = await this.multicall.
|
|
926
|
+
const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
935
927
|
// position risk
|
|
936
928
|
const idxNotional = 4;
|
|
937
929
|
const traderState = this.proxyContract.interface.decodeFunctionResult("getTraderState", encodedResults[0].returnData)[0];
|
|
@@ -940,14 +932,14 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
940
932
|
indexPriceInfo[1],
|
|
941
933
|
]);
|
|
942
934
|
// fee rate
|
|
943
|
-
const
|
|
944
|
-
|
|
935
|
+
const feeRateTbps = this.proxyContract.interface.decodeFunctionResult("queryExchangeFee", encodedResults[2].returnData)[0];
|
|
936
|
+
const feeRate = 1e-5 * Number(feeRateTbps);
|
|
945
937
|
// Max based on margin requirements:
|
|
946
938
|
const walletBalance = (0, d8XMath_1.decNToFloat)(IERC20.decodeFunctionResult("balanceOf", encodedResults[1].returnData)[0], poolInfo.poolSettleTokenDecimals);
|
|
947
939
|
const proxyCalls2 = [
|
|
948
940
|
// 0: max long
|
|
949
941
|
{
|
|
950
|
-
target: this.proxyContract.
|
|
942
|
+
target: this.proxyContract.target,
|
|
951
943
|
allowFailure: false,
|
|
952
944
|
callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
|
|
953
945
|
perpId,
|
|
@@ -957,7 +949,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
957
949
|
},
|
|
958
950
|
// 1: max short
|
|
959
951
|
{
|
|
960
|
-
target: this.proxyContract.
|
|
952
|
+
target: this.proxyContract.target,
|
|
961
953
|
allowFailure: false,
|
|
962
954
|
callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
|
|
963
955
|
perpId,
|
|
@@ -967,7 +959,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
967
959
|
},
|
|
968
960
|
];
|
|
969
961
|
// multicall
|
|
970
|
-
const encodedResults2 = await this.multicall.
|
|
962
|
+
const encodedResults2 = await this.multicall.aggregate3.staticCall(proxyCalls2, overrides || {});
|
|
971
963
|
// Max based on perp:
|
|
972
964
|
// max buy
|
|
973
965
|
const maxLongOrderPerp = (0, d8XMath_1.ABK64x64ToFloat)(this.proxyContract.interface.decodeFunctionResult("getMaxSignedOpenTradeSizeForPos", encodedResults2[0].returnData)[0]);
|
|
@@ -1015,7 +1007,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
1015
1007
|
async maxSignedPosition(side, symbol, overrides) {
|
|
1016
1008
|
let perpId = this.getPerpIdFromSymbol(symbol);
|
|
1017
1009
|
let isBuy = side == constants_1.BUY_SIDE;
|
|
1018
|
-
let maxSignedPos = await this.proxyContract.getMaxSignedOpenTradeSizeForPos(perpId,
|
|
1010
|
+
let maxSignedPos = await this.proxyContract.getMaxSignedOpenTradeSizeForPos(perpId, 0n, isBuy, overrides || {});
|
|
1019
1011
|
return (0, d8XMath_1.ABK64x64ToFloat)(maxSignedPos);
|
|
1020
1012
|
}
|
|
1021
1013
|
/**
|
|
@@ -1071,7 +1063,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
1071
1063
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
1072
1064
|
}
|
|
1073
1065
|
const orderBookContract = this.getOrderBookContract(symbol);
|
|
1074
|
-
const status = (await orderBookContract.getOrderStatus(orderId, overrides || {}));
|
|
1066
|
+
const status = Number(await orderBookContract.getOrderStatus(orderId, overrides || {}));
|
|
1075
1067
|
return status;
|
|
1076
1068
|
}
|
|
1077
1069
|
/**
|
|
@@ -1100,12 +1092,12 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
1100
1092
|
}
|
|
1101
1093
|
const orderBookContract = this.getOrderBookContract(symbol);
|
|
1102
1094
|
const statusCalls = orderId.map((id) => ({
|
|
1103
|
-
target: orderBookContract.
|
|
1095
|
+
target: orderBookContract.target,
|
|
1104
1096
|
allowFailure: false,
|
|
1105
1097
|
callData: orderBookContract.interface.encodeFunctionData("getOrderStatus", [id]),
|
|
1106
1098
|
}));
|
|
1107
1099
|
// multicall
|
|
1108
|
-
const encodedResults = await this.multicall.
|
|
1100
|
+
const encodedResults = await this.multicall.aggregate3.staticCall(statusCalls, overrides || {});
|
|
1109
1101
|
// order status
|
|
1110
1102
|
return encodedResults.map((encodedResult) => orderBookContract.interface.decodeFunctionResult("getOrderStatus", encodedResult.returnData)[0]);
|
|
1111
1103
|
}
|
|
@@ -1311,17 +1303,17 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
1311
1303
|
const contracts = orderBookContracts.filter((_c, i) => haveMoreOrders[i]);
|
|
1312
1304
|
// prepare calls
|
|
1313
1305
|
const ordersCalls = contracts.map((c, i) => ({
|
|
1314
|
-
target: c.
|
|
1306
|
+
target: c.target,
|
|
1315
1307
|
allowFailure: true,
|
|
1316
1308
|
callData: c.interface.encodeFunctionData("getOrders", [traderAddr, from[i], bulkSize]),
|
|
1317
1309
|
}));
|
|
1318
1310
|
const digestsCalls = contracts.map((c, i) => ({
|
|
1319
|
-
target: c.
|
|
1311
|
+
target: c.target,
|
|
1320
1312
|
allowFailure: true,
|
|
1321
1313
|
callData: c.interface.encodeFunctionData("limitDigestsOfTrader", [traderAddr, from[i], bulkSize]),
|
|
1322
1314
|
}));
|
|
1323
1315
|
// call
|
|
1324
|
-
const encodedResults = await multicall.
|
|
1316
|
+
const encodedResults = await multicall.aggregate3.staticCall(ordersCalls.concat(digestsCalls), overrides || {});
|
|
1325
1317
|
const encodedOrders = encodedResults.slice(0, ordersCalls.length);
|
|
1326
1318
|
const encodedDigests = encodedResults.slice(ordersCalls.length);
|
|
1327
1319
|
// parse
|
|
@@ -1329,19 +1321,19 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
1329
1321
|
.slice(0, ordersCalls.length)
|
|
1330
1322
|
.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("getOrders", returnData)[0];
|
|
1334
1326
|
});
|
|
1335
1327
|
const allDigests = encodedDigests.map(({ success, returnData }, i) => {
|
|
1336
1328
|
if (!success)
|
|
1337
|
-
throw new Error(`Failed to get orders for order book ${contracts[i].
|
|
1329
|
+
throw new Error(`Failed to get orders for order book ${contracts[i].target}`);
|
|
1338
1330
|
return contracts[i].interface.decodeFunctionResult("limitDigestsOfTrader", returnData)[0];
|
|
1339
1331
|
});
|
|
1340
1332
|
// arrange
|
|
1341
1333
|
for (let j = 0; j < contracts.length; j++) {
|
|
1342
1334
|
let orders = allOrders[j].filter((o) => o.traderAddr != constants_1.ZERO_ADDRESS);
|
|
1343
1335
|
let digests = allDigests[j].filter((d) => d != constants_1.ZERO_ORDER_ID);
|
|
1344
|
-
let i = orderBookContracts.findIndex((c) => c.
|
|
1336
|
+
let i = orderBookContracts.findIndex((c) => c.target == contracts[j].target);
|
|
1345
1337
|
let k = 0;
|
|
1346
1338
|
while (k < orders.length && orders[k].traderAddr != constants_1.ZERO_ADDRESS) {
|
|
1347
1339
|
userFriendlyOrders[i].push(perpetualDataHandler_1.default.fromClientOrder(orders[k], symbolToPerpStaticInfo));
|
|
@@ -1365,7 +1357,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
1365
1357
|
let digestsRaw = await orderBookContract.limitDigestsOfTrader(traderAddr, 0, 15, overrides || {});
|
|
1366
1358
|
let k = 0;
|
|
1367
1359
|
let digests = [];
|
|
1368
|
-
while (k < digestsRaw.length &&
|
|
1360
|
+
while (k < digestsRaw.length && BigInt(digestsRaw[k]) > 0n) {
|
|
1369
1361
|
digests.push(digestsRaw[k]);
|
|
1370
1362
|
k++;
|
|
1371
1363
|
}
|
|
@@ -1541,7 +1533,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
1541
1533
|
let symbol3s = _perpetualIdToSymbol.get(id);
|
|
1542
1534
|
let info = _symbolToPerpStaticInfo.get(symbol3s);
|
|
1543
1535
|
let S2 = (0, d8XMath_1.floatToABK64x64)(_idxPriceMap.get(info.S2Symbol)[0]);
|
|
1544
|
-
let S3 =
|
|
1536
|
+
let S3 = 0n;
|
|
1545
1537
|
if (info.S3Symbol != "") {
|
|
1546
1538
|
S3 = (0, d8XMath_1.floatToABK64x64)(_idxPriceMap.get(info.S3Symbol)[0]);
|
|
1547
1539
|
}
|
|
@@ -1549,13 +1541,13 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
1549
1541
|
indexPrices.push(S3);
|
|
1550
1542
|
}
|
|
1551
1543
|
proxyCalls.push({
|
|
1552
|
-
target: _proxyContract.
|
|
1544
|
+
target: _proxyContract.target,
|
|
1553
1545
|
allowFailure: false,
|
|
1554
1546
|
callData: _proxyContract.interface.encodeFunctionData("queryMidPrices", [perpetualIDChunks[k], indexPrices]),
|
|
1555
1547
|
});
|
|
1556
1548
|
}
|
|
1557
1549
|
// multicall
|
|
1558
|
-
const encodedResults = await _multicall.
|
|
1550
|
+
const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
1559
1551
|
// apply results
|
|
1560
1552
|
for (let k = 0; k < perpetualIDChunks.length; k++) {
|
|
1561
1553
|
let fMidPrice = _proxyContract.interface.decodeFunctionResult("queryMidPrices", encodedResults[k].returnData)[0];
|
|
@@ -1586,13 +1578,13 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
1586
1578
|
const proxyCalls = [
|
|
1587
1579
|
// getLiquidityPools
|
|
1588
1580
|
{
|
|
1589
|
-
target: _proxyContract.
|
|
1581
|
+
target: _proxyContract.target,
|
|
1590
1582
|
allowFailure: false,
|
|
1591
1583
|
callData: _proxyContract.interface.encodeFunctionData("getLiquidityPools", [iFrom, iFrom + chunkSize - 1]), // from-to includes "to"
|
|
1592
1584
|
},
|
|
1593
1585
|
// getPerpetuals
|
|
1594
1586
|
{
|
|
1595
|
-
target: _proxyContract.
|
|
1587
|
+
target: _proxyContract.target,
|
|
1596
1588
|
allowFailure: false,
|
|
1597
1589
|
callData: _proxyContract.interface.encodeFunctionData("getPerpetuals", [
|
|
1598
1590
|
_nestedPerpetualIDs.slice(iFrom - 1, iFrom + chunkSize - 1).flat(), // from-to does not include "to"
|
|
@@ -1600,7 +1592,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
1600
1592
|
},
|
|
1601
1593
|
];
|
|
1602
1594
|
// multicall
|
|
1603
|
-
const encodedResults = await _multicall.
|
|
1595
|
+
const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
1604
1596
|
const pools = _proxyContract.interface.decodeFunctionResult("getLiquidityPools", encodedResults[0].returnData)[0];
|
|
1605
1597
|
const perps = _proxyContract.interface.decodeFunctionResult("getPerpetuals", encodedResults[1].returnData)[0];
|
|
1606
1598
|
poolStates = poolStates.concat(MarketData._poolDataToPoolState(pools, _poolStaticInfos));
|
|
@@ -1639,7 +1631,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
1639
1631
|
*/
|
|
1640
1632
|
static _perpetualDataToPerpetualState(_perpetuals, _symbolList) {
|
|
1641
1633
|
const perpStates = _perpetuals.map((perp) => ({
|
|
1642
|
-
id: perp.id,
|
|
1634
|
+
id: Number(perp.id),
|
|
1643
1635
|
state: constants_1.PERP_STATE_STR[perp.state],
|
|
1644
1636
|
baseCurrency: (0, utils_1.contractSymbolToSymbol)(perp.S2BaseCCY, _symbolList),
|
|
1645
1637
|
quoteCurrency: (0, utils_1.contractSymbolToSymbol)(perp.S2QuoteCCY, _symbolList),
|
|
@@ -1669,7 +1661,11 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
1669
1661
|
*/
|
|
1670
1662
|
static async _exchangeInfo(_proxyContract, _multicall, _poolStaticInfos, _symbolToPerpStaticInfo, _perpetualIdToSymbol, _nestedPerpetualIDs, _symbolList, _priceFeedGetter, _oracleFactoryAddr, overrides) {
|
|
1671
1663
|
// get the factory address (shared among all pools)
|
|
1672
|
-
let info = {
|
|
1664
|
+
let info = {
|
|
1665
|
+
pools: [],
|
|
1666
|
+
oracleFactoryAddr: _oracleFactoryAddr,
|
|
1667
|
+
proxyAddr: _proxyContract.target.toString(),
|
|
1668
|
+
};
|
|
1673
1669
|
// get all prices from off-chain price-sources: no RPC calls
|
|
1674
1670
|
let idxPriceMap = await MarketData._getAllIndexPrices(_symbolToPerpStaticInfo, _priceFeedGetter);
|
|
1675
1671
|
// query mid-prices from on-chain conditional on the off-chain prices
|
|
@@ -1768,7 +1764,7 @@ class MarketData extends perpetualDataHandler_1.default {
|
|
|
1768
1764
|
this.getPerpIdFromSymbol(s),
|
|
1769
1765
|
]),
|
|
1770
1766
|
}));
|
|
1771
|
-
const encodedResults = await this.multicall.
|
|
1767
|
+
const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls);
|
|
1772
1768
|
const prices = encodedResults.map((result) => this.proxyContract.interface.decodeFunctionResult("getLastPerpetualBaseToUSDConversion", result.returnData)[0]);
|
|
1773
1769
|
prices.forEach((px, i) => {
|
|
1774
1770
|
const s = `${symbols[i].split("-")[0]}-USD`;
|