@d8x/perpetuals-sdk 0.0.9 → 0.0.10

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.
@@ -1,9 +1,9 @@
1
1
  {
2
- "name": "v1.1",
3
- "proxyAddr": "0xB90C23f690F355BBA119c1BD070B08CB4cbEAa58",
2
+ "name": "v1.3",
3
+ "proxyAddr": "0x44Ae67695781209ace41c422dCfD29d3C678AF68",
4
4
  "nodeURL": "https://rpc-mumbai.maticvigil.com/",
5
5
  "proxyABILocation": "../abi/IPerpetualManager.json",
6
- "limitOrderBookFactoryAddr": "0x92B6967Ea9b6A0375013649dBd3d0CD9DceeEf4d",
6
+ "limitOrderBookFactoryAddr": "0x209594B4511b36a6D64EBd7798f8b89674B5B230",
7
7
  "limitOrderBookFactoryABILocation": "../abi/LimitOrderBookFactory.json",
8
8
  "limitOrderBookABILocation": "../abi/LimitOrderBook.json"
9
9
  }
@@ -39,12 +39,28 @@ export default class AccountTrade extends WriteAccessHandler {
39
39
  * @param {Order} order Order structure. As a minimum the structure needs to
40
40
  * specify symbol, side, type and quantity.
41
41
  * @example
42
- * let order: Order = {
43
- * symbol: "MATIC-USD-MATIC",
44
- * side: "BUY",
45
- * type: "MARKET",
46
- * quantity: 1,
47
- * }
42
+ * import { AccountTrade, PerpetualDataHandler, Order } from '@d8x/perpetuals-sdk';
43
+ * async function main() {
44
+ * console.log(AccountTrade);
45
+ * // Setup (authentication required, PK is an environment variable with a private key)
46
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
47
+ * const pk: string = <string>process.env.PK;
48
+ * let accTrade = new AccountTrade(config, pk);
49
+ * await accTrade.createProxyInstance();
50
+ * // set allowance
51
+ * await accTrade.setAllowance("MATIC");
52
+ * // set an order
53
+ * let order: Order = {
54
+ * symbol: "MATIC-USD-MATIC",
55
+ * side: "BUY",
56
+ * type: "MARKET",
57
+ * quantity: 100,
58
+ * timestamp: Date.now()
59
+ * };
60
+ * let orderTransaction = await accTrade.order(order);
61
+ * console.log(orderTransaction);
62
+ * }
63
+ * main();
48
64
  *
49
65
  * @returns {ContractTransaction} Contract Transaction (containing events).
50
66
  */
@@ -71,12 +71,28 @@ class AccountTrade extends writeAccessHandler_1.default {
71
71
  * @param {Order} order Order structure. As a minimum the structure needs to
72
72
  * specify symbol, side, type and quantity.
73
73
  * @example
74
- * let order: Order = {
75
- * symbol: "MATIC-USD-MATIC",
76
- * side: "BUY",
77
- * type: "MARKET",
78
- * quantity: 1,
79
- * }
74
+ * import { AccountTrade, PerpetualDataHandler, Order } from '@d8x/perpetuals-sdk';
75
+ * async function main() {
76
+ * console.log(AccountTrade);
77
+ * // Setup (authentication required, PK is an environment variable with a private key)
78
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
79
+ * const pk: string = <string>process.env.PK;
80
+ * let accTrade = new AccountTrade(config, pk);
81
+ * await accTrade.createProxyInstance();
82
+ * // set allowance
83
+ * await accTrade.setAllowance("MATIC");
84
+ * // set an order
85
+ * let order: Order = {
86
+ * symbol: "MATIC-USD-MATIC",
87
+ * side: "BUY",
88
+ * type: "MARKET",
89
+ * quantity: 100,
90
+ * timestamp: Date.now()
91
+ * };
92
+ * let orderTransaction = await accTrade.order(order);
93
+ * console.log(orderTransaction);
94
+ * }
95
+ * main();
80
96
  *
81
97
  * @returns {ContractTransaction} Contract Transaction (containing events).
82
98
  */
@@ -49,7 +49,7 @@ export default class BrokerTool extends WriteAccessHandler {
49
49
  *
50
50
  * @returns {number} Exchange fee for this broker, in decimals (i.e. 0.1% is 0.001)
51
51
  */
52
- getBrokerInducedFee(poolSymbolName: string): Promise<number>;
52
+ getBrokerInducedFee(poolSymbolName: string): Promise<number | undefined>;
53
53
  /**
54
54
  * Determine the exchange fee based on lots purchased by this broker.
55
55
  * The final exchange fee that this broker can offer to traders that trade through him is equal to
@@ -75,7 +75,11 @@ class BrokerTool extends writeAccessHandler_1.default {
75
75
  }
76
76
  let poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
77
77
  let feeTbps = yield this.proxyContract.getBrokerInducedFee(poolId, this.traderAddr);
78
- return feeTbps / 100000;
78
+ let fee = feeTbps / 100000;
79
+ if (fee == 0.65535) {
80
+ return undefined;
81
+ }
82
+ return fee;
79
83
  });
80
84
  }
81
85
  /**
@@ -50,7 +50,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
50
50
  *
51
51
  * @returns {number} Liquidated amount.
52
52
  */
53
- liquidateTrader(symbol: string, traderAddr: string, liquidatorAddr?: string): Promise<number>;
53
+ liquidateTrader(symbol: string, traderAddr: string, liquidatorAddr?: string): Promise<any>;
54
54
  /**
55
55
  * Check if the collateral of a trader is above the maintenance margin ("maintenance margin safe").
56
56
  * If not, the position can be liquidated.
@@ -84,7 +84,7 @@ export default class LiquidatorTool extends WriteAccessHandler {
84
84
  * @param gasLimit Gas limit.
85
85
  * @ignore
86
86
  */
87
- _liquidateByAMM(perpetualId: number, liquidatorAddr: string, traderAddr: string, gasLimit: number): Promise<number>;
87
+ _liquidateByAMM(perpetualId: number, liquidatorAddr: string, traderAddr: string, gasLimit: number): Promise<any>;
88
88
  /**
89
89
  * Total number of active accounts for this symbol, i.e. accounts with positions that are currently open.
90
90
  * @param {string} symbol Symbol of the form ETH-USD-MATIC.
@@ -126,6 +126,9 @@ class LiquidatorTool extends writeAccessHandler_1.default {
126
126
  let fAmount = yield this.proxyContract.liquidateByAMM(perpetualId, liquidatorAddr, traderAddr, {
127
127
  gasLimit: gasLimit,
128
128
  });
129
+ if (fAmount == undefined) {
130
+ return fAmount;
131
+ }
129
132
  return (0, d8XMath_1.ABK64x64ToFloat)(fAmount);
130
133
  });
131
134
  }
@@ -155,7 +158,8 @@ class LiquidatorTool extends writeAccessHandler_1.default {
155
158
  throw Error("no proxy contract initialized. Use createProxyInstance().");
156
159
  }
157
160
  let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
158
- return yield this.proxyContract.countActivePerpAccounts(perpID);
161
+ let numAccounts = yield this.proxyContract.countActivePerpAccounts(perpID);
162
+ return Number(numAccounts);
159
163
  });
160
164
  }
161
165
  /**
@@ -304,7 +304,8 @@ class MarketData extends perpetualDataHandler_1.default {
304
304
  static _exchangeInfo(_proxyContract) {
305
305
  return __awaiter(this, void 0, void 0, function* () {
306
306
  let nestedPerpetualIDs = yield perpetualDataHandler_1.default.getNestedPerpetualIds(_proxyContract);
307
- let info = { pools: [] };
307
+ let factory = yield _proxyContract.getOracleFactory();
308
+ let info = { pools: [], oracleFactoryAddr: factory };
308
309
  const numPools = nestedPerpetualIDs.length;
309
310
  for (var j = 0; j < numPools; j++) {
310
311
  let perpetualIDs = nestedPerpetualIDs[j];
@@ -8,11 +8,6 @@ export declare const COLLATERAL_CURRENCY_QUOTE = 0;
8
8
  export declare const COLLATERAL_CURRENCY_BASE = 1;
9
9
  export declare const COLLATERAL_CURRENCY_QUANTO = 2;
10
10
  export declare const PERP_STATE_STR: string[];
11
- export declare const PerpetualStateINVALID = 0;
12
- export declare const PerpetualStateINITIALIZING = 1;
13
- export declare const PerpetualStateNORMAL = 2;
14
- export declare const PerpetualStateEMERGENCY = 3;
15
- export declare const PerpetualStateCLEARED = 4;
16
11
  export declare const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
17
12
  export declare const ZERO_ORDER_ID = "0x0000000000000000000000000000000000000000000000000000000000000000";
18
13
  export declare const ONE_64x64: BigNumber;
@@ -77,6 +72,7 @@ export interface PerpetualStaticInfo {
77
72
  }
78
73
  export interface ExchangeInfo {
79
74
  pools: PoolState[];
75
+ oracleFactoryAddr: string;
80
76
  }
81
77
  export interface PoolState {
82
78
  isRunning: boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CollaterlCCY = exports.CLOSED_SIDE = exports.SELL_SIDE = exports.BUY_SIDE = exports.ORDER_TYPE_STOP_LIMIT = exports.ORDER_TYPE_STOP_MARKET = exports.ORDER_TYPE_MARKET = exports.ORDER_TYPE_LIMIT = exports.MASK_KEEP_POS_LEVERAGE = exports.MASK_STOP_ORDER = exports.MASK_MARKET_ORDER = exports.MASK_LIMIT_ORDER = exports.MASK_CLOSE_ONLY = exports.ORDER_MAX_DURATION_SEC = exports.DECIMALS = exports.MAX_UINT_256 = exports.MAX_64x64 = exports.ONE_64x64 = exports.ZERO_ORDER_ID = exports.ZERO_ADDRESS = exports.PerpetualStateCLEARED = exports.PerpetualStateEMERGENCY = exports.PerpetualStateNORMAL = exports.PerpetualStateINITIALIZING = exports.PerpetualStateINVALID = exports.PERP_STATE_STR = exports.COLLATERAL_CURRENCY_QUANTO = exports.COLLATERAL_CURRENCY_BASE = exports.COLLATERAL_CURRENCY_QUOTE = exports.ERC20_ABI = exports.DEFAULT_CONFIG_MAINNET_NAME = exports.DEFAULT_CONFIG_TESTNET_NAME = exports.DEFAULT_CONFIG_MAINNET = exports.DEFAULT_CONFIG_TESTNET = void 0;
3
+ exports.CollaterlCCY = exports.CLOSED_SIDE = exports.SELL_SIDE = exports.BUY_SIDE = exports.ORDER_TYPE_STOP_LIMIT = exports.ORDER_TYPE_STOP_MARKET = exports.ORDER_TYPE_MARKET = exports.ORDER_TYPE_LIMIT = exports.MASK_KEEP_POS_LEVERAGE = exports.MASK_STOP_ORDER = exports.MASK_MARKET_ORDER = exports.MASK_LIMIT_ORDER = exports.MASK_CLOSE_ONLY = exports.ORDER_MAX_DURATION_SEC = exports.DECIMALS = exports.MAX_UINT_256 = exports.MAX_64x64 = exports.ONE_64x64 = exports.ZERO_ORDER_ID = exports.ZERO_ADDRESS = exports.PERP_STATE_STR = exports.COLLATERAL_CURRENCY_QUANTO = exports.COLLATERAL_CURRENCY_BASE = exports.COLLATERAL_CURRENCY_QUOTE = exports.ERC20_ABI = exports.DEFAULT_CONFIG_MAINNET_NAME = exports.DEFAULT_CONFIG_TESTNET_NAME = exports.DEFAULT_CONFIG_MAINNET = exports.DEFAULT_CONFIG_TESTNET = void 0;
4
4
  const ethers_1 = require("ethers");
5
5
  exports.DEFAULT_CONFIG_TESTNET = "../config/defaultConfig.json";
6
6
  exports.DEFAULT_CONFIG_MAINNET = "notthereyet";
@@ -11,11 +11,6 @@ exports.COLLATERAL_CURRENCY_QUOTE = 0;
11
11
  exports.COLLATERAL_CURRENCY_BASE = 1;
12
12
  exports.COLLATERAL_CURRENCY_QUANTO = 2;
13
13
  exports.PERP_STATE_STR = ["INVALID", "INITIALIZING", "NORMAL", "EMERGENCY", "CLEARED"];
14
- exports.PerpetualStateINVALID = 0;
15
- exports.PerpetualStateINITIALIZING = 1;
16
- exports.PerpetualStateNORMAL = 2;
17
- exports.PerpetualStateEMERGENCY = 3;
18
- exports.PerpetualStateCLEARED = 4;
19
14
  exports.ZERO_ADDRESS = ethers_1.constants.AddressZero;
20
15
  exports.ZERO_ORDER_ID = ethers_1.constants.HashZero;
21
16
  exports.ONE_64x64 = ethers_1.BigNumber.from("0x010000000000000000");
@@ -11,7 +11,18 @@ export default class OrderReferrerTool extends WriteAccessHandler {
11
11
  * Constructor.
12
12
  * @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.readSDKConfig.
13
13
  * @example
14
- * const config = PerpetualDataHandler.readSDKConfig("testnet")
14
+ * import { OrderReferrerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
15
+ * async function main() {
16
+ * console.log(OrderReferrerTool);
17
+ * // load configuration for testnet
18
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
19
+ * // OrderReferrerTool (authentication required, PK is an environment variable with a private key)
20
+ * const pk: string = <string>process.env.PK;
21
+ * let orderTool = new OrderReferrerTool(config, pk);
22
+ * // Create a proxy instance to access the blockchain
23
+ * await orderTool.createProxyInstance();
24
+ * }
25
+ * main();
15
26
  *
16
27
  * @param {string} privateKey Private key of the wallet that executes the conditional orders.
17
28
  */
@@ -28,12 +39,42 @@ export default class OrderReferrerTool extends WriteAccessHandler {
28
39
  /**
29
40
  * All the orders in the order book for a given symbol that are currently open.
30
41
  * @param {string} symbol Symbol of the form ETH-USD-MATIC.
42
+ * @example
43
+ * import { OrderReferrerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
44
+ * async function main() {
45
+ * console.log(OrderReferrerTool);
46
+ * // Setup (authentication required, PK is an environment variable with a private key)
47
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
48
+ * const pk: string = <string>process.env.PK;
49
+ * let orderTool = new OrderReferrerTool(config, pk);
50
+ * await orderTool.createProxyInstance();
51
+ * // get all open orders
52
+ * let openOrders = await orderTool.getAllOpenOrders("ETH-USD-MATIC");
53
+ * console.log(openOrders);
54
+ * }
55
+ * main();
56
+ *
31
57
  * @returns Array with all open orders and their IDs.
32
58
  */
33
59
  getAllOpenOrders(symbol: string): Promise<[Order[], string[]]>;
34
60
  /**
35
61
  * Total number of limit orders for this symbol, excluding those that have been cancelled/removed.
36
62
  * @param {string} symbol Symbol of the form ETH-USD-MATIC.
63
+ * @example
64
+ * import { OrderReferrerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
65
+ * async function main() {
66
+ * console.log(OrderReferrerTool);
67
+ * // Setup (authentication required, PK is an environment variable with a private key)
68
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
69
+ * const pk: string = <string>process.env.PK;
70
+ * let orderTool = new OrderReferrerTool(config, pk);
71
+ * await orderTool.createProxyInstance();
72
+ * // get all open orders
73
+ * let numberOfOrders = await orderTool.numberOfOpenOrders("ETH-USD-MATIC");
74
+ * console.log(numberOfOrders);
75
+ * }
76
+ * main();
77
+ *
37
78
  * @returns {number} Number of open orders.
38
79
  */
39
80
  numberOfOpenOrders(symbol: string): Promise<number>;
@@ -50,6 +91,21 @@ export default class OrderReferrerTool extends WriteAccessHandler {
50
91
  * @param {string} symbol Symbol of the form ETH-USD-MATIC.
51
92
  * @param {number} numElements Maximum number of orders to poll.
52
93
  * @param {string=} startAfter Optional order ID from where to start polling. Defaults to the first order.
94
+ * @example
95
+ * import { OrderReferrerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
96
+ * async function main() {
97
+ * console.log(OrderReferrerTool);
98
+ * // Setup (authentication required, PK is an environment variable with a private key)
99
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
100
+ * const pk: string = <string>process.env.PK;
101
+ * let orderTool = new OrderReferrerTool(config, pk);
102
+ * await orderTool.createProxyInstance();
103
+ * // get all open orders
104
+ * let activeOrders = await orderTool.pollLimitOrders("ETH-USD-MATIC", 2);
105
+ * console.log(activeOrders);
106
+ * }
107
+ * main();
108
+ *
53
109
  * @returns Array of orders and corresponding order IDs
54
110
  */
55
111
  pollLimitOrders(symbol: string, numElements: number, startAfter?: string): Promise<[Order[], string[]]>;
@@ -24,7 +24,18 @@ class OrderReferrerTool extends writeAccessHandler_1.default {
24
24
  * Constructor.
25
25
  * @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.readSDKConfig.
26
26
  * @example
27
- * const config = PerpetualDataHandler.readSDKConfig("testnet")
27
+ * import { OrderReferrerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
28
+ * async function main() {
29
+ * console.log(OrderReferrerTool);
30
+ * // load configuration for testnet
31
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
32
+ * // OrderReferrerTool (authentication required, PK is an environment variable with a private key)
33
+ * const pk: string = <string>process.env.PK;
34
+ * let orderTool = new OrderReferrerTool(config, pk);
35
+ * // Create a proxy instance to access the blockchain
36
+ * await orderTool.createProxyInstance();
37
+ * }
38
+ * main();
28
39
  *
29
40
  * @param {string} privateKey Private key of the wallet that executes the conditional orders.
30
41
  */
@@ -54,6 +65,21 @@ class OrderReferrerTool extends writeAccessHandler_1.default {
54
65
  /**
55
66
  * All the orders in the order book for a given symbol that are currently open.
56
67
  * @param {string} symbol Symbol of the form ETH-USD-MATIC.
68
+ * @example
69
+ * import { OrderReferrerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
70
+ * async function main() {
71
+ * console.log(OrderReferrerTool);
72
+ * // Setup (authentication required, PK is an environment variable with a private key)
73
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
74
+ * const pk: string = <string>process.env.PK;
75
+ * let orderTool = new OrderReferrerTool(config, pk);
76
+ * await orderTool.createProxyInstance();
77
+ * // get all open orders
78
+ * let openOrders = await orderTool.getAllOpenOrders("ETH-USD-MATIC");
79
+ * console.log(openOrders);
80
+ * }
81
+ * main();
82
+ *
57
83
  * @returns Array with all open orders and their IDs.
58
84
  */
59
85
  getAllOpenOrders(symbol) {
@@ -65,6 +91,21 @@ class OrderReferrerTool extends writeAccessHandler_1.default {
65
91
  /**
66
92
  * Total number of limit orders for this symbol, excluding those that have been cancelled/removed.
67
93
  * @param {string} symbol Symbol of the form ETH-USD-MATIC.
94
+ * @example
95
+ * import { OrderReferrerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
96
+ * async function main() {
97
+ * console.log(OrderReferrerTool);
98
+ * // Setup (authentication required, PK is an environment variable with a private key)
99
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
100
+ * const pk: string = <string>process.env.PK;
101
+ * let orderTool = new OrderReferrerTool(config, pk);
102
+ * await orderTool.createProxyInstance();
103
+ * // get all open orders
104
+ * let numberOfOrders = await orderTool.numberOfOpenOrders("ETH-USD-MATIC");
105
+ * console.log(numberOfOrders);
106
+ * }
107
+ * main();
108
+ *
68
109
  * @returns {number} Number of open orders.
69
110
  */
70
111
  numberOfOpenOrders(symbol) {
@@ -73,7 +114,8 @@ class OrderReferrerTool extends writeAccessHandler_1.default {
73
114
  throw Error("no proxy contract initialized. Use createProxyInstance().");
74
115
  }
75
116
  const orderBookSC = this.getOrderBookContract(symbol);
76
- return yield orderBookSC.numberOfOrderBookDigests();
117
+ let numOrders = yield orderBookSC.numberOfOrderBookDigests();
118
+ return Number(numOrders);
77
119
  });
78
120
  }
79
121
  /**
@@ -99,6 +141,21 @@ class OrderReferrerTool extends writeAccessHandler_1.default {
99
141
  * @param {string} symbol Symbol of the form ETH-USD-MATIC.
100
142
  * @param {number} numElements Maximum number of orders to poll.
101
143
  * @param {string=} startAfter Optional order ID from where to start polling. Defaults to the first order.
144
+ * @example
145
+ * import { OrderReferrerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
146
+ * async function main() {
147
+ * console.log(OrderReferrerTool);
148
+ * // Setup (authentication required, PK is an environment variable with a private key)
149
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
150
+ * const pk: string = <string>process.env.PK;
151
+ * let orderTool = new OrderReferrerTool(config, pk);
152
+ * await orderTool.createProxyInstance();
153
+ * // get all open orders
154
+ * let activeOrders = await orderTool.pollLimitOrders("ETH-USD-MATIC", 2);
155
+ * console.log(activeOrders);
156
+ * }
157
+ * main();
158
+ *
102
159
  * @returns Array of orders and corresponding order IDs
103
160
  */
104
161
  pollLimitOrders(symbol, numElements, startAfter) {
@@ -81,10 +81,6 @@ class PerpetualDataHandler {
81
81
  let mgnRate = [];
82
82
  for (let k = 0; k < perpetualIDs.length; k++) {
83
83
  let perp = yield proxyContract.getPerpetual(perpetualIDs[k]);
84
- if (perp.state == nodeSDKTypes_1.PerpetualStateINVALID || perp.state == nodeSDKTypes_1.PerpetualStateINITIALIZING) {
85
- // only active perpetuals
86
- continue;
87
- }
88
84
  let base = (0, utils_1.fromBytes4HexString)(perp.S2BaseCCY);
89
85
  let quote = (0, utils_1.fromBytes4HexString)(perp.S2QuoteCCY);
90
86
  let base3 = (0, utils_1.fromBytes4HexString)(perp.S3BaseCCY);
package/package.json CHANGED
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "name": "@d8x/perpetuals-sdk",
29
29
  "description": "Node TypeScript SDK for D8X Perpetual Futures",
30
- "version": "0.0.9",
30
+ "version": "0.0.10",
31
31
  "main": "./dist/index.js",
32
32
  "types": "./dist/index.d.ts",
33
33
  "directories": {
@@ -67,12 +67,28 @@ export default class AccountTrade extends WriteAccessHandler {
67
67
  * @param {Order} order Order structure. As a minimum the structure needs to
68
68
  * specify symbol, side, type and quantity.
69
69
  * @example
70
- * let order: Order = {
71
- * symbol: "MATIC-USD-MATIC",
72
- * side: "BUY",
73
- * type: "MARKET",
74
- * quantity: 1,
75
- * }
70
+ * import { AccountTrade, PerpetualDataHandler, Order } from '@d8x/perpetuals-sdk';
71
+ * async function main() {
72
+ * console.log(AccountTrade);
73
+ * // Setup (authentication required, PK is an environment variable with a private key)
74
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
75
+ * const pk: string = <string>process.env.PK;
76
+ * let accTrade = new AccountTrade(config, pk);
77
+ * await accTrade.createProxyInstance();
78
+ * // set allowance
79
+ * await accTrade.setAllowance("MATIC");
80
+ * // set an order
81
+ * let order: Order = {
82
+ * symbol: "MATIC-USD-MATIC",
83
+ * side: "BUY",
84
+ * type: "MARKET",
85
+ * quantity: 100,
86
+ * timestamp: Date.now()
87
+ * };
88
+ * let orderTransaction = await accTrade.order(order);
89
+ * console.log(orderTransaction);
90
+ * }
91
+ * main();
76
92
  *
77
93
  * @returns {ContractTransaction} Contract Transaction (containing events).
78
94
  */
package/src/brokerTool.ts CHANGED
@@ -21,10 +21,10 @@ export default class BrokerTool extends WriteAccessHandler {
21
21
  * // load configuration for testnet
22
22
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
23
23
  * // BrokerTool (authentication required, PK is an environment variable with a private key)
24
- * const pk: string = <string>process.env.PK;
25
- * let brokTool = new BrokerTool(config, pk);
24
+ * const pk: string = <string>process.env.PK;
25
+ * let brokTool = new BrokerTool(config, pk);
26
26
  * // Create a proxy instance to access the blockchain
27
- * await brokTool.createProxyInstance();
27
+ * await brokTool.createProxyInstance();
28
28
  * }
29
29
  * main();
30
30
  *
@@ -46,24 +46,28 @@ export default class BrokerTool extends WriteAccessHandler {
46
46
  * console.log(BrokerTool);
47
47
  * // Setup (authentication required, PK is an environment variable with a private key)
48
48
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
49
- * const pk: string = <string>process.env.PK;
50
- * let brokTool = new BrokerTool(config, pk);
49
+ * const pk: string = <string>process.env.PK;
50
+ * let brokTool = new BrokerTool(config, pk);
51
51
  * await brokTool.createProxyInstance();
52
52
  * // get broker induced fee
53
53
  * let brokFee = await brokTool.getBrokerInducedFee("MATIC");
54
- * console.log(brokFee);
54
+ * console.log(brokFee);
55
55
  * }
56
56
  * main();
57
57
  *
58
58
  * @returns {number} Exchange fee for this broker, in decimals (i.e. 0.1% is 0.001)
59
59
  */
60
- public async getBrokerInducedFee(poolSymbolName: string): Promise<number> {
60
+ public async getBrokerInducedFee(poolSymbolName: string): Promise<number | undefined> {
61
61
  if (this.proxyContract == null || this.signer == null) {
62
62
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
63
63
  }
64
64
  let poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
65
65
  let feeTbps = await this.proxyContract.getBrokerInducedFee(poolId, this.traderAddr);
66
- return feeTbps / 100_000;
66
+ let fee = feeTbps / 100_000;
67
+ if (fee == 0.65535) {
68
+ return undefined;
69
+ }
70
+ return fee;
67
71
  }
68
72
 
69
73
  /**
@@ -78,12 +82,12 @@ export default class BrokerTool extends WriteAccessHandler {
78
82
  * console.log(BrokerTool);
79
83
  * // Setup (authentication required, PK is an environment variable with a private key)
80
84
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
81
- * const pk: string = <string>process.env.PK;
82
- * let brokTool = new BrokerTool(config, pk);
85
+ * const pk: string = <string>process.env.PK;
86
+ * let brokTool = new BrokerTool(config, pk);
83
87
  * await brokTool.createProxyInstance();
84
88
  * // get broker fee induced by lots
85
89
  * let brokFeeLots = await brokTool.getFeeForBrokerDesignation("MATIC");
86
- * console.log(brokFeeLots);
90
+ * console.log(brokFeeLots);
87
91
  * }
88
92
  * main();
89
93
  *
@@ -115,12 +119,12 @@ export default class BrokerTool extends WriteAccessHandler {
115
119
  * console.log(BrokerTool);
116
120
  * // Setup (authentication required, PK is an environment variable with a private key)
117
121
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
118
- * const pk: string = <string>process.env.PK;
119
- * let brokTool = new BrokerTool(config, pk);
122
+ * const pk: string = <string>process.env.PK;
123
+ * let brokTool = new BrokerTool(config, pk);
120
124
  * await brokTool.createProxyInstance();
121
125
  * // get broker fee induced by volume
122
126
  * let brokFeeVol = await brokTool.getFeeForBrokerVolume("MATIC");
123
- * console.log(brokFeeVol);
127
+ * console.log(brokFeeVol);
124
128
  * }
125
129
  * main();
126
130
  *
@@ -146,12 +150,12 @@ export default class BrokerTool extends WriteAccessHandler {
146
150
  * console.log(BrokerTool);
147
151
  * // Setup (authentication required, PK is an environment variable with a private key)
148
152
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
149
- * const pk: string = <string>process.env.PK;
150
- * let brokTool = new BrokerTool(config, pk);
153
+ * const pk: string = <string>process.env.PK;
154
+ * let brokTool = new BrokerTool(config, pk);
151
155
  * await brokTool.createProxyInstance();
152
156
  * // get broker fee induced by staked d8x
153
157
  * let brokFeeStake = await brokTool.getFeeForBrokerStake("0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B");
154
- * console.log(brokFeeStake);
158
+ * console.log(brokFeeStake);
155
159
  * }
156
160
  * main();
157
161
  *
@@ -183,19 +187,19 @@ export default class BrokerTool extends WriteAccessHandler {
183
187
  * console.log(BrokerTool);
184
188
  * // Setup (authentication required, PK is an environment variable with a private key)
185
189
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
186
- * const pk: string = <string>process.env.PK;
187
- * let brokTool = new BrokerTool(config, pk);
190
+ * const pk: string = <string>process.env.PK;
191
+ * let brokTool = new BrokerTool(config, pk);
188
192
  * await brokTool.createProxyInstance();
189
193
  * // get exchange fee based on an order and trader
190
- * let order = {symbol: "ETH-USD-MATIC",
191
- * side: "BUY",
192
- * type: "MARKET",
193
- * quantity: 1,
194
+ * let order = {symbol: "ETH-USD-MATIC",
195
+ * side: "BUY",
196
+ * type: "MARKET",
197
+ * quantity: 1,
194
198
  * timestamp: Date.now()
195
- * };
199
+ * };
196
200
  * let exchFee = await brokTool.determineExchangeFee(order,
197
- * "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B");
198
- * console.log(exchFee);
201
+ * "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B");
202
+ * console.log(exchFee);
199
203
  * }
200
204
  * main();
201
205
  *
@@ -223,12 +227,12 @@ export default class BrokerTool extends WriteAccessHandler {
223
227
  * console.log(BrokerTool);
224
228
  * // Setup (authentication required, PK is an environment variable with a private key)
225
229
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
226
- * const pk: string = <string>process.env.PK;
227
- * let brokTool = new BrokerTool(config, pk);
230
+ * const pk: string = <string>process.env.PK;
231
+ * let brokTool = new BrokerTool(config, pk);
228
232
  * await brokTool.createProxyInstance();
229
233
  * // get 30 day volume for broker
230
234
  * let brokVolume = await brokTool.getCurrentBrokerVolume("MATIC");
231
- * console.log(brokVolume);
235
+ * console.log(brokVolume);
232
236
  * }
233
237
  * main();
234
238
  *
@@ -255,12 +259,12 @@ export default class BrokerTool extends WriteAccessHandler {
255
259
  * console.log(BrokerTool);
256
260
  * // Setup (authentication required, PK is an environment variable with a private key)
257
261
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
258
- * const pk: string = <string>process.env.PK;
259
- * let brokTool = new BrokerTool(config, pk);
262
+ * const pk: string = <string>process.env.PK;
263
+ * let brokTool = new BrokerTool(config, pk);
260
264
  * await brokTool.createProxyInstance();
261
265
  * // get lot price
262
266
  * let brokLotSize = await brokTool.getLotSize("MATIC");
263
- * console.log(brokLotSize);
267
+ * console.log(brokLotSize);
264
268
  * }
265
269
  * main();
266
270
  *
@@ -286,12 +290,12 @@ export default class BrokerTool extends WriteAccessHandler {
286
290
  * console.log(BrokerTool);
287
291
  * // Setup (authentication required, PK is an environment variable with a private key)
288
292
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
289
- * const pk: string = <string>process.env.PK;
290
- * let brokTool = new BrokerTool(config, pk);
293
+ * const pk: string = <string>process.env.PK;
294
+ * let brokTool = new BrokerTool(config, pk);
291
295
  * await brokTool.createProxyInstance();
292
296
  * // get broker designation
293
297
  * let brokDesignation = await brokTool.getBrokerDesignation("MATIC");
294
- * console.log(brokDesignation);
298
+ * console.log(brokDesignation);
295
299
  * }
296
300
  * main();
297
301
  *
@@ -316,12 +320,12 @@ export default class BrokerTool extends WriteAccessHandler {
316
320
  * console.log(BrokerTool);
317
321
  * // Setup (authentication required, PK is an environment variable with a private key)
318
322
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
319
- * const pk: string = <string>process.env.PK;
320
- * let brokTool = new BrokerTool(config, pk);
323
+ * const pk: string = <string>process.env.PK;
324
+ * let brokTool = new BrokerTool(config, pk);
321
325
  * await brokTool.createProxyInstance();
322
326
  * // deposit to default fund
323
327
  * let respDeposit = await brokTool.brokerDepositToDefaultFund("MATIC",1);
324
- * console.log(respDeposit);
328
+ * console.log(respDeposit);
325
329
  * }
326
330
  * main();
327
331
  *
@@ -352,19 +356,19 @@ export default class BrokerTool extends WriteAccessHandler {
352
356
  * console.log(BrokerTool);
353
357
  * // Setup (authentication required, PK is an environment variable with a private key)
354
358
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
355
- * const pk: string = <string>process.env.PK;
356
- * let brokTool = new BrokerTool(config, pk);
359
+ * const pk: string = <string>process.env.PK;
360
+ * let brokTool = new BrokerTool(config, pk);
357
361
  * await brokTool.createProxyInstance();
358
362
  * // sign order
359
- * let order = {symbol: "ETH-USD-MATIC",
360
- * side: "BUY",
361
- * type: "MARKET",
362
- * quantity: 1,
363
+ * let order = {symbol: "ETH-USD-MATIC",
364
+ * side: "BUY",
365
+ * type: "MARKET",
366
+ * quantity: 1,
363
367
  * timestamp: Date.now()
364
- * };
365
- * let signedOrder = await brokTool.signOrder(order, "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B",
366
- * 0.0001, 1669723339);
367
- * console.log(signedOrder);
368
+ * };
369
+ * let signedOrder = await brokTool.signOrder(order, "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B",
370
+ * 0.0001, 1669723339);
371
+ * console.log(signedOrder);
368
372
  * }
369
373
  * main();
370
374
  *
@@ -18,10 +18,10 @@ export default class LiquidatorTool extends WriteAccessHandler {
18
18
  * // load configuration for testnet
19
19
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
20
20
  * // LiquidatorTool (authentication required, PK is an environment variable with a private key)
21
- * const pk: string = <string>process.env.PK;
22
- * let lqudtrTool = new LiquidatorTool(config, pk);
21
+ * const pk: string = <string>process.env.PK;
22
+ * let lqudtrTool = new LiquidatorTool(config, pk);
23
23
  * // Create a proxy instance to access the blockchain
24
- * await lqudtrTool.createProxyInstance();
24
+ * await lqudtrTool.createProxyInstance();
25
25
  * }
26
26
  * main();
27
27
  *
@@ -43,13 +43,13 @@ export default class LiquidatorTool extends WriteAccessHandler {
43
43
  * console.log(LiquidatorTool);
44
44
  * // Setup (authentication required, PK is an environment variable with a private key)
45
45
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
46
- * const pk: string = <string>process.env.PK;
47
- * let lqudtrTool = new LiquidatorTool(config, pk);
46
+ * const pk: string = <string>process.env.PK;
47
+ * let lqudtrTool = new LiquidatorTool(config, pk);
48
48
  * await lqudtrTool.createProxyInstance();
49
49
  * // liquidate trader
50
- * let liqAmount = await lqudtrTool.liquidateTrader("ETH-USD-MATIC",
50
+ * let liqAmount = await lqudtrTool.liquidateTrader("ETH-USD-MATIC",
51
51
  * "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B");
52
- * console.log(liqAmount);
52
+ * console.log(liqAmount);
53
53
  * }
54
54
  * main();
55
55
  *
@@ -79,13 +79,13 @@ export default class LiquidatorTool extends WriteAccessHandler {
79
79
  * console.log(LiquidatorTool);
80
80
  * // Setup (authentication required, PK is an environment variable with a private key)
81
81
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
82
- * const pk: string = <string>process.env.PK;
83
- * let lqudtrTool = new LiquidatorTool(config, pk);
82
+ * const pk: string = <string>process.env.PK;
83
+ * let lqudtrTool = new LiquidatorTool(config, pk);
84
84
  * await lqudtrTool.createProxyInstance();
85
85
  * // check if trader can be liquidated
86
- * let safe = await lqudtrTool.isMaintenanceMarginSafe("ETH-USD-MATIC",
86
+ * let safe = await lqudtrTool.isMaintenanceMarginSafe("ETH-USD-MATIC",
87
87
  * "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B");
88
- * console.log(safe);
88
+ * console.log(safe);
89
89
  * }
90
90
  * main();
91
91
  *
@@ -112,6 +112,9 @@ export default class LiquidatorTool extends WriteAccessHandler {
112
112
  let fAmount = await this.proxyContract!.liquidateByAMM(perpetualId, liquidatorAddr, traderAddr, {
113
113
  gasLimit: gasLimit,
114
114
  });
115
+ if (fAmount == undefined) {
116
+ return fAmount;
117
+ }
115
118
  return ABK64x64ToFloat(fAmount);
116
119
  }
117
120
 
@@ -124,12 +127,12 @@ export default class LiquidatorTool extends WriteAccessHandler {
124
127
  * console.log(LiquidatorTool);
125
128
  * // Setup (authentication required, PK is an environment variable with a private key)
126
129
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
127
- * const pk: string = <string>process.env.PK;
128
- * let lqudtrTool = new LiquidatorTool(config, pk);
130
+ * const pk: string = <string>process.env.PK;
131
+ * let lqudtrTool = new LiquidatorTool(config, pk);
129
132
  * await lqudtrTool.createProxyInstance();
130
133
  * // get number of active accounts
131
134
  * let accounts = await lqudtrTool.countActivePerpAccounts("ETH-USD-MATIC");
132
- * console.log(accounts);
135
+ * console.log(accounts);
133
136
  * }
134
137
  * main();
135
138
  *
@@ -140,7 +143,8 @@ export default class LiquidatorTool extends WriteAccessHandler {
140
143
  throw Error("no proxy contract initialized. Use createProxyInstance().");
141
144
  }
142
145
  let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
143
- return await this.proxyContract.countActivePerpAccounts(perpID);
146
+ let numAccounts = await this.proxyContract.countActivePerpAccounts(perpID);
147
+ return Number(numAccounts);
144
148
  }
145
149
 
146
150
  /**
@@ -154,12 +158,12 @@ export default class LiquidatorTool extends WriteAccessHandler {
154
158
  * console.log(LiquidatorTool);
155
159
  * // Setup (authentication required, PK is an environment variable with a private key)
156
160
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
157
- * const pk: string = <string>process.env.PK;
158
- * let lqudtrTool = new LiquidatorTool(config, pk);
161
+ * const pk: string = <string>process.env.PK;
162
+ * let lqudtrTool = new LiquidatorTool(config, pk);
159
163
  * await lqudtrTool.createProxyInstance();
160
164
  * // get all active accounts in chunks
161
165
  * let accounts = await lqudtrTool.getActiveAccountsByChunks("ETH-USD-MATIC", 0, 4);
162
- * console.log(accounts);
166
+ * console.log(accounts);
163
167
  * }
164
168
  * main();
165
169
  *
@@ -182,12 +186,12 @@ export default class LiquidatorTool extends WriteAccessHandler {
182
186
  * console.log(LiquidatorTool);
183
187
  * // Setup (authentication required, PK is an environment variable with a private key)
184
188
  * const config = PerpetualDataHandler.readSDKConfig("testnet");
185
- * const pk: string = <string>process.env.PK;
186
- * let lqudtrTool = new LiquidatorTool(config, pk);
189
+ * const pk: string = <string>process.env.PK;
190
+ * let lqudtrTool = new LiquidatorTool(config, pk);
187
191
  * await lqudtrTool.createProxyInstance();
188
192
  * // get all active accounts
189
193
  * let accounts = await lqudtrTool.getAllActiveAccounts("ETH-USD-MATIC");
190
- * console.log(accounts);
194
+ * console.log(accounts);
191
195
  * }
192
196
  * main();
193
197
  *
package/src/marketData.ts CHANGED
@@ -304,7 +304,8 @@ export default class MarketData extends PerpetualDataHandler {
304
304
 
305
305
  public static async _exchangeInfo(_proxyContract: ethers.Contract): Promise<ExchangeInfo> {
306
306
  let nestedPerpetualIDs = await PerpetualDataHandler.getNestedPerpetualIds(_proxyContract);
307
- let info: ExchangeInfo = { pools: [] };
307
+ let factory = await _proxyContract.getOracleFactory();
308
+ let info: ExchangeInfo = { pools: [], oracleFactoryAddr: factory };
308
309
  const numPools = nestedPerpetualIDs.length;
309
310
  for (var j = 0; j < numPools; j++) {
310
311
  let perpetualIDs = nestedPerpetualIDs[j];
@@ -9,11 +9,6 @@ export const COLLATERAL_CURRENCY_QUOTE = 0;
9
9
  export const COLLATERAL_CURRENCY_BASE = 1;
10
10
  export const COLLATERAL_CURRENCY_QUANTO = 2;
11
11
  export const PERP_STATE_STR = ["INVALID", "INITIALIZING", "NORMAL", "EMERGENCY", "CLEARED"];
12
- export const PerpetualStateINVALID = 0;
13
- export const PerpetualStateINITIALIZING = 1;
14
- export const PerpetualStateNORMAL = 2;
15
- export const PerpetualStateEMERGENCY = 3;
16
- export const PerpetualStateCLEARED = 4;
17
12
  export const ZERO_ADDRESS = constants.AddressZero;
18
13
  export const ZERO_ORDER_ID = constants.HashZero;
19
14
 
@@ -87,6 +82,7 @@ export interface PerpetualStaticInfo {
87
82
 
88
83
  export interface ExchangeInfo {
89
84
  pools: PoolState[];
85
+ oracleFactoryAddr: string;
90
86
  }
91
87
  export interface PoolState {
92
88
  isRunning: boolean;
@@ -12,7 +12,18 @@ export default class OrderReferrerTool extends WriteAccessHandler {
12
12
  * Constructor.
13
13
  * @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.readSDKConfig.
14
14
  * @example
15
- * const config = PerpetualDataHandler.readSDKConfig("testnet")
15
+ * import { OrderReferrerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
16
+ * async function main() {
17
+ * console.log(OrderReferrerTool);
18
+ * // load configuration for testnet
19
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
20
+ * // OrderReferrerTool (authentication required, PK is an environment variable with a private key)
21
+ * const pk: string = <string>process.env.PK;
22
+ * let orderTool = new OrderReferrerTool(config, pk);
23
+ * // Create a proxy instance to access the blockchain
24
+ * await orderTool.createProxyInstance();
25
+ * }
26
+ * main();
16
27
  *
17
28
  * @param {string} privateKey Private key of the wallet that executes the conditional orders.
18
29
  */
@@ -46,6 +57,21 @@ export default class OrderReferrerTool extends WriteAccessHandler {
46
57
  /**
47
58
  * All the orders in the order book for a given symbol that are currently open.
48
59
  * @param {string} symbol Symbol of the form ETH-USD-MATIC.
60
+ * @example
61
+ * import { OrderReferrerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
62
+ * async function main() {
63
+ * console.log(OrderReferrerTool);
64
+ * // Setup (authentication required, PK is an environment variable with a private key)
65
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
66
+ * const pk: string = <string>process.env.PK;
67
+ * let orderTool = new OrderReferrerTool(config, pk);
68
+ * await orderTool.createProxyInstance();
69
+ * // get all open orders
70
+ * let openOrders = await orderTool.getAllOpenOrders("ETH-USD-MATIC");
71
+ * console.log(openOrders);
72
+ * }
73
+ * main();
74
+ *
49
75
  * @returns Array with all open orders and their IDs.
50
76
  */
51
77
  public async getAllOpenOrders(symbol: string): Promise<[Order[], string[]]> {
@@ -56,6 +82,21 @@ export default class OrderReferrerTool extends WriteAccessHandler {
56
82
  /**
57
83
  * Total number of limit orders for this symbol, excluding those that have been cancelled/removed.
58
84
  * @param {string} symbol Symbol of the form ETH-USD-MATIC.
85
+ * @example
86
+ * import { OrderReferrerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
87
+ * async function main() {
88
+ * console.log(OrderReferrerTool);
89
+ * // Setup (authentication required, PK is an environment variable with a private key)
90
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
91
+ * const pk: string = <string>process.env.PK;
92
+ * let orderTool = new OrderReferrerTool(config, pk);
93
+ * await orderTool.createProxyInstance();
94
+ * // get all open orders
95
+ * let numberOfOrders = await orderTool.numberOfOpenOrders("ETH-USD-MATIC");
96
+ * console.log(numberOfOrders);
97
+ * }
98
+ * main();
99
+ *
59
100
  * @returns {number} Number of open orders.
60
101
  */
61
102
  public async numberOfOpenOrders(symbol: string): Promise<number> {
@@ -63,7 +104,8 @@ export default class OrderReferrerTool extends WriteAccessHandler {
63
104
  throw Error("no proxy contract initialized. Use createProxyInstance().");
64
105
  }
65
106
  const orderBookSC = this.getOrderBookContract(symbol);
66
- return await orderBookSC.numberOfOrderBookDigests();
107
+ let numOrders = await orderBookSC.numberOfOrderBookDigests();
108
+ return Number(numOrders);
67
109
  }
68
110
 
69
111
  /**
@@ -88,6 +130,21 @@ export default class OrderReferrerTool extends WriteAccessHandler {
88
130
  * @param {string} symbol Symbol of the form ETH-USD-MATIC.
89
131
  * @param {number} numElements Maximum number of orders to poll.
90
132
  * @param {string=} startAfter Optional order ID from where to start polling. Defaults to the first order.
133
+ * @example
134
+ * import { OrderReferrerTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
135
+ * async function main() {
136
+ * console.log(OrderReferrerTool);
137
+ * // Setup (authentication required, PK is an environment variable with a private key)
138
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
139
+ * const pk: string = <string>process.env.PK;
140
+ * let orderTool = new OrderReferrerTool(config, pk);
141
+ * await orderTool.createProxyInstance();
142
+ * // get all open orders
143
+ * let activeOrders = await orderTool.pollLimitOrders("ETH-USD-MATIC", 2);
144
+ * console.log(activeOrders);
145
+ * }
146
+ * main();
147
+ *
91
148
  * @returns Array of orders and corresponding order IDs
92
149
  */
93
150
  public async pollLimitOrders(symbol: string, numElements: number, startAfter?: string): Promise<[Order[], string[]]> {
@@ -29,8 +29,6 @@ import {
29
29
  DEFAULT_CONFIG_TESTNET_NAME,
30
30
  DEFAULT_CONFIG_TESTNET,
31
31
  ONE_64x64,
32
- PerpetualStateINITIALIZING,
33
- PerpetualStateINVALID,
34
32
  } from "./nodeSDKTypes";
35
33
  import { fromBytes4HexString, to4Chars, combineFlags, containsFlag } from "./utils";
36
34
  import {
@@ -132,10 +130,6 @@ export default class PerpetualDataHandler {
132
130
 
133
131
  for (let k = 0; k < perpetualIDs.length; k++) {
134
132
  let perp = await proxyContract.getPerpetual(perpetualIDs[k]);
135
- if (perp.state == PerpetualStateINVALID || perp.state == PerpetualStateINITIALIZING) {
136
- // only active perpetuals
137
- continue;
138
- }
139
133
  let base = fromBytes4HexString(perp.S2BaseCCY);
140
134
  let quote = fromBytes4HexString(perp.S2QuoteCCY);
141
135
  let base3 = fromBytes4HexString(perp.S3BaseCCY);
@@ -1,14 +0,0 @@
1
- import WriteAccessHandler from "./writeAccessHandler";
2
- import { NodeSDKConfig } from "./nodeSDKTypes";
3
- /**
4
- * LiquidatorTool
5
- * Methods to liquidate traders
6
- */
7
- export default class LiquidatorTool extends WriteAccessHandler {
8
- /**
9
- * Constructor
10
- * @param config configuration
11
- * @param privateKey private key of account that trades
12
- */
13
- constructor(config: NodeSDKConfig, privateKey: string);
14
- }
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const writeAccessHandler_1 = __importDefault(require("./writeAccessHandler"));
7
- /**
8
- * LiquidatorTool
9
- * Methods to liquidate traders
10
- */
11
- class LiquidatorTool extends writeAccessHandler_1.default {
12
- /**
13
- * Constructor
14
- * @param config configuration
15
- * @param privateKey private key of account that trades
16
- */
17
- constructor(config, privateKey) {
18
- super(config, privateKey);
19
- }
20
- }
21
- exports.default = LiquidatorTool;