@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/d8XMath.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BigNumberish } from "ethers";
|
|
2
2
|
import { DECIMALS, ONE_64x64 } from "./constants";
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -12,7 +12,7 @@ import { DECIMALS, ONE_64x64 } from "./constants";
|
|
|
12
12
|
* @param {BigNumber|number} x number in ABDK-format/2^35
|
|
13
13
|
* @returns {number} x/2^64 in number-format (float)
|
|
14
14
|
*/
|
|
15
|
-
export function ABDK29ToFloat(x:
|
|
15
|
+
export function ABDK29ToFloat(x: bigint | number): number {
|
|
16
16
|
return Number(x) / 2 ** 29;
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -22,22 +22,21 @@ export function ABDK29ToFloat(x: BigNumber | number): number {
|
|
|
22
22
|
* @param {BigNumberish|number} x number in ABDK-format or 2^29
|
|
23
23
|
* @returns {number} x/2^64 in number-format (float)
|
|
24
24
|
*/
|
|
25
|
-
export function ABK64x64ToFloat(x:
|
|
25
|
+
export function ABK64x64ToFloat(x: bigint | number): number {
|
|
26
26
|
if (typeof x == "number") {
|
|
27
27
|
return x / 2 ** 29;
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
let
|
|
33
|
-
let
|
|
34
|
-
|
|
35
|
-
xDec = xDec.mul(dec18).div(ONE_64x64);
|
|
29
|
+
let s = x < 0n ? -1n : 1n;
|
|
30
|
+
x = x * s;
|
|
31
|
+
let xInt = x / ONE_64x64;
|
|
32
|
+
let dec18 = 10n ** 18n; // BigNumber.from(10).pow(BigNumber.from(18));
|
|
33
|
+
let xDec = x - xInt * ONE_64x64;
|
|
34
|
+
xDec = (xDec * dec18) / ONE_64x64;
|
|
36
35
|
let k = 18 - xDec.toString().length;
|
|
37
36
|
// console.assert(k >= 0);
|
|
38
37
|
let sPad = "0".repeat(k);
|
|
39
38
|
let NumberStr = xInt.toString() + "." + sPad + xDec.toString();
|
|
40
|
-
return parseFloat(NumberStr) * s;
|
|
39
|
+
return parseFloat(NumberStr) * Number(s);
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
/**
|
|
@@ -45,18 +44,19 @@ export function ABK64x64ToFloat(x: BigNumberish | number): number {
|
|
|
45
44
|
* @param {BigNumberish} x BigNumber in Dec-N format
|
|
46
45
|
* @returns {number} x as a float (number)
|
|
47
46
|
*/
|
|
48
|
-
export function decNToFloat(x: BigNumberish, numDec:
|
|
47
|
+
export function decNToFloat(x: BigNumberish, numDec: BigNumberish): number {
|
|
49
48
|
//x: BigNumber in DecN format to float
|
|
50
|
-
const DECIMALS = BigNumber.from(10).pow(BigNumber.from(numDec));
|
|
51
|
-
x =
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
let
|
|
56
|
-
let
|
|
49
|
+
const DECIMALS = 10n ** BigInt(numDec); // BigNumber.from(10).pow(BigNumber.from(numDec));
|
|
50
|
+
x = BigInt(x);
|
|
51
|
+
numDec = BigInt(numDec);
|
|
52
|
+
let s = x < 0n ? -1n : 1n;
|
|
53
|
+
x = x * s;
|
|
54
|
+
let xInt = x / DECIMALS;
|
|
55
|
+
let xDec = x - xInt * DECIMALS;
|
|
56
|
+
let k = Number(numDec) - xDec.toString().length;
|
|
57
57
|
let sPad = "0".repeat(k);
|
|
58
58
|
let NumberStr = xInt.toString() + "." + sPad + xDec.toString();
|
|
59
|
-
return parseFloat(NumberStr) * s;
|
|
59
|
+
return parseFloat(NumberStr) * Number(s);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
/**
|
|
@@ -66,38 +66,38 @@ export function decNToFloat(x: BigNumberish, numDec: number) {
|
|
|
66
66
|
*/
|
|
67
67
|
export function dec18ToFloat(x: BigNumberish): number {
|
|
68
68
|
//x: BigNumber in Dec18 format to float
|
|
69
|
-
x =
|
|
70
|
-
let s = x
|
|
71
|
-
x = x
|
|
72
|
-
let xInt = x
|
|
73
|
-
let xDec = x
|
|
69
|
+
x = BigInt(x);
|
|
70
|
+
let s = x < 0n ? -1n : 1n;
|
|
71
|
+
x = x * s;
|
|
72
|
+
let xInt = x / DECIMALS;
|
|
73
|
+
let xDec = x - xInt * DECIMALS;
|
|
74
74
|
let k = 18 - xDec.toString().length;
|
|
75
75
|
let sPad = "0".repeat(k);
|
|
76
76
|
let NumberStr = xInt.toString() + "." + sPad + xDec.toString();
|
|
77
|
-
return parseFloat(NumberStr) * s;
|
|
77
|
+
return parseFloat(NumberStr) * Number(s);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
/**
|
|
81
81
|
* Converts x into ABDK64x64 format
|
|
82
82
|
* @param {number} x number (float)
|
|
83
|
-
* @returns {
|
|
83
|
+
* @returns {bigint} x^64 in big number format
|
|
84
84
|
*/
|
|
85
|
-
export function floatToABK64x64(x: number):
|
|
85
|
+
export function floatToABK64x64(x: number): bigint {
|
|
86
86
|
// convert float to ABK64x64 bigint-format
|
|
87
87
|
// Create string from number with 18 decimals
|
|
88
88
|
if (x === 0) {
|
|
89
|
-
return
|
|
89
|
+
return 0n;
|
|
90
90
|
}
|
|
91
91
|
let sg = Math.sign(x);
|
|
92
92
|
x = Math.abs(x);
|
|
93
93
|
let strX = Number(x).toFixed(18);
|
|
94
94
|
const arrX = strX.split(".");
|
|
95
|
-
let xInt =
|
|
96
|
-
let xDec =
|
|
97
|
-
let xIntBig = xInt
|
|
98
|
-
let dec18 = BigNumber.from(10).pow(BigNumber.from(18));
|
|
99
|
-
let xDecBig = xDec
|
|
100
|
-
return xIntBig
|
|
95
|
+
let xInt = BigInt(arrX[0]);
|
|
96
|
+
let xDec = BigInt(arrX[1]);
|
|
97
|
+
let xIntBig = xInt * ONE_64x64;
|
|
98
|
+
let dec18 = 10n ** 18n; //BigNumber.from(10).pow(BigNumber.from(18));
|
|
99
|
+
let xDecBig = (xDec * ONE_64x64) / dec18;
|
|
100
|
+
return (xIntBig + xDecBig) * BigInt(sg);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
/**
|
|
@@ -105,19 +105,19 @@ export function floatToABK64x64(x: number): BigNumber {
|
|
|
105
105
|
* @param {number} x number (float)
|
|
106
106
|
* @returns {BigNumber} x as a BigNumber in Dec18 format
|
|
107
107
|
*/
|
|
108
|
-
export function floatToDec18(x: number):
|
|
108
|
+
export function floatToDec18(x: number): bigint {
|
|
109
109
|
// float number to dec 18
|
|
110
110
|
if (x === 0) {
|
|
111
|
-
return
|
|
111
|
+
return 0n;
|
|
112
112
|
}
|
|
113
113
|
let sg = Math.sign(x);
|
|
114
114
|
x = Math.abs(x);
|
|
115
115
|
let strX = x.toFixed(18);
|
|
116
116
|
const arrX = strX.split(".");
|
|
117
|
-
let xInt =
|
|
118
|
-
let xDec =
|
|
119
|
-
let xIntBig = xInt
|
|
120
|
-
return xIntBig
|
|
117
|
+
let xInt = BigInt(arrX[0]);
|
|
118
|
+
let xDec = BigInt(arrX[1]);
|
|
119
|
+
let xIntBig = xInt * DECIMALS;
|
|
120
|
+
return (xIntBig + xDec) * BigInt(sg);
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
/**
|
|
@@ -126,19 +126,19 @@ export function floatToDec18(x: number): BigNumber {
|
|
|
126
126
|
* @param {number} decimals number of decimals
|
|
127
127
|
* @returns {BigNumber} x as a BigNumber in Dec18 format
|
|
128
128
|
*/
|
|
129
|
-
export function floatToDecN(x: number, decimals: number):
|
|
129
|
+
export function floatToDecN(x: number, decimals: number): bigint {
|
|
130
130
|
// float number to dec 18
|
|
131
131
|
if (x === 0) {
|
|
132
|
-
return
|
|
132
|
+
return 0n;
|
|
133
133
|
}
|
|
134
134
|
let sg = Math.sign(x);
|
|
135
135
|
x = Math.abs(x);
|
|
136
136
|
let strX = x.toFixed(decimals);
|
|
137
137
|
const arrX = strX.split(".");
|
|
138
|
-
let xInt =
|
|
139
|
-
let xDec =
|
|
140
|
-
let xIntBig = xInt
|
|
141
|
-
return xIntBig
|
|
138
|
+
let xInt = BigInt(arrX[0]);
|
|
139
|
+
let xDec = BigInt(arrX[1]);
|
|
140
|
+
let xIntBig = xInt * 10n ** BigInt(decimals);
|
|
141
|
+
return (xIntBig + xDec) * BigInt(sg);
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
/**
|
|
@@ -189,22 +189,22 @@ export function roundToLotString(x: number, lot: number, precision: number = 7):
|
|
|
189
189
|
|
|
190
190
|
/**
|
|
191
191
|
*
|
|
192
|
-
* @param {
|
|
193
|
-
* @param {
|
|
194
|
-
* @returns {
|
|
192
|
+
* @param {bigint} x
|
|
193
|
+
* @param {bigint} y
|
|
194
|
+
* @returns {bigint} x * y
|
|
195
195
|
*/
|
|
196
|
-
export function mul64x64(x:
|
|
197
|
-
return x
|
|
196
|
+
export function mul64x64(x: bigint, y: bigint): bigint {
|
|
197
|
+
return (x * y) / ONE_64x64;
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
/**
|
|
201
201
|
*
|
|
202
|
-
* @param {
|
|
203
|
-
* @param {
|
|
204
|
-
* @returns {
|
|
202
|
+
* @param {bigint} x
|
|
203
|
+
* @param {bigint} y
|
|
204
|
+
* @returns {bigint} x / y
|
|
205
205
|
*/
|
|
206
|
-
export function div64x64(x:
|
|
207
|
-
return x
|
|
206
|
+
export function div64x64(x: bigint, y: bigint): bigint {
|
|
207
|
+
return (x * ONE_64x64) / y;
|
|
208
208
|
}
|
|
209
209
|
|
|
210
210
|
/**
|
|
@@ -401,3 +401,24 @@ export function getDepositAmountForLvgTrade(
|
|
|
401
401
|
let b = (Math.abs(pos0 + tradeAmnt) * S2Mark) / S3 / targetLvg;
|
|
402
402
|
return -(b0 + pnl - b);
|
|
403
403
|
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Convert a perpetual price to probability (predtictive markets)
|
|
407
|
+
* @param px Perpetual price
|
|
408
|
+
* @returns Probability in [0,1]
|
|
409
|
+
*/
|
|
410
|
+
export function priceToProb(px: number) {
|
|
411
|
+
if (px <= 0) {
|
|
412
|
+
throw new Error(`Price must be positive: ${px}`);
|
|
413
|
+
}
|
|
414
|
+
return Math.log(px);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* Convert a probability to a predictive market price
|
|
419
|
+
* @param prob Probability in [0,1]
|
|
420
|
+
* @returns Perpetual price
|
|
421
|
+
*/
|
|
422
|
+
export function probToPrice(prob: number) {
|
|
423
|
+
return Math.exp(prob);
|
|
424
|
+
}
|
package/src/liquidatorTool.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { Signer } from "
|
|
2
|
-
import {
|
|
3
|
-
import type { CallOverrides, ContractTransaction, PayableOverrides } from "@ethersproject/contracts";
|
|
4
|
-
import { StaticJsonRpcProvider } from "@ethersproject/providers";
|
|
1
|
+
import { ContractTransactionResponse, JsonRpcProvider, Overrides, Signer, TransactionResponse } from "ethers";
|
|
2
|
+
import { PayableOverrides } from "./contracts/common";
|
|
5
3
|
import { IPyth__factory } from "./contracts/factories";
|
|
6
4
|
import { ABK64x64ToFloat, floatToABK64x64 } from "./d8XMath";
|
|
7
5
|
import type { NodeSDKConfig, PriceFeedSubmission } from "./nodeSDKTypes";
|
|
@@ -49,7 +47,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
|
|
|
49
47
|
if (overrides) {
|
|
50
48
|
({ rpcURL, ...overrides } = overrides);
|
|
51
49
|
}
|
|
52
|
-
const provider = new
|
|
50
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
53
51
|
let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
54
52
|
if (priceUpdates == undefined) {
|
|
55
53
|
priceUpdates = await this.fetchLatestFeedPriceInfo(symbol);
|
|
@@ -101,7 +99,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
|
|
|
101
99
|
liquidatorAddr: string = "",
|
|
102
100
|
submission?: PriceFeedSubmission,
|
|
103
101
|
overrides?: PayableOverrides & { rpcURL?: string; splitTx?: boolean }
|
|
104
|
-
): Promise<
|
|
102
|
+
): Promise<TransactionResponse> {
|
|
105
103
|
// this operation spends gas, so signer is required
|
|
106
104
|
if (this.proxyContract == null || this.signer == null) {
|
|
107
105
|
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
@@ -115,7 +113,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
|
|
|
115
113
|
if (overrides) {
|
|
116
114
|
({ rpcURL, splitTx, ...overrides } = overrides);
|
|
117
115
|
}
|
|
118
|
-
const provider = new
|
|
116
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
119
117
|
let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
120
118
|
if (submission == undefined) {
|
|
121
119
|
submission = await this.fetchLatestFeedPriceInfo(symbol);
|
|
@@ -166,9 +164,8 @@ export default class LiquidatorTool extends WriteAccessHandler {
|
|
|
166
164
|
]);
|
|
167
165
|
value = this.PRICE_UPDATE_FEE_GWEI * submission.timestamps.length;
|
|
168
166
|
}
|
|
169
|
-
if (overrides?.nonce
|
|
170
|
-
|
|
171
|
-
overrides.nonce = BigNumber.from(nonce).add(nonceInc);
|
|
167
|
+
if (!!overrides?.nonce) {
|
|
168
|
+
overrides.nonce = overrides.nonce + nonceInc;
|
|
172
169
|
}
|
|
173
170
|
let unsignedTx = {
|
|
174
171
|
to: this.proxyAddr,
|
|
@@ -213,7 +210,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
|
|
|
213
210
|
symbol: string,
|
|
214
211
|
traderAddr: string,
|
|
215
212
|
indexPrices?: [number, number],
|
|
216
|
-
overrides?:
|
|
213
|
+
overrides?: Overrides
|
|
217
214
|
): Promise<boolean> {
|
|
218
215
|
if (this.proxyContract == null) {
|
|
219
216
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
@@ -228,7 +225,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
|
|
|
228
225
|
let traderState = await this.proxyContract.getTraderState(
|
|
229
226
|
perpID,
|
|
230
227
|
traderAddr,
|
|
231
|
-
indexPrices.map((x) => floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)) as [
|
|
228
|
+
indexPrices.map((x) => floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)) as [bigint, bigint],
|
|
232
229
|
overrides || {}
|
|
233
230
|
);
|
|
234
231
|
if (traderState[idx_notional].eq(0)) {
|
|
@@ -269,7 +266,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
|
|
|
269
266
|
*
|
|
270
267
|
* @returns {number} Number of active accounts.
|
|
271
268
|
*/
|
|
272
|
-
public async countActivePerpAccounts(symbol: string, overrides?:
|
|
269
|
+
public async countActivePerpAccounts(symbol: string, overrides?: Overrides): Promise<number> {
|
|
273
270
|
if (this.proxyContract == null) {
|
|
274
271
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
275
272
|
}
|
|
@@ -304,7 +301,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
|
|
|
304
301
|
symbol: string,
|
|
305
302
|
from: number,
|
|
306
303
|
to: number,
|
|
307
|
-
overrides?:
|
|
304
|
+
overrides?: Overrides
|
|
308
305
|
): Promise<string[]> {
|
|
309
306
|
if (this.proxyContract == null) {
|
|
310
307
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
@@ -333,7 +330,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
|
|
|
333
330
|
*
|
|
334
331
|
* @returns {string[]} Array of addresses.
|
|
335
332
|
*/
|
|
336
|
-
public async getAllActiveAccounts(symbol: string, overrides?:
|
|
333
|
+
public async getAllActiveAccounts(symbol: string, overrides?: Overrides): Promise<string[]> {
|
|
337
334
|
// checks are done inside the intermediate functions
|
|
338
335
|
let totalAccounts = await this.countActivePerpAccounts(symbol);
|
|
339
336
|
return await this.getActiveAccountsByChunks(symbol, 0, totalAccounts, overrides);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Signer } from "
|
|
2
|
-
import type { ContractTransaction, Overrides } from "@ethersproject/contracts";
|
|
1
|
+
import { ContractTransactionResponse, Overrides, Signer } from "ethers";
|
|
3
2
|
import { floatToDec18, floatToDecN } from "./d8XMath";
|
|
4
3
|
import type { NodeSDKConfig } from "./nodeSDKTypes";
|
|
5
4
|
import PerpetualDataHandler from "./perpetualDataHandler";
|
|
@@ -60,7 +59,7 @@ export default class LiquidityProviderTool extends WriteAccessHandler {
|
|
|
60
59
|
poolSymbolName: string,
|
|
61
60
|
amountCC: number,
|
|
62
61
|
overrides?: Overrides
|
|
63
|
-
): Promise<
|
|
62
|
+
): Promise<ContractTransactionResponse> {
|
|
64
63
|
if (this.proxyContract == null || this.signer == null) {
|
|
65
64
|
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
66
65
|
}
|
|
@@ -101,7 +100,7 @@ export default class LiquidityProviderTool extends WriteAccessHandler {
|
|
|
101
100
|
poolSymbolName: string,
|
|
102
101
|
amountPoolShares: number,
|
|
103
102
|
overrides?: Overrides
|
|
104
|
-
): Promise<
|
|
103
|
+
): Promise<ContractTransactionResponse> {
|
|
105
104
|
if (this.proxyContract == null || this.signer == null) {
|
|
106
105
|
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
107
106
|
}
|
|
@@ -135,7 +134,10 @@ export default class LiquidityProviderTool extends WriteAccessHandler {
|
|
|
135
134
|
*
|
|
136
135
|
* @returns Transaction object.
|
|
137
136
|
*/
|
|
138
|
-
public async executeLiquidityWithdrawal(
|
|
137
|
+
public async executeLiquidityWithdrawal(
|
|
138
|
+
poolSymbolName: string,
|
|
139
|
+
overrides?: Overrides
|
|
140
|
+
): Promise<ContractTransactionResponse> {
|
|
139
141
|
if (this.proxyContract == null || this.signer == null) {
|
|
140
142
|
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
141
143
|
}
|