@d8x/perpetuals-sdk 2.0.13-alpha → 2.1.1-alpha2
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/abi/IPerpetualManager.json +154 -4
- package/dist/cjs/abi/OracleFactory.json +94 -25
- package/dist/cjs/abi/PerpetualManagerProxy.json +212 -2
- package/dist/cjs/accountTrade.d.ts +3 -3
- package/dist/cjs/accountTrade.js +1 -1
- package/dist/cjs/accountTrade.js.map +1 -1
- package/dist/cjs/brokerTool.d.ts +5 -1
- package/dist/cjs/brokerTool.js +20 -7
- package/dist/cjs/brokerTool.js.map +1 -1
- package/dist/cjs/config/defaultConfig.json +0 -12
- package/dist/cjs/config/priceFeedConfig.json +1 -19
- package/dist/cjs/constants.d.ts +0 -1
- package/dist/cjs/constants.js +2 -3
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/contracts/IPerpetualManager.d.ts +93 -13
- package/dist/cjs/contracts/OracleFactory.d.ts +69 -20
- package/dist/cjs/contracts/PerpetualManagerProxy.d.ts +109 -4
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +118 -4
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +154 -4
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/OracleFactory__factory.d.ts +75 -20
- package/dist/cjs/contracts/factories/OracleFactory__factory.js +94 -25
- package/dist/cjs/contracts/factories/OracleFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.d.ts +159 -2
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js +212 -2
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
- package/dist/cjs/d8XMath.d.ts +59 -1
- package/dist/cjs/d8XMath.js +259 -3
- package/dist/cjs/d8XMath.js.map +1 -1
- package/dist/cjs/liquidatorTool.d.ts +1 -0
- package/dist/cjs/liquidatorTool.js +24 -7
- package/dist/cjs/liquidatorTool.js.map +1 -1
- package/dist/cjs/marketData.d.ts +45 -23
- package/dist/cjs/marketData.js +292 -197
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/nodeSDKTypes.d.ts +24 -1
- package/dist/cjs/nodeSDKTypes.js.map +1 -1
- package/dist/cjs/orderExecutorTool.d.ts +3 -3
- package/dist/cjs/orderExecutorTool.js +38 -13
- package/dist/cjs/orderExecutorTool.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.d.ts +28 -17
- package/dist/cjs/perpetualDataHandler.js +71 -45
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/perpetualEventHandler.d.ts +1 -1
- package/dist/cjs/perpetualEventHandler.js +6 -7
- package/dist/cjs/perpetualEventHandler.js.map +1 -1
- package/dist/cjs/polyMktsPxFeed.d.ts +5 -3
- package/dist/cjs/polyMktsPxFeed.js +34 -2
- package/dist/cjs/polyMktsPxFeed.js.map +1 -1
- package/dist/cjs/priceFeeds.d.ts +6 -7
- package/dist/cjs/priceFeeds.js +36 -14
- package/dist/cjs/priceFeeds.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/writeAccessHandler.js +1 -1
- package/dist/cjs/writeAccessHandler.js.map +1 -1
- package/dist/esm/abi/IPerpetualManager.json +154 -4
- package/dist/esm/abi/OracleFactory.json +94 -25
- package/dist/esm/abi/PerpetualManagerProxy.json +212 -2
- package/dist/esm/accountTrade.d.ts +3 -3
- package/dist/esm/accountTrade.js +1 -1
- package/dist/esm/accountTrade.js.map +1 -1
- package/dist/esm/brokerTool.d.ts +5 -1
- package/dist/esm/brokerTool.js +21 -8
- package/dist/esm/brokerTool.js.map +1 -1
- package/dist/esm/config/defaultConfig.json +0 -12
- package/dist/esm/config/priceFeedConfig.json +1 -19
- package/dist/esm/constants.d.ts +0 -1
- package/dist/esm/constants.js +1 -2
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/contracts/IPerpetualManager.d.ts +93 -13
- package/dist/esm/contracts/OracleFactory.d.ts +69 -20
- package/dist/esm/contracts/PerpetualManagerProxy.d.ts +109 -4
- package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +118 -4
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js +154 -4
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/OracleFactory__factory.d.ts +75 -20
- package/dist/esm/contracts/factories/OracleFactory__factory.js +94 -25
- package/dist/esm/contracts/factories/OracleFactory__factory.js.map +1 -1
- package/dist/{cjs/contracts/factories/MockToken__factory.d.ts → esm/contracts/factories/PerpStorage__factory.d.ts} +115 -128
- package/dist/esm/contracts/factories/{MockToken__factory.js → PerpStorage__factory.js} +128 -139
- package/dist/esm/contracts/factories/PerpStorage__factory.js.map +1 -0
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.d.ts +159 -2
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js +212 -2
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
- package/dist/esm/d8XMath.d.ts +59 -1
- package/dist/esm/d8XMath.js +251 -2
- package/dist/esm/d8XMath.js.map +1 -1
- package/dist/esm/liquidatorTool.d.ts +1 -0
- package/dist/esm/liquidatorTool.js +25 -8
- package/dist/esm/liquidatorTool.js.map +1 -1
- package/dist/esm/marketData.d.ts +45 -23
- package/dist/esm/marketData.js +295 -200
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/nodeSDKTypes.d.ts +24 -1
- package/dist/esm/nodeSDKTypes.js.map +1 -1
- package/dist/esm/orderExecutorTool.d.ts +3 -3
- package/dist/esm/orderExecutorTool.js +38 -13
- package/dist/esm/orderExecutorTool.js.map +1 -1
- package/dist/esm/perpetualDataHandler.d.ts +28 -17
- package/dist/esm/perpetualDataHandler.js +74 -48
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/perpetualEventHandler.d.ts +1 -1
- package/dist/esm/perpetualEventHandler.js +6 -7
- package/dist/esm/perpetualEventHandler.js.map +1 -1
- package/dist/esm/polyMktsPxFeed.d.ts +5 -3
- package/dist/esm/polyMktsPxFeed.js +34 -2
- package/dist/esm/polyMktsPxFeed.js.map +1 -1
- package/dist/esm/priceFeeds.d.ts +6 -7
- package/dist/esm/priceFeeds.js +36 -14
- package/dist/esm/priceFeeds.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/writeAccessHandler.js +3 -3
- package/dist/esm/writeAccessHandler.js.map +1 -1
- package/doc/brokerTool.md +3 -1
- package/doc/d8x-perpetuals-sdk.md +804 -132
- package/doc/marketData.md +813 -0
- package/doc/perpetualDataHandler.md +76 -7
- package/package.json +1 -1
- package/src/abi/IPerpetualManager.json +154 -4
- package/src/abi/OracleFactory.json +523 -454
- package/src/abi/PerpetualManagerProxy.json +1596 -1386
- package/src/accountTrade.ts +3 -3
- package/src/brokerTool.ts +22 -8
- package/src/config/defaultConfig.json +0 -13
- package/src/config/priceFeedConfig.json +1 -19
- package/src/constants.ts +1 -2
- package/src/contracts/IPerpetualManager.ts +140 -10
- package/src/contracts/OracleFactory.ts +100 -26
- package/src/contracts/PerpetualManagerProxy.ts +192 -3
- package/src/contracts/factories/IPerpetualManager__factory.ts +154 -4
- package/src/contracts/factories/OracleFactory__factory.ts +94 -25
- package/src/contracts/factories/PerpetualManagerProxy__factory.ts +212 -2
- package/src/d8XMath.ts +327 -2
- package/src/liquidatorTool.ts +29 -14
- package/src/marketData.ts +448 -250
- package/src/nodeSDKTypes.ts +30 -1
- package/src/orderExecutorTool.ts +48 -20
- package/src/perpetualDataHandler.ts +108 -55
- package/src/perpetualEventHandler.ts +6 -7
- package/src/polyMktsPxFeed.ts +40 -4
- package/src/priceFeeds.ts +41 -17
- package/src/version.ts +1 -1
- package/src/writeAccessHandler.ts +2 -2
- package/dist/cjs/abi/BeaconProxy.json +0 -71
- package/dist/cjs/abi/Maintainer.json +0 -774
- package/dist/cjs/abi/MockToken.json +0 -347
- package/dist/cjs/abi/UUPSUpgradeable.json +0 -104
- package/dist/cjs/abi/WeETH.json +0 -310
- package/dist/cjs/abi-zkevm/LimitOrderBook.json +0 -910
- package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +0 -236
- package/dist/cjs/contracts/BeaconProxy.d.ts +0 -63
- package/dist/cjs/contracts/BeaconProxy.js +0 -3
- package/dist/cjs/contracts/BeaconProxy.js.map +0 -1
- package/dist/cjs/contracts/Maintainer.d.ts +0 -799
- package/dist/cjs/contracts/Maintainer.js +0 -3
- package/dist/cjs/contracts/Maintainer.js.map +0 -1
- package/dist/cjs/contracts/MockToken.d.ts +0 -263
- package/dist/cjs/contracts/MockToken.js +0 -3
- package/dist/cjs/contracts/MockToken.js.map +0 -1
- package/dist/cjs/contracts/UUPSUpgradeable.d.ts +0 -118
- package/dist/cjs/contracts/UUPSUpgradeable.js +0 -3
- package/dist/cjs/contracts/UUPSUpgradeable.js.map +0 -1
- package/dist/cjs/contracts/WeETH.d.ts +0 -503
- package/dist/cjs/contracts/WeETH.js +0 -3
- package/dist/cjs/contracts/WeETH.js.map +0 -1
- package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +0 -61
- package/dist/cjs/contracts/factories/BeaconProxy__factory.js +0 -89
- package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +0 -609
- package/dist/cjs/contracts/factories/Maintainer__factory.js +0 -792
- package/dist/cjs/contracts/factories/Maintainer__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/MockToken__factory.js +0 -365
- package/dist/cjs/contracts/factories/MockToken__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +0 -122
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/WeETH__factory.d.ts +0 -545
- package/dist/cjs/contracts/factories/WeETH__factory.js +0 -721
- package/dist/cjs/contracts/factories/WeETH__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5324
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -254
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +0 -928
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +0 -456
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/index.d.ts +0 -4
- package/dist/cjs/contracts/factories/lean0/index.js +0 -15
- package/dist/cjs/contracts/factories/lean0/index.js.map +0 -1
- package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +0 -2821
- package/dist/cjs/contracts/lean0/IPerpetualManager.js +0 -3
- package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +0 -1
- package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +0 -533
- package/dist/cjs/contracts/lean0/LimitOrderBook.js +0 -3
- package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +0 -1
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +0 -3
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
- package/dist/cjs/contracts/lean0/ShareToken.d.ts +0 -320
- package/dist/cjs/contracts/lean0/ShareToken.js +0 -3
- package/dist/cjs/contracts/lean0/ShareToken.js.map +0 -1
- package/dist/cjs/contracts/lean0/index.d.ts +0 -4
- package/dist/cjs/contracts/lean0/index.js +0 -3
- package/dist/cjs/contracts/lean0/index.js.map +0 -1
- package/dist/esm/abi/BeaconProxy.json +0 -71
- package/dist/esm/abi/Maintainer.json +0 -774
- package/dist/esm/abi/MockToken.json +0 -347
- package/dist/esm/abi/UUPSUpgradeable.json +0 -104
- package/dist/esm/abi/WeETH.json +0 -310
- package/dist/esm/abi/lean0/IPerpetualManager.json +0 -5306
- package/dist/esm/abi/lean0/LimitOrderBook.json +0 -910
- package/dist/esm/abi/lean0/LimitOrderBookFactory.json +0 -236
- package/dist/esm/abi/lean0/ShareToken.json +0 -438
- package/dist/esm/abi-zkevm/LimitOrderBook.json +0 -910
- package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +0 -236
- package/dist/esm/contracts/BeaconProxy.d.ts +0 -63
- package/dist/esm/contracts/BeaconProxy.js +0 -2
- package/dist/esm/contracts/BeaconProxy.js.map +0 -1
- package/dist/esm/contracts/Maintainer.d.ts +0 -799
- package/dist/esm/contracts/Maintainer.js +0 -2
- package/dist/esm/contracts/Maintainer.js.map +0 -1
- package/dist/esm/contracts/MockToken.d.ts +0 -263
- package/dist/esm/contracts/MockToken.js +0 -2
- package/dist/esm/contracts/MockToken.js.map +0 -1
- package/dist/esm/contracts/UUPSUpgradeable.d.ts +0 -118
- package/dist/esm/contracts/UUPSUpgradeable.js +0 -2
- package/dist/esm/contracts/UUPSUpgradeable.js.map +0 -1
- package/dist/esm/contracts/WeETH.d.ts +0 -503
- package/dist/esm/contracts/WeETH.js +0 -2
- package/dist/esm/contracts/WeETH.js.map +0 -1
- package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +0 -61
- package/dist/esm/contracts/factories/BeaconProxy__factory.js +0 -85
- package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +0 -1
- package/dist/esm/contracts/factories/Maintainer__factory.d.ts +0 -609
- package/dist/esm/contracts/factories/Maintainer__factory.js +0 -788
- package/dist/esm/contracts/factories/Maintainer__factory.js.map +0 -1
- package/dist/esm/contracts/factories/MockToken__factory.d.ts +0 -273
- package/dist/esm/contracts/factories/MockToken__factory.js.map +0 -1
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +0 -118
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
- package/dist/esm/contracts/factories/WeETH__factory.d.ts +0 -545
- package/dist/esm/contracts/factories/WeETH__factory.js +0 -717
- package/dist/esm/contracts/factories/WeETH__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5320
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -250
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +0 -924
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +0 -452
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/index.d.ts +0 -4
- package/dist/esm/contracts/factories/lean0/index.js +0 -8
- package/dist/esm/contracts/factories/lean0/index.js.map +0 -1
- package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +0 -2821
- package/dist/esm/contracts/lean0/IPerpetualManager.js +0 -2
- package/dist/esm/contracts/lean0/IPerpetualManager.js.map +0 -1
- package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +0 -533
- package/dist/esm/contracts/lean0/LimitOrderBook.js +0 -2
- package/dist/esm/contracts/lean0/LimitOrderBook.js.map +0 -1
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +0 -2
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
- package/dist/esm/contracts/lean0/ShareToken.d.ts +0 -320
- package/dist/esm/contracts/lean0/ShareToken.js +0 -2
- package/dist/esm/contracts/lean0/ShareToken.js.map +0 -1
- package/dist/esm/contracts/lean0/index.d.ts +0 -4
- package/dist/esm/contracts/lean0/index.js +0 -2
- package/dist/esm/contracts/lean0/index.js.map +0 -1
- package/src/abi-zkevm/IPerpetualManager.json +0 -5366
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { BaseContract, Contract, Interface, Network, Overrides, Provider, Signer } from "ethers";
|
|
2
2
|
import { LimitOrderBook, LimitOrderBookFactory, Multicall3 } from "./contracts";
|
|
3
|
+
import { IPerpetualManager } from "./contracts/IPerpetualManager";
|
|
3
4
|
import { IClientOrder, IPerpetualOrder } from "./contracts/LimitOrderBook";
|
|
4
|
-
import { TypeSafeOrder, type ClientOrder, type MarginAccount, type NodeSDKConfig, type Order, type PerpetualState, type PerpetualStaticInfo, type PoolStaticInfo, type PriceFeedSubmission, type SmartContractOrder, type PerpetualData, LiquidityPoolData, SettlementConfig } from "./nodeSDKTypes";
|
|
5
|
+
import { TypeSafeOrder, type ClientOrder, type MarginAccount, type NodeSDKConfig, type Order, type PerpetualState, type PerpetualStaticInfo, type PoolStaticInfo, type PriceFeedSubmission, type SmartContractOrder, type PerpetualData, LiquidityPoolData, SettlementConfig, IdxPriceInfo } from "./nodeSDKTypes";
|
|
5
6
|
import PriceFeeds from "./priceFeeds";
|
|
6
7
|
/**
|
|
7
8
|
* Parent class for MarketData and WriteAccessHandler that handles
|
|
@@ -18,7 +19,7 @@ export default class PerpetualDataHandler {
|
|
|
18
19
|
protected symbolToTokenAddrMap: Map<string, string>;
|
|
19
20
|
chainId: bigint;
|
|
20
21
|
network: Network;
|
|
21
|
-
protected proxyContract:
|
|
22
|
+
protected proxyContract: IPerpetualManager | null;
|
|
22
23
|
protected proxyABI: Interface;
|
|
23
24
|
protected proxyAddr: string;
|
|
24
25
|
protected oraclefactoryAddr: string | undefined;
|
|
@@ -176,7 +177,7 @@ export default class PerpetualDataHandler {
|
|
|
176
177
|
* @param {Map<string, string>} symbolList mapping of symbols to convert long-format <-> blockchain-format
|
|
177
178
|
* @returns array with PerpetualStaticInfo for each perpetual
|
|
178
179
|
*/
|
|
179
|
-
static getPerpetualStaticInfo(_proxyContract:
|
|
180
|
+
static getPerpetualStaticInfo(_proxyContract: IPerpetualManager, nestedPerpetualIDs: Array<Array<number>>, symbolList: Map<string, string>, overrides?: Overrides): Promise<Array<PerpetualStaticInfo>>;
|
|
180
181
|
/**
|
|
181
182
|
* Breaks up an array of nested arrays into chunks of a specified size.
|
|
182
183
|
* @param {number} chunkSize The size of each chunk.
|
|
@@ -192,7 +193,7 @@ export default class PerpetualDataHandler {
|
|
|
192
193
|
* @param overrides optional
|
|
193
194
|
* @returns array of PerpetualData converted into decimals
|
|
194
195
|
*/
|
|
195
|
-
static _getLiquidityPools(fromIdx: number, toIdx: number, _proxyContract:
|
|
196
|
+
static _getLiquidityPools(fromIdx: number, toIdx: number, _proxyContract: IPerpetualManager, _symbolList: Map<string, string>, overrides?: Overrides): Promise<LiquidityPoolData[]>;
|
|
196
197
|
/**
|
|
197
198
|
* Query perpetuals
|
|
198
199
|
* @param ids perpetual ids
|
|
@@ -201,25 +202,25 @@ export default class PerpetualDataHandler {
|
|
|
201
202
|
* @param overrides optional
|
|
202
203
|
* @returns array of PerpetualData converted into decimals
|
|
203
204
|
*/
|
|
204
|
-
static _getPerpetuals(ids: number[], _proxyContract:
|
|
205
|
-
static getPoolStaticInfo(_proxyContract:
|
|
205
|
+
static _getPerpetuals(ids: number[], _proxyContract: IPerpetualManager, _symbolList: Map<string, string>, overrides?: Overrides): Promise<PerpetualData[]>;
|
|
206
|
+
static getPoolStaticInfo(_proxyContract: IPerpetualManager, overrides?: Overrides): Promise<{
|
|
206
207
|
nestedPerpetualIDs: Array<Array<number>>;
|
|
207
208
|
poolShareTokenAddr: Array<string>;
|
|
208
209
|
poolMarginTokenAddr: Array<string>;
|
|
209
210
|
oracleFactory: string;
|
|
210
211
|
}>;
|
|
211
|
-
static buildMarginAccountFromState(symbol: string, traderState: bigint[], symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>,
|
|
212
|
+
static buildMarginAccountFromState(symbol: string, traderState: bigint[], symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, pxInfo: IdxPriceInfo, isPredMkt: boolean): MarginAccount;
|
|
212
213
|
/**
|
|
213
214
|
* Get trader state from the blockchain and parse into a human-readable margin account
|
|
214
215
|
* @param traderAddr Trader address
|
|
215
216
|
* @param symbol Perpetual symbol
|
|
216
217
|
* @param symbolToPerpStaticInfo Symbol to perp static info mapping
|
|
217
218
|
* @param _proxyContract Proxy contract instance
|
|
218
|
-
* @param
|
|
219
|
+
* @param _pxInfo index price info
|
|
219
220
|
* @param overrides Optional overrides for eth_call
|
|
220
221
|
* @returns A Margin account
|
|
221
222
|
*/
|
|
222
|
-
static getMarginAccount(traderAddr: string, symbol: string, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract: Contract,
|
|
223
|
+
static getMarginAccount(traderAddr: string, symbol: string, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract: Contract, _pxInfo: IdxPriceInfo, isPredMkt: boolean, overrides?: Overrides): Promise<MarginAccount>;
|
|
223
224
|
/**
|
|
224
225
|
* All the orders in the order book for a given symbol that are currently open.
|
|
225
226
|
* @param {string} symbol Symbol of the form ETH-USD-MATIC.
|
|
@@ -297,14 +298,24 @@ export default class PerpetualDataHandler {
|
|
|
297
298
|
* @param symbolToPerpStaticInfo Symbol to perp static info mapping
|
|
298
299
|
* @param _multicall Multicall3 contract instance
|
|
299
300
|
* @param _proxyContract Proxy contract instance
|
|
300
|
-
* @param
|
|
301
|
+
* @param _pxInfo List of price info
|
|
301
302
|
* @param overrides Optional eth_call overrides
|
|
302
303
|
* @returns List of margin accounts
|
|
303
304
|
*/
|
|
304
|
-
static getMarginAccounts(traderAddrs: string[], symbols: string[], symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _multicall: Multicall3, _proxyContract: Contract,
|
|
305
|
-
protected static _queryPerpetualPrice(symbol: string, tradeAmount: number, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract:
|
|
306
|
-
|
|
307
|
-
|
|
305
|
+
static getMarginAccounts(traderAddrs: string[], symbols: string[], symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _multicall: Multicall3, _proxyContract: Contract, _pxInfo: IdxPriceInfo[], isPredMkt: boolean[], overrides?: Overrides): Promise<MarginAccount[]>;
|
|
306
|
+
protected static _queryPerpetualPrice(symbol: string, tradeAmount: number, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract: IPerpetualManager, indexPrices: [number, number], conf: bigint, params: bigint, overrides?: Overrides): Promise<number>;
|
|
307
|
+
/**
|
|
308
|
+
*
|
|
309
|
+
* @param symbol perpetual symbol of the form BTC-USDC-USDC
|
|
310
|
+
* @param symbolToPerpStaticInfo mapping
|
|
311
|
+
* @param _proxyContract contract instance
|
|
312
|
+
* @param indexPrices IdxPriceInfo
|
|
313
|
+
* @param isPredMkt true if prediction market perpetual
|
|
314
|
+
* @param overrides
|
|
315
|
+
* @returns mark price
|
|
316
|
+
*/
|
|
317
|
+
protected static _queryPerpetualMarkPrice(symbol: string, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract: IPerpetualManager, indexPrices: IdxPriceInfo, isPredMkt: boolean, overrides?: Overrides): Promise<number>;
|
|
318
|
+
protected static _queryPerpetualState(symbol: string, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, _proxyContract: IPerpetualManager, _multicall: Multicall3, indexPrices: IdxPriceInfo, overrides?: Overrides): Promise<PerpetualState>;
|
|
308
319
|
/**
|
|
309
320
|
* Calculate long and short exposures from open interest and long/short
|
|
310
321
|
* @param oi open interest
|
|
@@ -312,7 +323,7 @@ export default class PerpetualDataHandler {
|
|
|
312
323
|
* @returns long, short exposure
|
|
313
324
|
*/
|
|
314
325
|
protected static _oiAndAmmPosToLongShort(oi: bigint, ammPos: bigint): [bigint, bigint];
|
|
315
|
-
protected static _parseAMMState(symbol: string, ammState: bigint[], longShort: [bigint, bigint], indexPrices:
|
|
326
|
+
protected static _parseAMMState(symbol: string, ammState: bigint[], longShort: [bigint, bigint], indexPrices: IdxPriceInfo, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>): PerpetualState;
|
|
316
327
|
/**
|
|
317
328
|
* Liquidation price
|
|
318
329
|
* @param symbol symbol of the form BTC-USD-MATIC
|
|
@@ -321,7 +332,7 @@ export default class PerpetualDataHandler {
|
|
|
321
332
|
* @param symbolToPerpStaticInfo mapping symbol->PerpStaticInfo
|
|
322
333
|
* @returns liquidation mark-price, corresponding collateral/quote conversion
|
|
323
334
|
*/
|
|
324
|
-
protected static _calculateLiquidationPrice(symbol: string, traderState: bigint[], S2: number, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo
|
|
335
|
+
protected static _calculateLiquidationPrice(symbol: string, traderState: bigint[], S2: number, symbolToPerpStaticInfo: Map<string, PerpetualStaticInfo>, isPredMarket: boolean): [number, number, number, number, number];
|
|
325
336
|
/**
|
|
326
337
|
* Finds the perpetual id for a symbol of the form
|
|
327
338
|
* <base>-<quote>-<collateral>. The function first converts the
|
|
@@ -484,5 +495,5 @@ export default class PerpetualDataHandler {
|
|
|
484
495
|
* @param staticInfo Perpetual static info
|
|
485
496
|
* @returns True if this is a prediction market
|
|
486
497
|
*/
|
|
487
|
-
static
|
|
498
|
+
static isPredictionMarketStatic(staticInfo: PerpetualStaticInfo): boolean;
|
|
488
499
|
}
|
|
@@ -65,7 +65,7 @@ class PerpetualDataHandler {
|
|
|
65
65
|
if (network.chainId !== this.chainId) {
|
|
66
66
|
throw new Error(`Provider: chain id ${network.chainId} does not match config (${this.chainId})`);
|
|
67
67
|
}
|
|
68
|
-
this.proxyContract =
|
|
68
|
+
this.proxyContract = contracts_1.IPerpetualManager__factory.connect(this.proxyAddr, signerOrProvider);
|
|
69
69
|
this.multicall = contracts_1.Multicall3__factory.connect(this.config.multicall ?? constants_1.MULTICALL_ADDRESS, this.signerOrProvider);
|
|
70
70
|
await this._fillSymbolMaps(overrides);
|
|
71
71
|
}
|
|
@@ -651,7 +651,7 @@ class PerpetualDataHandler {
|
|
|
651
651
|
oracleFactory: oracleFactory,
|
|
652
652
|
};
|
|
653
653
|
}
|
|
654
|
-
static buildMarginAccountFromState(symbol, traderState, symbolToPerpStaticInfo,
|
|
654
|
+
static buildMarginAccountFromState(symbol, traderState, symbolToPerpStaticInfo, pxInfo, isPredMkt) {
|
|
655
655
|
const idx_cash = 3;
|
|
656
656
|
const idx_notional = 4;
|
|
657
657
|
const idx_locked_in = 5;
|
|
@@ -662,7 +662,7 @@ class PerpetualDataHandler {
|
|
|
662
662
|
let cash = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_cash]);
|
|
663
663
|
let S2Liq = 0, S3Liq = 0, tau = Infinity, pnl = 0, unpaidFundingCC = 0, fLockedIn = BigInt(0), side = constants_1.CLOSED_SIDE, entryPrice = 0;
|
|
664
664
|
if (!isEmpty) {
|
|
665
|
-
[S2Liq, S3Liq, tau, pnl, unpaidFundingCC] = PerpetualDataHandler._calculateLiquidationPrice(symbol, traderState,
|
|
665
|
+
[S2Liq, S3Liq, tau, pnl, unpaidFundingCC] = PerpetualDataHandler._calculateLiquidationPrice(symbol, traderState, pxInfo.s2, symbolToPerpStaticInfo, isPredMkt);
|
|
666
666
|
fLockedIn = traderState[idx_locked_in];
|
|
667
667
|
side = traderState[idx_notional] > 0n ? constants_1.BUY_SIDE : constants_1.SELL_SIDE;
|
|
668
668
|
entryPrice = Math.abs((0, d8XMath_1.ABK64x64ToFloat)((0, d8XMath_1.div64x64)(fLockedIn, traderState[idx_notional])));
|
|
@@ -689,17 +689,17 @@ class PerpetualDataHandler {
|
|
|
689
689
|
* @param symbol Perpetual symbol
|
|
690
690
|
* @param symbolToPerpStaticInfo Symbol to perp static info mapping
|
|
691
691
|
* @param _proxyContract Proxy contract instance
|
|
692
|
-
* @param
|
|
692
|
+
* @param _pxInfo index price info
|
|
693
693
|
* @param overrides Optional overrides for eth_call
|
|
694
694
|
* @returns A Margin account
|
|
695
695
|
*/
|
|
696
|
-
static async getMarginAccount(traderAddr, symbol, symbolToPerpStaticInfo, _proxyContract,
|
|
696
|
+
static async getMarginAccount(traderAddr, symbol, symbolToPerpStaticInfo, _proxyContract, _pxInfo, isPredMkt, overrides) {
|
|
697
697
|
let perpId = Number(symbol);
|
|
698
698
|
if (isNaN(perpId)) {
|
|
699
699
|
perpId = PerpetualDataHandler.symbolToPerpetualId(symbol, symbolToPerpStaticInfo);
|
|
700
700
|
}
|
|
701
|
-
let traderState = await _proxyContract.getTraderState(perpId, traderAddr,
|
|
702
|
-
return PerpetualDataHandler.buildMarginAccountFromState(symbol, traderState, symbolToPerpStaticInfo,
|
|
701
|
+
let traderState = await _proxyContract.getTraderState(perpId, traderAddr, [_pxInfo.ema, _pxInfo.s3 ?? 0].map((x) => (0, d8XMath_1.floatToABK64x64)(x)), overrides || {});
|
|
702
|
+
return PerpetualDataHandler.buildMarginAccountFromState(symbol, traderState, symbolToPerpStaticInfo, _pxInfo, isPredMkt);
|
|
703
703
|
}
|
|
704
704
|
/**
|
|
705
705
|
* All the orders in the order book for a given symbol that are currently open.
|
|
@@ -853,15 +853,15 @@ class PerpetualDataHandler {
|
|
|
853
853
|
* @param symbolToPerpStaticInfo Symbol to perp static info mapping
|
|
854
854
|
* @param _multicall Multicall3 contract instance
|
|
855
855
|
* @param _proxyContract Proxy contract instance
|
|
856
|
-
* @param
|
|
856
|
+
* @param _pxInfo List of price info
|
|
857
857
|
* @param overrides Optional eth_call overrides
|
|
858
858
|
* @returns List of margin accounts
|
|
859
859
|
*/
|
|
860
|
-
static async getMarginAccounts(traderAddrs, symbols, symbolToPerpStaticInfo, _multicall, _proxyContract,
|
|
860
|
+
static async getMarginAccounts(traderAddrs, symbols, symbolToPerpStaticInfo, _multicall, _proxyContract, _pxInfo, isPredMkt, overrides) {
|
|
861
861
|
if (traderAddrs.length != symbols.length ||
|
|
862
|
-
traderAddrs.length !=
|
|
863
|
-
symbols.length !=
|
|
864
|
-
throw new Error("traderAddr, symbol and
|
|
862
|
+
traderAddrs.length != _pxInfo.length ||
|
|
863
|
+
symbols.length != _pxInfo.length) {
|
|
864
|
+
throw new Error("traderAddr, symbol and _pxInfo should all have the same length");
|
|
865
865
|
}
|
|
866
866
|
const proxyCalls = traderAddrs.map((_addr, i) => ({
|
|
867
867
|
target: _proxyContract.target,
|
|
@@ -869,7 +869,7 @@ class PerpetualDataHandler {
|
|
|
869
869
|
callData: _proxyContract.interface.encodeFunctionData("getTraderState", [
|
|
870
870
|
PerpetualDataHandler.symbolToPerpetualId(symbols[i], symbolToPerpStaticInfo),
|
|
871
871
|
_addr,
|
|
872
|
-
|
|
872
|
+
[_pxInfo[i].ema, _pxInfo[i].s3 ?? 0].map((x) => (0, d8XMath_1.floatToABK64x64)(x)),
|
|
873
873
|
]),
|
|
874
874
|
}));
|
|
875
875
|
const encodedResults = await _multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
@@ -878,33 +878,42 @@ class PerpetualDataHandler {
|
|
|
878
878
|
throw new Error(`Failed to get perp info for ${symbols[i]}`);
|
|
879
879
|
return _proxyContract.interface.decodeFunctionResult("getTraderState", returnData)[0];
|
|
880
880
|
});
|
|
881
|
-
return traderStates.map((traderState, i) => PerpetualDataHandler.buildMarginAccountFromState(symbols[i], traderState, symbolToPerpStaticInfo, [
|
|
882
|
-
_pxS2S3s[i][0],
|
|
883
|
-
_pxS2S3s[i][1],
|
|
884
|
-
]));
|
|
881
|
+
return traderStates.map((traderState, i) => PerpetualDataHandler.buildMarginAccountFromState(symbols[i], traderState, symbolToPerpStaticInfo, _pxInfo[i], isPredMkt[i]));
|
|
885
882
|
}
|
|
886
|
-
static async _queryPerpetualPrice(symbol, tradeAmount, symbolToPerpStaticInfo, _proxyContract, indexPrices, overrides) {
|
|
883
|
+
static async _queryPerpetualPrice(symbol, tradeAmount, symbolToPerpStaticInfo, _proxyContract, indexPrices, conf, params, overrides) {
|
|
887
884
|
let perpId = PerpetualDataHandler.symbolToPerpetualId(symbol, symbolToPerpStaticInfo);
|
|
888
885
|
let fIndexPrices = indexPrices.map((x) => (0, d8XMath_1.floatToABK64x64)(x == undefined || Number.isNaN(x) ? 0 : x));
|
|
889
|
-
let fPrice = await _proxyContract.queryPerpetualPrice(perpId, (0, d8XMath_1.floatToABK64x64)(tradeAmount), fIndexPrices, overrides || {});
|
|
886
|
+
let fPrice = await _proxyContract.queryPerpetualPrice(perpId, (0, d8XMath_1.floatToABK64x64)(tradeAmount), fIndexPrices, conf, params, overrides || {});
|
|
890
887
|
return (0, d8XMath_1.ABK64x64ToFloat)(fPrice);
|
|
891
888
|
}
|
|
892
|
-
|
|
889
|
+
/**
|
|
890
|
+
*
|
|
891
|
+
* @param symbol perpetual symbol of the form BTC-USDC-USDC
|
|
892
|
+
* @param symbolToPerpStaticInfo mapping
|
|
893
|
+
* @param _proxyContract contract instance
|
|
894
|
+
* @param indexPrices IdxPriceInfo
|
|
895
|
+
* @param isPredMkt true if prediction market perpetual
|
|
896
|
+
* @param overrides
|
|
897
|
+
* @returns mark price
|
|
898
|
+
*/
|
|
899
|
+
static async _queryPerpetualMarkPrice(symbol, symbolToPerpStaticInfo, _proxyContract, indexPrices, isPredMkt, overrides) {
|
|
893
900
|
let perpId = PerpetualDataHandler.symbolToPerpetualId(symbol, symbolToPerpStaticInfo);
|
|
894
|
-
let [S2, S3] = indexPrices.map((x) => (0, d8XMath_1.floatToABK64x64)(x == undefined || Number.isNaN(x) ? 0 : x));
|
|
901
|
+
let [S2, S3] = [indexPrices.s2, indexPrices.s3].map((x) => (0, d8XMath_1.floatToABK64x64)(x == undefined || Number.isNaN(x) ? 0 : x));
|
|
895
902
|
let ammState = await _proxyContract.getAMMState(perpId, [S2, S3], overrides || {});
|
|
896
903
|
// ammState[6] == S2 == indexPrices[0] up to rounding errors (indexPrices is most accurate)
|
|
897
|
-
|
|
904
|
+
if (isPredMkt) {
|
|
905
|
+
return indexPrices.ema + (0, d8XMath_1.ABK64x64ToFloat)(ammState[8]);
|
|
906
|
+
}
|
|
907
|
+
return indexPrices.s2 * (1 + (0, d8XMath_1.ABK64x64ToFloat)(ammState[8]));
|
|
898
908
|
}
|
|
899
909
|
static async _queryPerpetualState(symbol, symbolToPerpStaticInfo, _proxyContract, _multicall, indexPrices, overrides) {
|
|
900
910
|
let perpId = PerpetualDataHandler.symbolToPerpetualId(symbol, symbolToPerpStaticInfo);
|
|
901
911
|
let staticInfo = symbolToPerpStaticInfo.get(symbol);
|
|
902
|
-
let [S2, S3] = [indexPrices[0], indexPrices[1]];
|
|
903
912
|
if (staticInfo.collateralCurrencyType == constants_1.CollaterlCCY.BASE) {
|
|
904
|
-
|
|
913
|
+
indexPrices.s3 = indexPrices.s2;
|
|
905
914
|
}
|
|
906
915
|
else if (staticInfo.collateralCurrencyType == constants_1.CollaterlCCY.QUOTE) {
|
|
907
|
-
|
|
916
|
+
indexPrices.s3 = 1;
|
|
908
917
|
}
|
|
909
918
|
// multicall
|
|
910
919
|
const proxyCalls = [
|
|
@@ -913,7 +922,7 @@ class PerpetualDataHandler {
|
|
|
913
922
|
allowFailure: false,
|
|
914
923
|
callData: _proxyContract.interface.encodeFunctionData("getAMMState", [
|
|
915
924
|
perpId,
|
|
916
|
-
[
|
|
925
|
+
[indexPrices.s2, indexPrices.s3 ?? 0].map(d8XMath_1.floatToABK64x64),
|
|
917
926
|
]),
|
|
918
927
|
},
|
|
919
928
|
{
|
|
@@ -951,26 +960,36 @@ class PerpetualDataHandler {
|
|
|
951
960
|
let perpId = PerpetualDataHandler.symbolToPerpetualId(symbol, symbolToPerpStaticInfo);
|
|
952
961
|
let staticInfo = symbolToPerpStaticInfo.get(symbol);
|
|
953
962
|
let ccy = symbol.split("-");
|
|
954
|
-
let [S2, S3] = [indexPrices
|
|
963
|
+
let [S2, S3] = [indexPrices.s2, indexPrices.s3];
|
|
955
964
|
if (staticInfo.collateralCurrencyType == constants_1.CollaterlCCY.BASE) {
|
|
956
965
|
S3 = S2;
|
|
957
966
|
}
|
|
958
967
|
else if (staticInfo.collateralCurrencyType == constants_1.CollaterlCCY.QUOTE) {
|
|
959
968
|
S3 = 1;
|
|
960
969
|
}
|
|
961
|
-
|
|
970
|
+
const isPred = PerpetualDataHandler.isPredictionMarketStatic(staticInfo);
|
|
971
|
+
let markPrice;
|
|
972
|
+
if (isPred) {
|
|
973
|
+
// ema + premium
|
|
974
|
+
markPrice = indexPrices.ema + (0, d8XMath_1.ABK64x64ToFloat)(ammState[8]);
|
|
975
|
+
}
|
|
976
|
+
else {
|
|
977
|
+
// S2 * (1+premium)
|
|
978
|
+
markPrice = indexPrices.s2 * (1 + (0, d8XMath_1.ABK64x64ToFloat)(ammState[8]));
|
|
979
|
+
}
|
|
962
980
|
let state = {
|
|
963
981
|
id: perpId,
|
|
964
982
|
state: constants_1.PERP_STATE_STR[Number(ammState[13])],
|
|
965
983
|
baseCurrency: ccy[0],
|
|
966
984
|
quoteCurrency: ccy[1],
|
|
967
985
|
indexPrice: S2,
|
|
968
|
-
collToQuoteIndexPrice: S3,
|
|
986
|
+
collToQuoteIndexPrice: S3 ?? (ccy[0] === ccy[1] ? S2 : 1),
|
|
987
|
+
markPremium: (0, d8XMath_1.ABK64x64ToFloat)(ammState[8]),
|
|
969
988
|
markPrice: markPrice,
|
|
970
989
|
midPrice: (0, d8XMath_1.ABK64x64ToFloat)(ammState[10]),
|
|
971
990
|
currentFundingRateBps: (0, d8XMath_1.ABK64x64ToFloat)(ammState[14]) * 1e4,
|
|
972
991
|
openInterestBC: (0, d8XMath_1.ABK64x64ToFloat)(ammState[11]),
|
|
973
|
-
isMarketClosed: indexPrices
|
|
992
|
+
isMarketClosed: indexPrices.s2MktClosed || (indexPrices.s3MktClosed !== undefined && indexPrices.s3MktClosed),
|
|
974
993
|
longBC: (0, d8XMath_1.ABK64x64ToFloat)(longShort[0]),
|
|
975
994
|
shortBC: (0, d8XMath_1.ABK64x64ToFloat)(longShort[1]),
|
|
976
995
|
};
|
|
@@ -984,7 +1003,7 @@ class PerpetualDataHandler {
|
|
|
984
1003
|
* @param symbolToPerpStaticInfo mapping symbol->PerpStaticInfo
|
|
985
1004
|
* @returns liquidation mark-price, corresponding collateral/quote conversion
|
|
986
1005
|
*/
|
|
987
|
-
static _calculateLiquidationPrice(symbol, traderState, S2, symbolToPerpStaticInfo) {
|
|
1006
|
+
static _calculateLiquidationPrice(symbol, traderState, S2, symbolToPerpStaticInfo, isPredMarket) {
|
|
988
1007
|
const idx_availableCashCC = 2;
|
|
989
1008
|
const idx_cash = 3;
|
|
990
1009
|
const idx_notional = 4;
|
|
@@ -998,13 +1017,21 @@ class PerpetualDataHandler {
|
|
|
998
1017
|
if (perpInfo == undefined) {
|
|
999
1018
|
throw new Error(`no info for perpetual ${symbol}`);
|
|
1000
1019
|
}
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1020
|
+
const tau = perpInfo.maintenanceMarginRate;
|
|
1021
|
+
const lockedInValueQC = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_locked_in]);
|
|
1022
|
+
const position = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_notional]);
|
|
1023
|
+
const cashCC = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_availableCashCC]);
|
|
1024
|
+
const Sm = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_mark_price]);
|
|
1025
|
+
const unpaidFundingCC = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_availableCashCC] - traderState[idx_cash]);
|
|
1007
1026
|
let unpaidFunding = unpaidFundingCC;
|
|
1027
|
+
if (isPredMarket) {
|
|
1028
|
+
const S2Liq = (0, d8XMath_1.pmFindLiquidationPrice)(position, S3Liq, lockedInValueQC, cashCC, tau, S2);
|
|
1029
|
+
let pnl = position * Sm - lockedInValueQC + unpaidFunding / S3Liq;
|
|
1030
|
+
// liquidation margin rate
|
|
1031
|
+
const tauLiq = (0, d8XMath_1.pmMaintenanceMarginRate)(position, S2Liq, tau);
|
|
1032
|
+
return [S2Liq, S3Liq, tauLiq, pnl, unpaidFundingCC];
|
|
1033
|
+
}
|
|
1034
|
+
// regular perpetuals:
|
|
1008
1035
|
if (perpInfo.collateralCurrencyType == constants_1.CollaterlCCY.BASE) {
|
|
1009
1036
|
S2Liq = (0, d8XMath_1.calculateLiquidationPriceCollateralBase)(lockedInValueQC, position, cashCC, tau);
|
|
1010
1037
|
S3Liq = S2Liq;
|
|
@@ -1092,7 +1119,7 @@ class PerpetualDataHandler {
|
|
|
1092
1119
|
}
|
|
1093
1120
|
// adjust prices for market type
|
|
1094
1121
|
const sInfo = symbolToPerpInfoMap.get(symbol);
|
|
1095
|
-
if (PerpetualDataHandler.
|
|
1122
|
+
if (PerpetualDataHandler.isPredictionMarketStatic(sInfo)) {
|
|
1096
1123
|
limitPrice = limitPrice !== undefined && limitPrice !== 0 ? (0, d8XMath_1.priceToProb)(limitPrice) : limitPrice;
|
|
1097
1124
|
stopPrice = stopPrice !== undefined && stopPrice !== 0 ? (0, d8XMath_1.priceToProb)(stopPrice) : stopPrice;
|
|
1098
1125
|
}
|
|
@@ -1111,9 +1138,9 @@ class PerpetualDataHandler {
|
|
|
1111
1138
|
leverage: Number(order.leverageTDR) / 100,
|
|
1112
1139
|
deadline: Number(order.iDeadline),
|
|
1113
1140
|
executionTimestamp: Number(order.executionTimestamp),
|
|
1114
|
-
submittedTimestamp:
|
|
1115
|
-
parentChildOrderIds:
|
|
1116
|
-
? [order
|
|
1141
|
+
submittedTimestamp: "submittedTimestamp" in order ? Number(order.submittedTimestamp) : undefined,
|
|
1142
|
+
parentChildOrderIds: "parentChildDigest1" && "parentChildDigest2" in order
|
|
1143
|
+
? [order.parentChildDigest1.toString(), order.parentChildDigest2.toString()]
|
|
1117
1144
|
: undefined,
|
|
1118
1145
|
};
|
|
1119
1146
|
return userOrder;
|
|
@@ -1142,7 +1169,7 @@ class PerpetualDataHandler {
|
|
|
1142
1169
|
else {
|
|
1143
1170
|
throw Error(`invalid side in order spec, use ${constants_1.BUY_SIDE} or ${constants_1.SELL_SIDE}`);
|
|
1144
1171
|
}
|
|
1145
|
-
const isPred = PerpetualDataHandler.
|
|
1172
|
+
const isPred = PerpetualDataHandler.isPredictionMarketStatic(perpStaticInfo.get(order.symbol));
|
|
1146
1173
|
let fLimitPrice;
|
|
1147
1174
|
if (order.limitPrice == undefined) {
|
|
1148
1175
|
// we need to set the limit price to infinity or zero for
|
|
@@ -1617,15 +1644,14 @@ class PerpetualDataHandler {
|
|
|
1617
1644
|
if (staticInfo == undefined) {
|
|
1618
1645
|
throw new Error(`Perpetual with symbol ${symbol} not found. Check symbol or use createProxyInstance().`);
|
|
1619
1646
|
}
|
|
1620
|
-
return PerpetualDataHandler.
|
|
1647
|
+
return PerpetualDataHandler.isPredictionMarketStatic(staticInfo);
|
|
1621
1648
|
}
|
|
1622
1649
|
/**
|
|
1623
1650
|
* Determines whether a given perpetual represents a prediction market
|
|
1624
1651
|
* @param staticInfo Perpetual static info
|
|
1625
1652
|
* @returns True if this is a prediction market
|
|
1626
1653
|
*/
|
|
1627
|
-
static
|
|
1628
|
-
// return true; // for testing
|
|
1654
|
+
static isPredictionMarketStatic(staticInfo) {
|
|
1629
1655
|
return (0, utils_1.containsFlag)(staticInfo.perpFlags, constants_1.MASK_PREDICTION_MARKET);
|
|
1630
1656
|
}
|
|
1631
1657
|
}
|