@d8x/perpetuals-sdk 1.3.7 → 2.0.1-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/config/priceFeedConfig.json +16 -2
- package/dist/cjs/config/symbolList.json +2 -1
- package/dist/cjs/constants.d.ts +12 -12
- package/dist/cjs/constants.js +14 -14
- 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 +28 -16
- package/dist/cjs/d8XMath.js +70 -50
- 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 +52 -62
- package/dist/cjs/orderExecutorTool.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.d.ts +44 -35
- package/dist/cjs/perpetualDataHandler.js +194 -170
- 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/polyMktsPxFeed.d.ts +14 -0
- package/dist/cjs/polyMktsPxFeed.js +59 -0
- package/dist/cjs/polyMktsPxFeed.js.map +1 -0
- package/dist/cjs/priceFeeds.d.ts +2 -0
- package/dist/cjs/priceFeeds.js +44 -9
- 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 +40 -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/config/priceFeedConfig.json +16 -2
- package/dist/esm/config/symbolList.json +2 -1
- package/dist/esm/constants.d.ts +12 -12
- package/dist/esm/constants.js +13 -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 +28 -16
- package/dist/esm/d8XMath.js +67 -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 +38 -48
- package/dist/esm/orderExecutorTool.js.map +1 -1
- package/dist/esm/perpetualDataHandler.d.ts +44 -35
- package/dist/esm/perpetualDataHandler.js +137 -113
- 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/polyMktsPxFeed.d.ts +14 -0
- package/dist/esm/polyMktsPxFeed.js +56 -0
- package/dist/esm/polyMktsPxFeed.js.map +1 -0
- package/dist/esm/priceFeeds.d.ts +2 -0
- package/dist/esm/priceFeeds.js +44 -9
- 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 +42 -25
- 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/config/priceFeedConfig.json +16 -2
- package/src/config/symbolList.json +2 -1
- package/src/constants.ts +13 -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 +78 -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 +100 -108
- package/src/perpetualDataHandler.ts +209 -172
- package/src/perpetualEventHandler.ts +16 -17
- package/src/polyMktsPxFeed.ts +71 -0
- package/src/priceFeeds.ts +46 -10
- package/src/referralCodeSigner.ts +6 -10
- package/src/traderDigests.ts +8 -5
- package/src/traderInterface.ts +61 -33
- package/src/utils.ts +3 -4
- package/src/version.ts +1 -1
- package/src/writeAccessHandler.ts +26 -17
package/src/marketData.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import { Interface } from "
|
|
2
|
-
import { BigNumber } from "@ethersproject/bignumber";
|
|
3
|
-
import { CallOverrides, Contract } from "@ethersproject/contracts";
|
|
4
|
-
import { Provider, StaticJsonRpcProvider } from "@ethersproject/providers";
|
|
5
|
-
import { formatUnits } from "@ethersproject/units";
|
|
1
|
+
import { Contract, formatUnits, Interface, JsonRpcProvider, Overrides, Provider } from "ethers";
|
|
6
2
|
import {
|
|
7
3
|
BUY_SIDE,
|
|
8
4
|
CLOSED_SIDE,
|
|
@@ -89,7 +85,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
89
85
|
* about perpetual currencies
|
|
90
86
|
* @param provider optional provider to perform blockchain calls
|
|
91
87
|
*/
|
|
92
|
-
public async createProxyInstance(provider?: Provider, overrides?:
|
|
88
|
+
public async createProxyInstance(provider?: Provider, overrides?: Overrides): Promise<void>;
|
|
93
89
|
|
|
94
90
|
/**
|
|
95
91
|
* Initialize the marketData-Class with this function
|
|
@@ -105,17 +101,14 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
105
101
|
* about perpetual currencies
|
|
106
102
|
* @param providerOrMarketData optional provider or existing market data instance
|
|
107
103
|
*/
|
|
108
|
-
public async createProxyInstance(
|
|
109
|
-
providerOrMarketData
|
|
110
|
-
|
|
111
|
-
): Promise<void> {
|
|
112
|
-
if (providerOrMarketData == undefined || Provider.isProvider(providerOrMarketData)) {
|
|
113
|
-
this.provider = providerOrMarketData ?? new StaticJsonRpcProvider(this.nodeURL);
|
|
104
|
+
public async createProxyInstance(providerOrMarketData?: Provider | MarketData, overrides?: Overrides): Promise<void> {
|
|
105
|
+
if (providerOrMarketData == undefined || !("createProxyInstance" in providerOrMarketData)) {
|
|
106
|
+
this.provider = providerOrMarketData ?? new JsonRpcProvider(this.nodeURL);
|
|
114
107
|
await this.initContractsAndData(this.provider, overrides);
|
|
115
108
|
} else {
|
|
116
109
|
const mktData = providerOrMarketData;
|
|
117
110
|
this.nodeURL = mktData.config.nodeURL;
|
|
118
|
-
this.provider = new
|
|
111
|
+
this.provider = new JsonRpcProvider(mktData.config.nodeURL, mktData.network, { staticNetwork: true });
|
|
119
112
|
this.proxyContract = new Contract(mktData.getProxyAddress(), this.config.proxyABI!, this.provider);
|
|
120
113
|
this.multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, this.provider);
|
|
121
114
|
({
|
|
@@ -138,7 +131,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
138
131
|
if (this.proxyContract == null) {
|
|
139
132
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
140
133
|
}
|
|
141
|
-
return this.proxyContract.
|
|
134
|
+
return this.proxyContract.target.toString();
|
|
142
135
|
}
|
|
143
136
|
|
|
144
137
|
/**
|
|
@@ -208,7 +201,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
208
201
|
*
|
|
209
202
|
* @returns {ExchangeInfo} Array of static data for all the pools and perpetuals in the system.
|
|
210
203
|
*/
|
|
211
|
-
public async exchangeInfo(overrides?:
|
|
204
|
+
public async exchangeInfo(overrides?: Overrides & { rpcURL?: string }): Promise<ExchangeInfo> {
|
|
212
205
|
if (this.proxyContract == null || this.multicall == null) {
|
|
213
206
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
214
207
|
}
|
|
@@ -216,7 +209,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
216
209
|
if (overrides) {
|
|
217
210
|
({ rpcURL, ...overrides } = overrides);
|
|
218
211
|
}
|
|
219
|
-
const provider = new
|
|
212
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
220
213
|
return await MarketData._exchangeInfo(
|
|
221
214
|
new Contract(this.proxyAddr, this.config.proxyABI!, provider),
|
|
222
215
|
Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider),
|
|
@@ -227,7 +220,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
227
220
|
this.symbolList,
|
|
228
221
|
this.priceFeedGetter,
|
|
229
222
|
this.oraclefactoryAddr!, // not undefined if proxy contract was initialized
|
|
230
|
-
overrides as
|
|
223
|
+
overrides as Overrides
|
|
231
224
|
);
|
|
232
225
|
}
|
|
233
226
|
|
|
@@ -257,7 +250,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
257
250
|
public async openOrders(
|
|
258
251
|
traderAddr: string,
|
|
259
252
|
symbol?: string,
|
|
260
|
-
overrides?:
|
|
253
|
+
overrides?: Overrides & { rpcURL?: string }
|
|
261
254
|
): Promise<{ orders: Order[]; orderIds: string[] }[]> {
|
|
262
255
|
// open orders requested only for given symbol
|
|
263
256
|
let resArray: Array<{ orders: Order[]; orderIds: string[] }> = [];
|
|
@@ -274,7 +267,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
274
267
|
if (overrides) {
|
|
275
268
|
({ rpcURL, ...overrides } = overrides);
|
|
276
269
|
}
|
|
277
|
-
const provider = new
|
|
270
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
278
271
|
if (symbols.length < 1) {
|
|
279
272
|
throw new Error(`No perpetuals found for symbol ${symbol}`);
|
|
280
273
|
} else if (symbols.length < 2) {
|
|
@@ -297,10 +290,10 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
297
290
|
traderAddr: string,
|
|
298
291
|
symbol: string,
|
|
299
292
|
provider: Provider,
|
|
300
|
-
overrides?:
|
|
293
|
+
overrides?: Overrides
|
|
301
294
|
): Promise<{ orders: Order[]; orderIds: string[] }> {
|
|
302
295
|
// open orders requested only for given symbol
|
|
303
|
-
const orderBookContract =
|
|
296
|
+
const orderBookContract = this.getOrderBookContract(symbol, provider);
|
|
304
297
|
const orders = await MarketData.openOrdersOnOrderBook(
|
|
305
298
|
traderAddr,
|
|
306
299
|
orderBookContract,
|
|
@@ -322,14 +315,12 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
322
315
|
traderAddr: string,
|
|
323
316
|
symbols: string[],
|
|
324
317
|
provider: Provider,
|
|
325
|
-
overrides?:
|
|
318
|
+
overrides?: Overrides
|
|
326
319
|
): Promise<{ orders: Order[]; orderIds: string[] }[]> {
|
|
327
320
|
// filter by perpetuals with valid order book
|
|
328
321
|
symbols = symbols.filter((symbol) => this.symbolToPerpStaticInfo.get(symbol)?.limitOrderBookAddr !== ZERO_ADDRESS);
|
|
329
322
|
// open orders requested only for given symbol
|
|
330
|
-
const orderBookContracts = symbols.map((symbol) =>
|
|
331
|
-
LimitOrderBook__factory.connect(this.getOrderBookContract(symbol).address, provider)
|
|
332
|
-
);
|
|
323
|
+
const orderBookContracts = symbols.map((symbol) => this.getOrderBookContract(symbol, provider), this);
|
|
333
324
|
const multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider);
|
|
334
325
|
const { orders, digests } = await MarketData._openOrdersOnOrderBooks(
|
|
335
326
|
traderAddr,
|
|
@@ -368,7 +359,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
368
359
|
public async positionRisk(
|
|
369
360
|
traderAddr: string,
|
|
370
361
|
symbol?: string,
|
|
371
|
-
overrides?:
|
|
362
|
+
overrides?: Overrides & { rpcURL?: string }
|
|
372
363
|
): Promise<MarginAccount[]> {
|
|
373
364
|
if (this.proxyContract == null) {
|
|
374
365
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
@@ -387,7 +378,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
387
378
|
if (overrides) {
|
|
388
379
|
({ rpcURL, ...overrides } = overrides);
|
|
389
380
|
}
|
|
390
|
-
const provider = new
|
|
381
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
391
382
|
|
|
392
383
|
if (symbols.length < 1) {
|
|
393
384
|
throw new Error(`No perpetuals found for symbol ${symbol}`);
|
|
@@ -411,7 +402,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
411
402
|
traderAddr: string,
|
|
412
403
|
symbol: string,
|
|
413
404
|
provider: Provider,
|
|
414
|
-
overrides?:
|
|
405
|
+
overrides?: Overrides
|
|
415
406
|
): Promise<MarginAccount> {
|
|
416
407
|
let obj = await this.priceFeedGetter.fetchPricesForPerpetual(symbol);
|
|
417
408
|
let mgnAcct = await PerpetualDataHandler.getMarginAccount(
|
|
@@ -436,7 +427,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
436
427
|
traderAddr: string,
|
|
437
428
|
symbols: string[],
|
|
438
429
|
provider: Provider,
|
|
439
|
-
overrides?:
|
|
430
|
+
overrides?: Overrides
|
|
440
431
|
): Promise<MarginAccount[]> {
|
|
441
432
|
const MAX_SYMBOLS_PER_CALL = 10;
|
|
442
433
|
const S2S3 = new Array<[number, number]>();
|
|
@@ -498,7 +489,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
498
489
|
order: Order,
|
|
499
490
|
account?: MarginAccount,
|
|
500
491
|
indexPriceInfo?: [number, number, boolean, boolean],
|
|
501
|
-
overrides?:
|
|
492
|
+
overrides?: Overrides & { tradingFeeTbps?: number }
|
|
502
493
|
): Promise<{ newPositionRisk: MarginAccount; orderCost: number; maxLongTrade: number; maxShortTrade: number }> {
|
|
503
494
|
if (this.proxyContract == null || this.multicall == null) {
|
|
504
495
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
@@ -524,23 +515,23 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
524
515
|
// create all calls
|
|
525
516
|
const poolId = PerpetualDataHandler._getPoolIdFromSymbol(order.symbol, this.poolStaticInfos);
|
|
526
517
|
const perpId = PerpetualDataHandler.symbolToPerpetualId(order.symbol, this.symbolToPerpStaticInfo);
|
|
527
|
-
const fS2S3 = [indexPriceInfo[0], indexPriceInfo[1]].map((x) => floatToABK64x64(x)) as [
|
|
518
|
+
const fS2S3 = [indexPriceInfo[0], indexPriceInfo[1]].map((x) => floatToABK64x64(x)) as [bigint, bigint];
|
|
528
519
|
const proxyCalls: Multicall3.Call3Struct[] = [
|
|
529
520
|
// 0: traderState
|
|
530
521
|
{
|
|
531
|
-
target: this.proxyContract.
|
|
522
|
+
target: this.proxyContract.target,
|
|
532
523
|
allowFailure: true,
|
|
533
524
|
callData: this.proxyContract.interface.encodeFunctionData("getTraderState", [perpId, traderAddr, fS2S3]),
|
|
534
525
|
},
|
|
535
526
|
// 1: ammState
|
|
536
527
|
{
|
|
537
|
-
target: this.proxyContract.
|
|
528
|
+
target: this.proxyContract.target,
|
|
538
529
|
allowFailure: true,
|
|
539
530
|
callData: this.proxyContract.interface.encodeFunctionData("getAMMState", [perpId, fS2S3]),
|
|
540
531
|
},
|
|
541
532
|
// 2: exchangeFee
|
|
542
533
|
{
|
|
543
|
-
target: this.proxyContract.
|
|
534
|
+
target: this.proxyContract.target,
|
|
544
535
|
allowFailure: false,
|
|
545
536
|
callData: this.proxyContract.interface.encodeFunctionData("queryExchangeFee", [
|
|
546
537
|
poolId,
|
|
@@ -550,7 +541,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
550
541
|
},
|
|
551
542
|
// 3: perpetual price
|
|
552
543
|
{
|
|
553
|
-
target: this.proxyContract.
|
|
544
|
+
target: this.proxyContract.target,
|
|
554
545
|
allowFailure: true,
|
|
555
546
|
callData: this.proxyContract.interface.encodeFunctionData("queryPerpetualPrice", [
|
|
556
547
|
perpId,
|
|
@@ -560,36 +551,32 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
560
551
|
},
|
|
561
552
|
// 4: max long pos
|
|
562
553
|
{
|
|
563
|
-
target: this.proxyContract.
|
|
554
|
+
target: this.proxyContract.target,
|
|
564
555
|
allowFailure: false,
|
|
565
556
|
callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
|
|
566
557
|
perpId,
|
|
567
|
-
account
|
|
568
|
-
? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1))
|
|
569
|
-
: BigNumber.from(0),
|
|
558
|
+
account ? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1)) : 0n,
|
|
570
559
|
true,
|
|
571
560
|
]),
|
|
572
561
|
},
|
|
573
562
|
// 5: max short pos
|
|
574
563
|
{
|
|
575
|
-
target: this.proxyContract.
|
|
564
|
+
target: this.proxyContract.target,
|
|
576
565
|
allowFailure: false,
|
|
577
566
|
callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
|
|
578
567
|
perpId,
|
|
579
|
-
account
|
|
580
|
-
? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1))
|
|
581
|
-
: BigNumber.from(0),
|
|
568
|
+
account ? floatToABK64x64(account.positionNotionalBaseCCY * (account.side === BUY_SIDE ? 1 : -1)) : 0n,
|
|
582
569
|
false,
|
|
583
570
|
]),
|
|
584
571
|
},
|
|
585
572
|
];
|
|
586
573
|
|
|
587
574
|
// multicall
|
|
588
|
-
const encodedResults = await this.multicall.
|
|
575
|
+
const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls, (overrides || {}) as Overrides);
|
|
589
576
|
|
|
590
577
|
// positionRisk to apply this trade on: if not given, defaults to the current trader's position
|
|
591
578
|
if (!account) {
|
|
592
|
-
let traderState:
|
|
579
|
+
let traderState: bigint[];
|
|
593
580
|
if (encodedResults[0].success) {
|
|
594
581
|
traderState = this.proxyContract.interface.decodeFunctionResult(
|
|
595
582
|
"getTraderState",
|
|
@@ -605,7 +592,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
605
592
|
}
|
|
606
593
|
|
|
607
594
|
// perpetualState, for prices
|
|
608
|
-
let ammState:
|
|
595
|
+
let ammState: bigint[];
|
|
609
596
|
if (encodedResults[1].success) {
|
|
610
597
|
ammState = this.proxyContract.interface.decodeFunctionResult("getAMMState", encodedResults[1].returnData)[0];
|
|
611
598
|
} else {
|
|
@@ -623,12 +610,12 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
623
610
|
const exchangeFeeTbps = this.proxyContract.interface.decodeFunctionResult(
|
|
624
611
|
"queryExchangeFee",
|
|
625
612
|
encodedResults[2].returnData
|
|
626
|
-
)[0] as
|
|
613
|
+
)[0] as bigint;
|
|
627
614
|
|
|
628
615
|
// amm price for this trade amount
|
|
629
616
|
let ammPrice: number;
|
|
630
617
|
{
|
|
631
|
-
let fPrice:
|
|
618
|
+
let fPrice: bigint;
|
|
632
619
|
if (encodedResults[3].success) {
|
|
633
620
|
fPrice = this.proxyContract.interface.decodeFunctionResult(
|
|
634
621
|
"queryPerpetualPrice",
|
|
@@ -676,7 +663,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
676
663
|
const fMaxLong = this.proxyContract.interface.decodeFunctionResult(
|
|
677
664
|
"getMaxSignedOpenTradeSizeForPos",
|
|
678
665
|
encodedResults[4].returnData
|
|
679
|
-
)[0] as
|
|
666
|
+
)[0] as bigint;
|
|
680
667
|
const maxLongTrade =
|
|
681
668
|
account.side == BUY_SIDE
|
|
682
669
|
? Math.max(0, ABK64x64ToFloat(fMaxLong) - (accountGiven ? 0 : account.positionNotionalBaseCCY))
|
|
@@ -685,11 +672,14 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
685
672
|
const fMaxShort = this.proxyContract.interface.decodeFunctionResult(
|
|
686
673
|
"getMaxSignedOpenTradeSizeForPos",
|
|
687
674
|
encodedResults[5].returnData
|
|
688
|
-
)[0] as
|
|
675
|
+
)[0] as bigint;
|
|
689
676
|
const maxShortTrade =
|
|
690
677
|
account.side == SELL_SIDE
|
|
691
|
-
? Math.max(
|
|
692
|
-
|
|
678
|
+
? Math.max(
|
|
679
|
+
0,
|
|
680
|
+
Math.abs(ABK64x64ToFloat(fMaxShort)) - (accountGiven ? 0 : Math.abs(account.positionNotionalBaseCCY))
|
|
681
|
+
)
|
|
682
|
+
: Math.abs(ABK64x64ToFloat(fMaxShort)) + Math.abs(account.positionNotionalBaseCCY);
|
|
693
683
|
|
|
694
684
|
// Current state:
|
|
695
685
|
let lotSizeBC = MarketData._getLotSize(order.symbol, this.symbolToPerpStaticInfo);
|
|
@@ -716,7 +706,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
716
706
|
|
|
717
707
|
if (tradingFeeTbps === undefined) {
|
|
718
708
|
// use usual input if not overriden
|
|
719
|
-
tradingFeeTbps = exchangeFeeTbps + (order.brokerFeeTbps ?? 0);
|
|
709
|
+
tradingFeeTbps = Number(exchangeFeeTbps) + (order.brokerFeeTbps ?? 0);
|
|
720
710
|
}
|
|
721
711
|
let tradingFeeCC = (Math.abs(tradeAmountBC) * tradingFeeTbps * 1e-5 * S2) / S3;
|
|
722
712
|
let referralFeeCC = this.symbolToPerpStaticInfo.get(account.symbol)!.referralRebate;
|
|
@@ -829,7 +819,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
829
819
|
deltaCollateral: number,
|
|
830
820
|
account: MarginAccount,
|
|
831
821
|
indexPriceInfo?: [number, number, boolean, boolean],
|
|
832
|
-
overrides?:
|
|
822
|
+
overrides?: Overrides
|
|
833
823
|
): Promise<MarginAccount> {
|
|
834
824
|
if (this.proxyContract == null) {
|
|
835
825
|
throw new Error("no proxy contract initialized. Use createProxyInstance().");
|
|
@@ -980,7 +970,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
980
970
|
* }
|
|
981
971
|
* main();
|
|
982
972
|
*/
|
|
983
|
-
public async getWalletBalance(address: string, symbol: string, overrides?:
|
|
973
|
+
public async getWalletBalance(address: string, symbol: string, overrides?: Overrides): Promise<number> {
|
|
984
974
|
let poolIdx = this.getPoolStaticInfoIndexFromSymbol(symbol);
|
|
985
975
|
let settleTokenAddr = this.poolStaticInfos[poolIdx].poolSettleTokenAddr;
|
|
986
976
|
let token = ERC20__factory.connect(settleTokenAddr, this.provider!);
|
|
@@ -1011,7 +1001,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1011
1001
|
public async getPoolShareTokenBalance(
|
|
1012
1002
|
address: string,
|
|
1013
1003
|
symbolOrId: string | number,
|
|
1014
|
-
overrides?:
|
|
1004
|
+
overrides?: Overrides
|
|
1015
1005
|
): Promise<number> {
|
|
1016
1006
|
let poolId = this._poolSymbolOrIdToPoolId(symbolOrId);
|
|
1017
1007
|
return this._getPoolShareTokenBalanceFromId(address, poolId, overrides);
|
|
@@ -1027,7 +1017,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1027
1017
|
private async _getPoolShareTokenBalanceFromId(
|
|
1028
1018
|
address: string,
|
|
1029
1019
|
poolId: number,
|
|
1030
|
-
overrides?:
|
|
1020
|
+
overrides?: Overrides
|
|
1031
1021
|
): Promise<number> {
|
|
1032
1022
|
let shareTokenAddr = this.poolStaticInfos[poolId - 1].shareTokenAddr;
|
|
1033
1023
|
let shareToken = ERC20__factory.connect(shareTokenAddr, this.provider!);
|
|
@@ -1053,7 +1043,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1053
1043
|
* }
|
|
1054
1044
|
* main();
|
|
1055
1045
|
*/
|
|
1056
|
-
public async getShareTokenPrice(symbolOrId: string | number, overrides?:
|
|
1046
|
+
public async getShareTokenPrice(symbolOrId: string | number, overrides?: Overrides): Promise<number> {
|
|
1057
1047
|
let poolId = this._poolSymbolOrIdToPoolId(symbolOrId);
|
|
1058
1048
|
const priceDec18 = await this.proxyContract!.getShareTokenPriceD18(poolId, overrides || {});
|
|
1059
1049
|
const price = dec18ToFloat(priceDec18);
|
|
@@ -1083,7 +1073,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1083
1073
|
public async getParticipationValue(
|
|
1084
1074
|
address: string,
|
|
1085
1075
|
symbolOrId: string | number,
|
|
1086
|
-
overrides?:
|
|
1076
|
+
overrides?: Overrides
|
|
1087
1077
|
): Promise<{ value: number; shareTokenBalance: number; poolShareToken: string }> {
|
|
1088
1078
|
let poolId = this._poolSymbolOrIdToPoolId(symbolOrId);
|
|
1089
1079
|
const shareTokens = await this._getPoolShareTokenBalanceFromId(address, poolId, overrides);
|
|
@@ -1141,7 +1131,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1141
1131
|
public async maxOrderSizeForTrader(
|
|
1142
1132
|
traderAddr: string,
|
|
1143
1133
|
symbol: string,
|
|
1144
|
-
overrides?:
|
|
1134
|
+
overrides?: Overrides
|
|
1145
1135
|
): Promise<{ buy: number; sell: number }> {
|
|
1146
1136
|
if (!this.proxyContract || !this.multicall) {
|
|
1147
1137
|
throw new Error("proxy contract not initialized");
|
|
@@ -1155,12 +1145,12 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1155
1145
|
const indexPriceInfo: [number, number, boolean, boolean] = await this.priceFeedGetter
|
|
1156
1146
|
.fetchPricesForPerpetual(symbol)
|
|
1157
1147
|
.then((obj) => [obj.idxPrices[0], obj.idxPrices[1], obj.mktClosed[0], obj.mktClosed[1]]);
|
|
1158
|
-
const fS2S3 = [indexPriceInfo[0], indexPriceInfo[1]].map((x) => floatToABK64x64(x)) as [
|
|
1148
|
+
const fS2S3 = [indexPriceInfo[0], indexPriceInfo[1]].map((x) => floatToABK64x64(x)) as [bigint, bigint];
|
|
1159
1149
|
let coll2SettlePromise = this.fetchCollateralToSettlementConversion(symbol);
|
|
1160
1150
|
const proxyCalls: Multicall3.Call3Struct[] = [
|
|
1161
1151
|
// 0: traderState
|
|
1162
1152
|
{
|
|
1163
|
-
target: this.proxyContract.
|
|
1153
|
+
target: this.proxyContract.target,
|
|
1164
1154
|
allowFailure: false,
|
|
1165
1155
|
callData: this.proxyContract.interface.encodeFunctionData("getTraderState", [perpId, traderAddr, fS2S3]),
|
|
1166
1156
|
},
|
|
@@ -1173,7 +1163,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1173
1163
|
},
|
|
1174
1164
|
// 2: exchange fee
|
|
1175
1165
|
{
|
|
1176
|
-
target: this.proxyContract.
|
|
1166
|
+
target: this.proxyContract.target,
|
|
1177
1167
|
allowFailure: false,
|
|
1178
1168
|
callData: this.proxyContract.interface.encodeFunctionData("queryExchangeFee", [
|
|
1179
1169
|
poolId,
|
|
@@ -1184,7 +1174,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1184
1174
|
];
|
|
1185
1175
|
|
|
1186
1176
|
// multicall
|
|
1187
|
-
const encodedResults = await this.multicall.
|
|
1177
|
+
const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
1188
1178
|
|
|
1189
1179
|
// position risk
|
|
1190
1180
|
const idxNotional = 4;
|
|
@@ -1198,23 +1188,23 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1198
1188
|
]);
|
|
1199
1189
|
|
|
1200
1190
|
// fee rate
|
|
1201
|
-
const
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1191
|
+
const feeRateTbps = this.proxyContract.interface.decodeFunctionResult(
|
|
1192
|
+
"queryExchangeFee",
|
|
1193
|
+
encodedResults[2].returnData
|
|
1194
|
+
)[0] as bigint;
|
|
1195
|
+
|
|
1196
|
+
const feeRate = 1e-5 * Number(feeRateTbps);
|
|
1207
1197
|
|
|
1208
1198
|
// Max based on margin requirements:
|
|
1209
1199
|
const walletBalance = decNToFloat(
|
|
1210
1200
|
IERC20.decodeFunctionResult("balanceOf", encodedResults[1].returnData)[0],
|
|
1211
|
-
poolInfo.poolSettleTokenDecimals
|
|
1201
|
+
poolInfo.poolSettleTokenDecimals
|
|
1212
1202
|
);
|
|
1213
1203
|
|
|
1214
1204
|
const proxyCalls2: Multicall3.Call3Struct[] = [
|
|
1215
1205
|
// 0: max long
|
|
1216
1206
|
{
|
|
1217
|
-
target: this.proxyContract.
|
|
1207
|
+
target: this.proxyContract.target,
|
|
1218
1208
|
allowFailure: false,
|
|
1219
1209
|
callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
|
|
1220
1210
|
perpId,
|
|
@@ -1224,7 +1214,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1224
1214
|
},
|
|
1225
1215
|
// 1: max short
|
|
1226
1216
|
{
|
|
1227
|
-
target: this.proxyContract.
|
|
1217
|
+
target: this.proxyContract.target,
|
|
1228
1218
|
allowFailure: false,
|
|
1229
1219
|
callData: this.proxyContract.interface.encodeFunctionData("getMaxSignedOpenTradeSizeForPos", [
|
|
1230
1220
|
perpId,
|
|
@@ -1235,7 +1225,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1235
1225
|
];
|
|
1236
1226
|
|
|
1237
1227
|
// multicall
|
|
1238
|
-
const encodedResults2 = await this.multicall.
|
|
1228
|
+
const encodedResults2 = await this.multicall.aggregate3.staticCall(proxyCalls2, overrides || {});
|
|
1239
1229
|
|
|
1240
1230
|
// Max based on perp:
|
|
1241
1231
|
// max buy
|
|
@@ -1243,7 +1233,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1243
1233
|
this.proxyContract.interface.decodeFunctionResult(
|
|
1244
1234
|
"getMaxSignedOpenTradeSizeForPos",
|
|
1245
1235
|
encodedResults2[0].returnData
|
|
1246
|
-
)[0] as
|
|
1236
|
+
)[0] as bigint
|
|
1247
1237
|
);
|
|
1248
1238
|
const maxLongPosPerp = maxLongOrderPerp + ABK64x64ToFloat(traderState[idxNotional]);
|
|
1249
1239
|
// max short
|
|
@@ -1251,7 +1241,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1251
1241
|
this.proxyContract.interface.decodeFunctionResult(
|
|
1252
1242
|
"getMaxSignedOpenTradeSizeForPos",
|
|
1253
1243
|
encodedResults2[1].returnData
|
|
1254
|
-
)[0] as
|
|
1244
|
+
)[0] as bigint
|
|
1255
1245
|
);
|
|
1256
1246
|
const maxShortPosPerp = maxShortOrderPerp + ABK64x64ToFloat(traderState[idxNotional]);
|
|
1257
1247
|
|
|
@@ -1321,15 +1311,10 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1321
1311
|
* }
|
|
1322
1312
|
* main();
|
|
1323
1313
|
*/
|
|
1324
|
-
public async maxSignedPosition(side: string, symbol: string, overrides?:
|
|
1314
|
+
public async maxSignedPosition(side: string, symbol: string, overrides?: Overrides): Promise<number> {
|
|
1325
1315
|
let perpId = this.getPerpIdFromSymbol(symbol);
|
|
1326
1316
|
let isBuy = side == BUY_SIDE;
|
|
1327
|
-
let maxSignedPos = await this.proxyContract!.getMaxSignedOpenTradeSizeForPos(
|
|
1328
|
-
perpId,
|
|
1329
|
-
BigNumber.from(0),
|
|
1330
|
-
isBuy,
|
|
1331
|
-
overrides || {}
|
|
1332
|
-
);
|
|
1317
|
+
let maxSignedPos = await this.proxyContract!.getMaxSignedOpenTradeSizeForPos(perpId, 0n, isBuy, overrides || {});
|
|
1333
1318
|
return ABK64x64ToFloat(maxSignedPos);
|
|
1334
1319
|
}
|
|
1335
1320
|
|
|
@@ -1353,7 +1338,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1353
1338
|
*
|
|
1354
1339
|
* @returns {number} Price of index in given currency.
|
|
1355
1340
|
*/
|
|
1356
|
-
public async getOraclePrice(base: string, quote: string, overrides?:
|
|
1341
|
+
public async getOraclePrice(base: string, quote: string, overrides?: Overrides): Promise<number | undefined> {
|
|
1357
1342
|
if (!this.proxyContract) {
|
|
1358
1343
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
1359
1344
|
}
|
|
@@ -1382,12 +1367,12 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1382
1367
|
* main();
|
|
1383
1368
|
*
|
|
1384
1369
|
*/
|
|
1385
|
-
public async getOrderStatus(symbol: string, orderId: string, overrides?:
|
|
1370
|
+
public async getOrderStatus(symbol: string, orderId: string, overrides?: Overrides): Promise<OrderStatus> {
|
|
1386
1371
|
if (!this.proxyContract) {
|
|
1387
1372
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
1388
1373
|
}
|
|
1389
1374
|
const orderBookContract = this.getOrderBookContract(symbol);
|
|
1390
|
-
const status = (await orderBookContract.getOrderStatus(orderId, overrides || {})) as OrderStatus;
|
|
1375
|
+
const status = Number(await orderBookContract.getOrderStatus(orderId, overrides || {})) as OrderStatus;
|
|
1391
1376
|
return status;
|
|
1392
1377
|
}
|
|
1393
1378
|
|
|
@@ -1411,19 +1396,19 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1411
1396
|
* main();
|
|
1412
1397
|
*
|
|
1413
1398
|
*/
|
|
1414
|
-
public async getOrdersStatus(symbol: string, orderId: string[], overrides?:
|
|
1399
|
+
public async getOrdersStatus(symbol: string, orderId: string[], overrides?: Overrides): Promise<OrderStatus[]> {
|
|
1415
1400
|
if (!this.proxyContract || !this.multicall) {
|
|
1416
1401
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
1417
1402
|
}
|
|
1418
1403
|
const orderBookContract = this.getOrderBookContract(symbol);
|
|
1419
1404
|
|
|
1420
1405
|
const statusCalls: Multicall3.Call3Struct[] = orderId.map((id) => ({
|
|
1421
|
-
target: orderBookContract.
|
|
1406
|
+
target: orderBookContract.target,
|
|
1422
1407
|
allowFailure: false,
|
|
1423
1408
|
callData: orderBookContract.interface.encodeFunctionData("getOrderStatus", [id]),
|
|
1424
1409
|
}));
|
|
1425
1410
|
// multicall
|
|
1426
|
-
const encodedResults = await this.multicall.
|
|
1411
|
+
const encodedResults = await this.multicall.aggregate3.staticCall(statusCalls, overrides || {});
|
|
1427
1412
|
// order status
|
|
1428
1413
|
return encodedResults.map(
|
|
1429
1414
|
(encodedResult) =>
|
|
@@ -1490,7 +1475,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1490
1475
|
symbol: string,
|
|
1491
1476
|
quantity: number,
|
|
1492
1477
|
indexPrices?: [number, number],
|
|
1493
|
-
overrides?:
|
|
1478
|
+
overrides?: Overrides
|
|
1494
1479
|
): Promise<number> {
|
|
1495
1480
|
if (this.proxyContract == null) {
|
|
1496
1481
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
@@ -1518,7 +1503,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1518
1503
|
public async getPerpetualState(
|
|
1519
1504
|
symbol: string,
|
|
1520
1505
|
indexPriceInfo?: [number, number, boolean, boolean],
|
|
1521
|
-
overrides?:
|
|
1506
|
+
overrides?: Overrides
|
|
1522
1507
|
): Promise<PerpetualState> {
|
|
1523
1508
|
if (this.proxyContract == null) {
|
|
1524
1509
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
@@ -1542,7 +1527,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1542
1527
|
* @param {string} poolSymbol symbol of the form USDC
|
|
1543
1528
|
* @returns {PoolState} PoolState copy
|
|
1544
1529
|
*/
|
|
1545
|
-
public async getPoolState(poolSymbol: string, overrides?:
|
|
1530
|
+
public async getPoolState(poolSymbol: string, overrides?: Overrides): Promise<PoolState> {
|
|
1546
1531
|
if (this.proxyContract == null) {
|
|
1547
1532
|
throw new Error("no proxy contract initialized. Use createProxyInstance().");
|
|
1548
1533
|
}
|
|
@@ -1632,7 +1617,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1632
1617
|
traderAddr: string,
|
|
1633
1618
|
orderBookContract: LimitOrderBook,
|
|
1634
1619
|
symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>,
|
|
1635
|
-
overrides?:
|
|
1620
|
+
overrides?: Overrides
|
|
1636
1621
|
): Promise<Order[]> {
|
|
1637
1622
|
//eliminate empty orders and map to user friendly orders
|
|
1638
1623
|
let userFriendlyOrders: Order[] = new Array<Order>();
|
|
@@ -1669,7 +1654,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1669
1654
|
orderBookContracts: LimitOrderBook[],
|
|
1670
1655
|
multicall: Multicall3,
|
|
1671
1656
|
symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>,
|
|
1672
|
-
overrides?:
|
|
1657
|
+
overrides?: Overrides
|
|
1673
1658
|
): Promise<{ orders: Order[][]; digests: string[][] }> {
|
|
1674
1659
|
// eliminate empty orders and map to user friendly orders
|
|
1675
1660
|
const numOBs = orderBookContracts.length;
|
|
@@ -1686,28 +1671,28 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1686
1671
|
const contracts = orderBookContracts.filter((_c, i) => haveMoreOrders[i]);
|
|
1687
1672
|
// prepare calls
|
|
1688
1673
|
const ordersCalls: Multicall3.Call3Struct[] = contracts.map((c, i) => ({
|
|
1689
|
-
target: c.
|
|
1674
|
+
target: c.target,
|
|
1690
1675
|
allowFailure: true,
|
|
1691
1676
|
callData: c.interface.encodeFunctionData("getOrders", [traderAddr, from[i], bulkSize]),
|
|
1692
1677
|
}));
|
|
1693
1678
|
const digestsCalls: Multicall3.Call3Struct[] = contracts.map((c, i) => ({
|
|
1694
|
-
target: c.
|
|
1679
|
+
target: c.target,
|
|
1695
1680
|
allowFailure: true,
|
|
1696
1681
|
callData: c.interface.encodeFunctionData("limitDigestsOfTrader", [traderAddr, from[i], bulkSize]),
|
|
1697
1682
|
}));
|
|
1698
1683
|
// call
|
|
1699
|
-
const encodedResults = await multicall.
|
|
1684
|
+
const encodedResults = await multicall.aggregate3.staticCall(ordersCalls.concat(digestsCalls), overrides || {});
|
|
1700
1685
|
const encodedOrders = encodedResults.slice(0, ordersCalls.length);
|
|
1701
1686
|
const encodedDigests = encodedResults.slice(ordersCalls.length);
|
|
1702
1687
|
// parse
|
|
1703
1688
|
const allOrders: IClientOrder.ClientOrderStructOutput[][] = encodedOrders
|
|
1704
1689
|
.slice(0, ordersCalls.length)
|
|
1705
1690
|
.map(({ success, returnData }, i) => {
|
|
1706
|
-
if (!success) throw new Error(`Failed to get orders for order book ${contracts[i].
|
|
1691
|
+
if (!success) throw new Error(`Failed to get orders for order book ${contracts[i].target}`);
|
|
1707
1692
|
return contracts[i].interface.decodeFunctionResult("getOrders", returnData)[0];
|
|
1708
1693
|
});
|
|
1709
1694
|
const allDigests: string[][] = encodedDigests.map(({ success, returnData }, i) => {
|
|
1710
|
-
if (!success) throw new Error(`Failed to get orders for order book ${contracts[i].
|
|
1695
|
+
if (!success) throw new Error(`Failed to get orders for order book ${contracts[i].target}`);
|
|
1711
1696
|
return contracts[i].interface.decodeFunctionResult("limitDigestsOfTrader", returnData)[0];
|
|
1712
1697
|
});
|
|
1713
1698
|
// arrange
|
|
@@ -1715,7 +1700,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1715
1700
|
let orders = allOrders[j].filter((o) => o.traderAddr != ZERO_ADDRESS);
|
|
1716
1701
|
let digests = allDigests[j].filter((d) => d != ZERO_ORDER_ID);
|
|
1717
1702
|
|
|
1718
|
-
let i = orderBookContracts.findIndex((c) => c.
|
|
1703
|
+
let i = orderBookContracts.findIndex((c) => c.target == contracts[j].target);
|
|
1719
1704
|
let k = 0;
|
|
1720
1705
|
while (k < orders.length && orders[k].traderAddr != ZERO_ADDRESS) {
|
|
1721
1706
|
userFriendlyOrders[i].push(PerpetualDataHandler.fromClientOrder(orders[k], symbolToPerpStaticInfo));
|
|
@@ -1739,12 +1724,12 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1739
1724
|
public static async orderIdsOfTrader(
|
|
1740
1725
|
traderAddr: string,
|
|
1741
1726
|
orderBookContract: LimitOrderBook,
|
|
1742
|
-
overrides?:
|
|
1727
|
+
overrides?: Overrides
|
|
1743
1728
|
): Promise<string[]> {
|
|
1744
1729
|
let digestsRaw: string[] = await orderBookContract.limitDigestsOfTrader(traderAddr, 0, 15, overrides || {});
|
|
1745
1730
|
let k: number = 0;
|
|
1746
1731
|
let digests: string[] = [];
|
|
1747
|
-
while (k < digestsRaw.length &&
|
|
1732
|
+
while (k < digestsRaw.length && BigInt(digestsRaw[k]) > 0n) {
|
|
1748
1733
|
digests.push(digestsRaw[k]);
|
|
1749
1734
|
k++;
|
|
1750
1735
|
}
|
|
@@ -1776,7 +1761,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1776
1761
|
traderAddr: string,
|
|
1777
1762
|
symbol: string,
|
|
1778
1763
|
indexPrices?: [number, number],
|
|
1779
|
-
overrides?:
|
|
1764
|
+
overrides?: Overrides
|
|
1780
1765
|
): Promise<number> {
|
|
1781
1766
|
if (!this.proxyContract) {
|
|
1782
1767
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
@@ -1791,7 +1776,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1791
1776
|
let traderState = await this.proxyContract.getTraderState(
|
|
1792
1777
|
perpID,
|
|
1793
1778
|
traderAddr,
|
|
1794
|
-
indexPrices.map((x) => floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)) as [
|
|
1779
|
+
indexPrices.map((x) => floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)) as [bigint, bigint],
|
|
1795
1780
|
overrides || {}
|
|
1796
1781
|
);
|
|
1797
1782
|
const idx_availableMargin = 1;
|
|
@@ -1817,12 +1802,12 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1817
1802
|
* }
|
|
1818
1803
|
* main();
|
|
1819
1804
|
*/
|
|
1820
|
-
public async getTraderLoyalityScore(traderAddr: string, overrides?:
|
|
1805
|
+
public async getTraderLoyalityScore(traderAddr: string, overrides?: Overrides): Promise<number> {
|
|
1821
1806
|
if (this.proxyContract == null) {
|
|
1822
1807
|
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
1823
1808
|
}
|
|
1824
1809
|
// loop over all pools and query volumes
|
|
1825
|
-
let traderProm: Array<Promise<
|
|
1810
|
+
let traderProm: Array<Promise<bigint>> = [];
|
|
1826
1811
|
for (let k = 0; k < this.poolStaticInfos.length; k++) {
|
|
1827
1812
|
let trdrVol = this.proxyContract.getCurrentTraderVolume(
|
|
1828
1813
|
this.poolStaticInfos[k].poolId,
|
|
@@ -1940,7 +1925,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1940
1925
|
_symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>,
|
|
1941
1926
|
_perpetualIdToSymbol: Map<number, string>,
|
|
1942
1927
|
_idxPriceMap: Map<string, [number, boolean]>,
|
|
1943
|
-
overrides?:
|
|
1928
|
+
overrides?: Overrides
|
|
1944
1929
|
): Promise<Map<string, number>> {
|
|
1945
1930
|
// what is the maximal number of queries at once?
|
|
1946
1931
|
const chunkSize = 10;
|
|
@@ -1952,14 +1937,14 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1952
1937
|
const proxyCalls: Multicall3.Call3Struct[] = [];
|
|
1953
1938
|
let midPriceMap = new Map<string, number>();
|
|
1954
1939
|
for (let k = 0; k < perpetualIDChunks.length; k++) {
|
|
1955
|
-
let indexPrices:
|
|
1940
|
+
let indexPrices: bigint[] = [];
|
|
1956
1941
|
// collect/order all index prices
|
|
1957
1942
|
for (let j = 0; j < perpetualIDChunks[k].length; j++) {
|
|
1958
1943
|
let id = perpetualIDChunks[k][j];
|
|
1959
1944
|
let symbol3s = _perpetualIdToSymbol.get(id);
|
|
1960
1945
|
let info = _symbolToPerpStaticInfo.get(symbol3s!);
|
|
1961
1946
|
let S2 = floatToABK64x64(_idxPriceMap.get(info!.S2Symbol)![0]);
|
|
1962
|
-
let S3 =
|
|
1947
|
+
let S3 = 0n;
|
|
1963
1948
|
if (info!.S3Symbol != "") {
|
|
1964
1949
|
S3 = floatToABK64x64(_idxPriceMap.get(info!.S3Symbol)![0]);
|
|
1965
1950
|
}
|
|
@@ -1967,19 +1952,19 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
1967
1952
|
indexPrices.push(S3);
|
|
1968
1953
|
}
|
|
1969
1954
|
proxyCalls.push({
|
|
1970
|
-
target: _proxyContract.
|
|
1955
|
+
target: _proxyContract.target,
|
|
1971
1956
|
allowFailure: false,
|
|
1972
1957
|
callData: _proxyContract.interface.encodeFunctionData("queryMidPrices", [perpetualIDChunks[k], indexPrices]),
|
|
1973
1958
|
});
|
|
1974
1959
|
}
|
|
1975
1960
|
// multicall
|
|
1976
|
-
const encodedResults = await _multicall.
|
|
1961
|
+
const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
1977
1962
|
// apply results
|
|
1978
1963
|
for (let k = 0; k < perpetualIDChunks.length; k++) {
|
|
1979
1964
|
let fMidPrice = _proxyContract.interface.decodeFunctionResult(
|
|
1980
1965
|
"queryMidPrices",
|
|
1981
1966
|
encodedResults[k].returnData
|
|
1982
|
-
)[0] as
|
|
1967
|
+
)[0] as bigint[];
|
|
1983
1968
|
for (let j = 0; j < fMidPrice.length; j++) {
|
|
1984
1969
|
let id = perpetualIDChunks[k][j];
|
|
1985
1970
|
let symbol3s = _perpetualIdToSymbol.get(id);
|
|
@@ -2004,7 +1989,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
2004
1989
|
_poolStaticInfos: PoolStaticInfo[],
|
|
2005
1990
|
_symbolList: Map<string, string>,
|
|
2006
1991
|
_nestedPerpetualIDs: Array<Array<number>>,
|
|
2007
|
-
overrides?:
|
|
1992
|
+
overrides?: Overrides
|
|
2008
1993
|
): Promise<{ pools: Array<PoolState>; perpetuals: Array<PerpetualState> }> {
|
|
2009
1994
|
const chunkSize = 5;
|
|
2010
1995
|
const numPools = _nestedPerpetualIDs.length;
|
|
@@ -2015,13 +2000,13 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
2015
2000
|
const proxyCalls: Multicall3.Call3Struct[] = [
|
|
2016
2001
|
// getLiquidityPools
|
|
2017
2002
|
{
|
|
2018
|
-
target: _proxyContract.
|
|
2003
|
+
target: _proxyContract.target,
|
|
2019
2004
|
allowFailure: false,
|
|
2020
2005
|
callData: _proxyContract.interface.encodeFunctionData("getLiquidityPools", [iFrom, iFrom + chunkSize - 1]), // from-to includes "to"
|
|
2021
2006
|
},
|
|
2022
2007
|
// getPerpetuals
|
|
2023
2008
|
{
|
|
2024
|
-
target: _proxyContract.
|
|
2009
|
+
target: _proxyContract.target,
|
|
2025
2010
|
allowFailure: false,
|
|
2026
2011
|
callData: _proxyContract.interface.encodeFunctionData("getPerpetuals", [
|
|
2027
2012
|
_nestedPerpetualIDs.slice(iFrom - 1, iFrom + chunkSize - 1).flat(), // from-to does not include "to"
|
|
@@ -2029,7 +2014,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
2029
2014
|
},
|
|
2030
2015
|
];
|
|
2031
2016
|
// multicall
|
|
2032
|
-
const encodedResults = await _multicall.
|
|
2017
|
+
const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
2033
2018
|
const pools = _proxyContract.interface.decodeFunctionResult(
|
|
2034
2019
|
"getLiquidityPools",
|
|
2035
2020
|
encodedResults[0].returnData
|
|
@@ -2086,7 +2071,7 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
2086
2071
|
_symbolList: Map<string, string>
|
|
2087
2072
|
): PerpetualState[] {
|
|
2088
2073
|
const perpStates = _perpetuals.map((perp) => ({
|
|
2089
|
-
id: perp.id
|
|
2074
|
+
id: Number(perp.id!),
|
|
2090
2075
|
state: PERP_STATE_STR[perp.state!],
|
|
2091
2076
|
baseCurrency: contractSymbolToSymbol(perp.S2BaseCCY!, _symbolList)!,
|
|
2092
2077
|
quoteCurrency: contractSymbolToSymbol(perp.S2QuoteCCY!, _symbolList)!,
|
|
@@ -2125,10 +2110,14 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
2125
2110
|
_symbolList: Map<string, string>,
|
|
2126
2111
|
_priceFeedGetter: PriceFeeds,
|
|
2127
2112
|
_oracleFactoryAddr: string,
|
|
2128
|
-
overrides?:
|
|
2113
|
+
overrides?: Overrides
|
|
2129
2114
|
): Promise<ExchangeInfo> {
|
|
2130
2115
|
// get the factory address (shared among all pools)
|
|
2131
|
-
let info: ExchangeInfo = {
|
|
2116
|
+
let info: ExchangeInfo = {
|
|
2117
|
+
pools: [],
|
|
2118
|
+
oracleFactoryAddr: _oracleFactoryAddr,
|
|
2119
|
+
proxyAddr: _proxyContract.target.toString(),
|
|
2120
|
+
};
|
|
2132
2121
|
|
|
2133
2122
|
// get all prices from off-chain price-sources: no RPC calls
|
|
2134
2123
|
let idxPriceMap = await MarketData._getAllIndexPrices(_symbolToPerpStaticInfo, _priceFeedGetter);
|
|
@@ -2244,13 +2233,13 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
2244
2233
|
this.getPerpIdFromSymbol(s),
|
|
2245
2234
|
]),
|
|
2246
2235
|
}));
|
|
2247
|
-
const encodedResults = await this.multicall
|
|
2236
|
+
const encodedResults = await this.multicall.aggregate3.staticCall(proxyCalls);
|
|
2248
2237
|
const prices = encodedResults.map(
|
|
2249
2238
|
(result) =>
|
|
2250
2239
|
this.proxyContract!.interface.decodeFunctionResult(
|
|
2251
2240
|
"getLastPerpetualBaseToUSDConversion",
|
|
2252
2241
|
result.returnData
|
|
2253
|
-
)[0] as
|
|
2242
|
+
)[0] as bigint
|
|
2254
2243
|
);
|
|
2255
2244
|
|
|
2256
2245
|
prices.forEach((px, i) => {
|