@d8x/perpetuals-sdk 0.1.12 → 0.2.0

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.
Files changed (165) hide show
  1. package/dist/cjs/abi/testnet/IPerpetualManager.json +5215 -0
  2. package/dist/cjs/abi/testnet/LimitOrderBook.json +1075 -0
  3. package/dist/cjs/abi/zkevmTestnet/IPerpetualManager.json +5215 -0
  4. package/dist/cjs/abi/zkevmTestnet/LimitOrderBook.json +1075 -0
  5. package/dist/cjs/abi/zkevmTestnet/LimitOrderBookFactory.json +135 -0
  6. package/dist/cjs/accountTrade.js +441 -0
  7. package/dist/cjs/accountTrade.js.map +1 -0
  8. package/dist/{src → cjs}/brokerTool.js +31 -84
  9. package/dist/cjs/brokerTool.js.map +1 -0
  10. package/dist/cjs/config/defaultConfig.json +47 -0
  11. package/dist/cjs/config/mockSwap.json +4 -0
  12. package/dist/cjs/config/priceFeedConfig.json +104 -0
  13. package/dist/cjs/config/symbolList.json +13 -0
  14. package/dist/cjs/d8XMath.js.map +1 -0
  15. package/dist/cjs/index.js +29 -0
  16. package/dist/cjs/index.js.map +1 -0
  17. package/dist/cjs/liquidatorTool.js +287 -0
  18. package/dist/cjs/liquidatorTool.js.map +1 -0
  19. package/dist/{src → cjs}/liquidityProviderTool.js +12 -65
  20. package/dist/cjs/liquidityProviderTool.js.map +1 -0
  21. package/dist/{src → cjs}/marketData.js +52 -134
  22. package/dist/cjs/marketData.js.map +1 -0
  23. package/dist/{src → cjs}/nodeSDKTypes.d.ts +5 -5
  24. package/dist/cjs/nodeSDKTypes.js +64 -0
  25. package/dist/cjs/nodeSDKTypes.js.map +1 -0
  26. package/dist/{src → cjs}/orderReferrerTool.d.ts +12 -5
  27. package/dist/{src → cjs}/orderReferrerTool.js +114 -112
  28. package/dist/cjs/orderReferrerTool.js.map +1 -0
  29. package/dist/{src → cjs}/perpetualDataHandler.d.ts +1 -1
  30. package/dist/{src → cjs}/perpetualDataHandler.js +47 -109
  31. package/dist/cjs/perpetualDataHandler.js.map +1 -0
  32. package/dist/{src → cjs}/perpetualEventHandler.d.ts +3 -3
  33. package/dist/{src → cjs}/perpetualEventHandler.js +12 -74
  34. package/dist/cjs/perpetualEventHandler.js.map +1 -0
  35. package/dist/cjs/priceFeeds.js +466 -0
  36. package/dist/cjs/priceFeeds.js.map +1 -0
  37. package/dist/{src → cjs}/traderDigests.js +7 -43
  38. package/dist/cjs/traderDigests.js.map +1 -0
  39. package/dist/{src → cjs}/traderInterface.js +13 -66
  40. package/dist/cjs/traderInterface.js.map +1 -0
  41. package/dist/{src → cjs}/triangulator.js +2 -17
  42. package/dist/cjs/triangulator.js.map +1 -0
  43. package/dist/{src → cjs}/utils.js +3 -29
  44. package/dist/cjs/utils.js.map +1 -0
  45. package/dist/cjs/version.d.ts +1 -0
  46. package/dist/{src → cjs}/version.js +1 -1
  47. package/dist/cjs/version.js.map +1 -0
  48. package/dist/{src → cjs}/writeAccessHandler.js +12 -65
  49. package/dist/cjs/writeAccessHandler.js.map +1 -0
  50. package/dist/esm/abi/ERC20.json +288 -0
  51. package/dist/esm/abi/MockTokenSwap.json +186 -0
  52. package/dist/{abi/testnet → esm/abi/central-park}/IPerpetualManager.json +404 -214
  53. package/dist/{abi/testnet → esm/abi/central-park}/LimitOrderBook.json +197 -15
  54. package/dist/esm/abi/central-park/LimitOrderBookFactory.json +135 -0
  55. package/dist/esm/abi/testnet/IPerpetualManager.json +5215 -0
  56. package/dist/esm/abi/testnet/LimitOrderBook.json +1075 -0
  57. package/dist/esm/abi/testnet/LimitOrderBookFactory.json +135 -0
  58. package/dist/esm/abi/zkevmTestnet/IPerpetualManager.json +5215 -0
  59. package/dist/esm/abi/zkevmTestnet/LimitOrderBook.json +1075 -0
  60. package/dist/esm/abi/zkevmTestnet/LimitOrderBookFactory.json +135 -0
  61. package/dist/esm/accountTrade.d.ts +221 -0
  62. package/dist/{src → esm}/accountTrade.js +22 -93
  63. package/dist/esm/accountTrade.js.map +1 -0
  64. package/dist/esm/brokerTool.d.ts +318 -0
  65. package/dist/esm/brokerTool.js +572 -0
  66. package/dist/esm/brokerTool.js.map +1 -0
  67. package/dist/esm/config/defaultConfig.json +47 -0
  68. package/dist/esm/config/mockSwap.json +4 -0
  69. package/dist/esm/config/priceFeedConfig.json +104 -0
  70. package/dist/esm/config/symbolList.json +13 -0
  71. package/dist/esm/d8XMath.d.ts +122 -0
  72. package/dist/esm/d8XMath.js +247 -0
  73. package/dist/esm/d8XMath.js.map +1 -0
  74. package/{src/index.ts → dist/esm/index.d.ts} +1 -15
  75. package/dist/esm/index.js +16 -0
  76. package/dist/esm/index.js.map +1 -0
  77. package/dist/esm/liquidatorTool.d.ts +158 -0
  78. package/dist/{src → esm}/liquidatorTool.js +10 -65
  79. package/dist/esm/liquidatorTool.js.map +1 -0
  80. package/dist/esm/liquidityProviderTool.d.ts +126 -0
  81. package/dist/esm/liquidityProviderTool.js +218 -0
  82. package/dist/esm/liquidityProviderTool.js.map +1 -0
  83. package/dist/esm/marketData.d.ts +309 -0
  84. package/dist/esm/marketData.js +1007 -0
  85. package/dist/esm/marketData.js.map +1 -0
  86. package/dist/esm/nodeSDKTypes.d.ts +266 -0
  87. package/dist/esm/nodeSDKTypes.js +60 -0
  88. package/dist/esm/nodeSDKTypes.js.map +1 -0
  89. package/dist/esm/orderReferrerTool.d.ts +196 -0
  90. package/dist/esm/orderReferrerTool.js +491 -0
  91. package/dist/esm/orderReferrerTool.js.map +1 -0
  92. package/dist/esm/perpetualDataHandler.d.ts +220 -0
  93. package/dist/esm/perpetualDataHandler.js +1060 -0
  94. package/dist/esm/perpetualDataHandler.js.map +1 -0
  95. package/dist/esm/perpetualEventHandler.d.ts +179 -0
  96. package/dist/esm/perpetualEventHandler.js +435 -0
  97. package/dist/esm/perpetualEventHandler.js.map +1 -0
  98. package/dist/esm/priceFeeds.d.ts +115 -0
  99. package/dist/{src → esm}/priceFeeds.js +16 -83
  100. package/dist/esm/priceFeeds.js.map +1 -0
  101. package/dist/esm/traderDigests.d.ts +21 -0
  102. package/dist/esm/traderDigests.js +80 -0
  103. package/dist/esm/traderDigests.js.map +1 -0
  104. package/dist/esm/traderInterface.d.ts +79 -0
  105. package/dist/esm/traderInterface.js +196 -0
  106. package/dist/esm/traderInterface.js.map +1 -0
  107. package/dist/esm/triangulator.d.ts +27 -0
  108. package/dist/esm/triangulator.js +110 -0
  109. package/dist/esm/triangulator.js.map +1 -0
  110. package/dist/esm/utils.d.ts +59 -0
  111. package/dist/esm/utils.js +138 -0
  112. package/dist/esm/utils.js.map +1 -0
  113. package/dist/esm/version.d.ts +1 -0
  114. package/dist/esm/version.js +2 -0
  115. package/dist/esm/version.js.map +1 -0
  116. package/dist/esm/writeAccessHandler.d.ts +50 -0
  117. package/dist/esm/writeAccessHandler.js +157 -0
  118. package/dist/esm/writeAccessHandler.js.map +1 -0
  119. package/package.json +16 -26
  120. package/dist/bundle.js +0 -36793
  121. package/dist/config/defaultConfig.json +0 -47
  122. package/dist/config/mockSwap.json +0 -4
  123. package/dist/config/priceFeedConfig.json +0 -104
  124. package/dist/config/symbolList.json +0 -13
  125. package/dist/src/index.js +0 -45
  126. package/dist/src/nodeSDKTypes.js +0 -115
  127. package/dist/src/version.d.ts +0 -1
  128. package/module.d.ts +0 -1
  129. package/src/accountTrade.ts +0 -392
  130. package/src/brokerTool.ts +0 -507
  131. package/src/d8XMath.ts +0 -319
  132. package/src/liquidatorTool.ts +0 -258
  133. package/src/liquidityProviderTool.ts +0 -186
  134. package/src/marketData.ts +0 -946
  135. package/src/nodeSDKTypes.ts +0 -293
  136. package/src/orderReferrerTool.ts +0 -389
  137. package/src/perpetualDataHandler.ts +0 -1061
  138. package/src/perpetualEventHandler.ts +0 -455
  139. package/src/priceFeeds.ts +0 -381
  140. package/src/traderDigests.ts +0 -91
  141. package/src/traderInterface.ts +0 -159
  142. package/src/triangulator.ts +0 -105
  143. package/src/utils.ts +0 -134
  144. package/src/version.ts +0 -1
  145. package/src/writeAccessHandler.ts +0 -127
  146. /package/dist/{abi → cjs/abi}/ERC20.json +0 -0
  147. /package/dist/{abi → cjs/abi}/MockTokenSwap.json +0 -0
  148. /package/dist/{abi → cjs/abi}/central-park/IPerpetualManager.json +0 -0
  149. /package/dist/{abi → cjs/abi}/central-park/LimitOrderBook.json +0 -0
  150. /package/dist/{abi → cjs/abi}/central-park/LimitOrderBookFactory.json +0 -0
  151. /package/dist/{abi → cjs/abi}/testnet/LimitOrderBookFactory.json +0 -0
  152. /package/dist/{src → cjs}/accountTrade.d.ts +0 -0
  153. /package/dist/{src → cjs}/brokerTool.d.ts +0 -0
  154. /package/dist/{src → cjs}/d8XMath.d.ts +0 -0
  155. /package/dist/{src → cjs}/d8XMath.js +0 -0
  156. /package/dist/{src → cjs}/index.d.ts +0 -0
  157. /package/dist/{src → cjs}/liquidatorTool.d.ts +0 -0
  158. /package/dist/{src → cjs}/liquidityProviderTool.d.ts +0 -0
  159. /package/dist/{src → cjs}/marketData.d.ts +0 -0
  160. /package/dist/{src → cjs}/priceFeeds.d.ts +0 -0
  161. /package/dist/{src → cjs}/traderDigests.d.ts +0 -0
  162. /package/dist/{src → cjs}/traderInterface.d.ts +0 -0
  163. /package/dist/{src → cjs}/triangulator.d.ts +0 -0
  164. /package/dist/{src → cjs}/utils.d.ts +0 -0
  165. /package/dist/{src → cjs}/writeAccessHandler.d.ts +0 -0
@@ -0,0 +1,135 @@
1
+ [
2
+ {
3
+ "anonymous": false,
4
+ "inputs": [
5
+ {
6
+ "indexed": true,
7
+ "internalType": "address",
8
+ "name": "previousOwner",
9
+ "type": "address"
10
+ },
11
+ {
12
+ "indexed": true,
13
+ "internalType": "address",
14
+ "name": "newOwner",
15
+ "type": "address"
16
+ }
17
+ ],
18
+ "name": "OwnershipTransferred",
19
+ "type": "event"
20
+ },
21
+ {
22
+ "anonymous": false,
23
+ "inputs": [
24
+ {
25
+ "indexed": true,
26
+ "internalType": "uint24",
27
+ "name": "perpetualId",
28
+ "type": "uint24"
29
+ },
30
+ {
31
+ "indexed": false,
32
+ "internalType": "address",
33
+ "name": "perpManagerAddress",
34
+ "type": "address"
35
+ },
36
+ {
37
+ "indexed": false,
38
+ "internalType": "address",
39
+ "name": "limitOrderBookAddress",
40
+ "type": "address"
41
+ }
42
+ ],
43
+ "name": "PerpetualLimitOrderBookDeployed",
44
+ "type": "event"
45
+ },
46
+ {
47
+ "inputs": [
48
+ {
49
+ "internalType": "address",
50
+ "name": "_perpetualManagerAddr",
51
+ "type": "address"
52
+ },
53
+ {
54
+ "internalType": "uint24",
55
+ "name": "_perpetualId",
56
+ "type": "uint24"
57
+ }
58
+ ],
59
+ "name": "deployLimitOrderBookProxy",
60
+ "outputs": [],
61
+ "stateMutability": "nonpayable",
62
+ "type": "function"
63
+ },
64
+ {
65
+ "inputs": [
66
+ {
67
+ "internalType": "uint24",
68
+ "name": "_perpetualId",
69
+ "type": "uint24"
70
+ }
71
+ ],
72
+ "name": "getOrderBookAddress",
73
+ "outputs": [
74
+ {
75
+ "internalType": "address",
76
+ "name": "",
77
+ "type": "address"
78
+ }
79
+ ],
80
+ "stateMutability": "view",
81
+ "type": "function"
82
+ },
83
+ {
84
+ "inputs": [
85
+ {
86
+ "internalType": "uint24",
87
+ "name": "",
88
+ "type": "uint24"
89
+ }
90
+ ],
91
+ "name": "orderBooks",
92
+ "outputs": [
93
+ {
94
+ "internalType": "address",
95
+ "name": "",
96
+ "type": "address"
97
+ }
98
+ ],
99
+ "stateMutability": "view",
100
+ "type": "function"
101
+ },
102
+ {
103
+ "inputs": [],
104
+ "name": "owner",
105
+ "outputs": [
106
+ {
107
+ "internalType": "address",
108
+ "name": "",
109
+ "type": "address"
110
+ }
111
+ ],
112
+ "stateMutability": "view",
113
+ "type": "function"
114
+ },
115
+ {
116
+ "inputs": [],
117
+ "name": "renounceOwnership",
118
+ "outputs": [],
119
+ "stateMutability": "nonpayable",
120
+ "type": "function"
121
+ },
122
+ {
123
+ "inputs": [
124
+ {
125
+ "internalType": "address",
126
+ "name": "newOwner",
127
+ "type": "address"
128
+ }
129
+ ],
130
+ "name": "transferOwnership",
131
+ "outputs": [],
132
+ "stateMutability": "nonpayable",
133
+ "type": "function"
134
+ }
135
+ ]
@@ -0,0 +1,221 @@
1
+ import { ethers } from "ethers";
2
+ import { NodeSDKConfig, Order, OrderResponse, PerpetualStaticInfo, PriceFeedSubmission } from "./nodeSDKTypes";
3
+ import TraderDigests from "./traderDigests";
4
+ import WriteAccessHandler from "./writeAccessHandler";
5
+ /**
6
+ * Functions to create, submit and cancel orders on the exchange.
7
+ * This class requires a private key and executes smart-contract interactions that
8
+ * require gas-payments.
9
+ * @extends WriteAccessHandler
10
+ */
11
+ export default class AccountTrade extends WriteAccessHandler {
12
+ protected digestTool: TraderDigests;
13
+ /**
14
+ * Constructor
15
+ * @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.
16
+ * readSDKConfig.
17
+ * @example
18
+ * import { AccountTrade, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
19
+ * async function main() {
20
+ * console.log(AccountTrade);
21
+ * // load configuration for testnet
22
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
23
+ * // AccountTrade (authentication required, PK is an environment variable with a private key)
24
+ * const pk: string = <string>process.env.PK;
25
+ * let accTrade = new AccountTrade(config, pk);
26
+ * // Create a proxy instance to access the blockchain
27
+ * await accTrade.createProxyInstance();
28
+ * }
29
+ * main();
30
+ *
31
+ * @param {string} privateKey Private key of account that trades.
32
+ */
33
+ constructor(config: NodeSDKConfig, privateKey: string);
34
+ /**
35
+ * Cancels an existing order on the exchange.
36
+ * @param {string} symbol Symbol of the form ETH-USD-MATIC.
37
+ * @param {string} orderId ID of the order to be cancelled.
38
+ * @example
39
+ * import { AccountTrade, PerpetualDataHandler, Order } from '@d8x/perpetuals-sdk';
40
+ * async function main() {
41
+ * console.log(AccountTrade);
42
+ * // setup (authentication required, PK is an environment variable with a private key)
43
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
44
+ * const pk: string = <string>process.env.PK;
45
+ * let accTrade = new AccountTrade(config, pk);
46
+ * await accTrade.createProxyInstance();
47
+ * // cancel order
48
+ * let cancelTransaction = accTrade.cancelOrder("MATIC-USD-MATIC",
49
+ * "0x4639061a58dcf34f4c9c703f49f1cb00d6a4fba490d62c0eb4a4fb06e1c76c19")
50
+ * console.log(cancelTransaction);
51
+ * }
52
+ * main();
53
+ * @returns {ContractTransaction} Contract Transaction (containing events).
54
+ */
55
+ cancelOrder(symbol: string, orderId: string, submission?: PriceFeedSubmission): Promise<ethers.ContractTransaction>;
56
+ /**
57
+ * Submits an order to the exchange.
58
+ * @param {Order} order Order structure. As a minimum the structure needs to
59
+ * specify symbol, side, type and quantity.
60
+ * @example
61
+ * import { AccountTrade, PerpetualDataHandler, Order } from '@d8x/perpetuals-sdk';
62
+ * async function main() {
63
+ * console.log(AccountTrade);
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 accTrade = new AccountTrade(config, pk);
68
+ * await accTrade.createProxyInstance();
69
+ * // set allowance
70
+ * await accTrade.setAllowance("MATIC");
71
+ * // set an order
72
+ * let order: Order = {
73
+ * symbol: "MATIC-USD-MATIC",
74
+ * side: "BUY",
75
+ * type: "MARKET",
76
+ * quantity: 100,
77
+ * leverage: 2,
78
+ * timestamp: Date.now()/1000,
79
+ * };
80
+ * let orderTransaction = await accTrade.order(order);
81
+ * console.log(orderTransaction);
82
+ * }
83
+ * main();
84
+ *
85
+ * @example
86
+ * import { AccountTrade, PerpetualDataHandler, Order } from '@d8x/perpetuals-sdk';
87
+ * async function main() {
88
+ * console.log(AccountTrade);
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 accTrade = new AccountTrade(config, pk);
93
+ * await accTrade.createProxyInstance();
94
+ * // set allowance
95
+ * await accTrade.setAllowance("MATIC");
96
+ * // set an order
97
+ * let order: Order = {
98
+ * symbol: "MATIC-USD-MATIC",
99
+ * side: "BUY",
100
+ * type: "LIMIT",
101
+ * limitPrice: 1,
102
+ * quantity: 5,
103
+ * leverage: 2,
104
+ * timestamp: Date.now() / 1000,
105
+ * deadline: Date.now() / 1000 + 8*60*60, // order expires 8 hours from now
106
+ * };
107
+ * let orderTransaction = await accTrade.order(order);
108
+ * console.log(orderTransaction);
109
+ * }
110
+ * main();
111
+ *
112
+ * @returns {ContractTransaction} Contract Transaction (containing events).
113
+ */
114
+ order(order: Order, parentChildIds?: [string, string]): Promise<OrderResponse>;
115
+ /**
116
+ * Fee charged by the exchange for trading any perpetual on a given pool.
117
+ * It accounts for the current trader's fee tier (based on the trader's D8X balance and trading volume).
118
+ * If trading with a broker, it also accounts for the selected broker's fee tier.
119
+ * Note that this result only includes exchange fees, additional broker fees are not included.
120
+ * @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
121
+ * @param {string=} brokerAddr Optional address of a broker this trader may use to trade under.
122
+ * @example
123
+ * import { AccountTrade, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
124
+ * async function main() {
125
+ * console.log(AccountTrade);
126
+ * // setup (authentication required, PK is an environment variable with a private key)
127
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
128
+ * const pk: string = <string>process.env.PK;
129
+ * let accTrade = new AccountTrade(config, pk);
130
+ * await accTrade.createProxyInstance();
131
+ * // query exchange fee
132
+ * let fees = await accTrade.queryExchangeFee("MATIC");
133
+ * console.log(fees);
134
+ * }
135
+ * main();
136
+ *
137
+ * @returns Exchange fee, in decimals (i.e. 0.1% is 0.001).
138
+ */
139
+ queryExchangeFee(poolSymbolName: string, brokerAddr?: string): Promise<number>;
140
+ /**
141
+ * Exponentially weighted EMA of the total USD trading volume of all trades performed by this trader.
142
+ * The weights are chosen so that in average this coincides with the 30 day volume.
143
+ * @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
144
+ * @example
145
+ * import { AccountTrade, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
146
+ * async function main() {
147
+ * console.log(AccountTrade);
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 accTrade = new AccountTrade(config, pk);
152
+ * await accTrade.createProxyInstance();
153
+ * // query 30 day volume
154
+ * let vol = await accTrade.getCurrentTraderVolume("MATIC");
155
+ * console.log(vol);
156
+ * }
157
+ * main();
158
+ *
159
+ * @returns {number} Current trading volume for this trader, in USD.
160
+ */
161
+ getCurrentTraderVolume(poolSymbolName: string): Promise<number>;
162
+ /**
163
+ *
164
+ * @param symbol Symbol of the form ETH-USD-MATIC.
165
+ * @example
166
+ * import { AccountTrade, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
167
+ * async function main() {
168
+ * console.log(AccountTrade);
169
+ * // setup (authentication required, PK is an environment variable with a private key)
170
+ * const config = PerpetualDataHandler.readSDKConfig("testnet");
171
+ * const pk: string = <string>process.env.PK;
172
+ * let accTrade = new AccountTrade(config, pk);
173
+ * await accTrade.createProxyInstance();
174
+ * // get order IDs
175
+ * let orderIds = await accTrade.getOrderIds("MATIC-USD-MATIC");
176
+ * console.log(orderIds);
177
+ * }
178
+ * main();
179
+ *
180
+ * @returns {string[]} Array of Ids for all the orders currently open by this trader.
181
+ */
182
+ getOrderIds(symbol: string): Promise<string[]>;
183
+ /**
184
+ * Static order function
185
+ * @param order order type (not SmartContractOrder but Order)
186
+ * @param traderAddr trader address
187
+ * @param symbolToPerpetualMap maps the symbol (MATIC-USD-MATIC)-type format to the perpetual id
188
+ * @param proxyContract contract instance of D8X perpetuals
189
+ * @param orderBookContract order book contract or null
190
+ * @param chainId chain Id of network
191
+ * @param signer instance of ethers wallet that can write
192
+ * @param gasLimit gas limit to be used for the trade
193
+ * @returns [transaction hash, order id]
194
+ * @ignore
195
+ */
196
+ _order(order: Order, traderAddr: string, symbolToPerpetualMap: Map<string, PerpetualStaticInfo>, proxyContract: ethers.Contract, orderBookContract: ethers.Contract, chainId: number, signer: ethers.Signer, gasLimit: number, parentChildIds?: [string, string]): Promise<OrderResponse>;
197
+ protected _cancelOrder(symbol: string, orderId: string, orderBookContract: ethers.Contract | null, submission?: PriceFeedSubmission): Promise<ethers.ContractTransaction>;
198
+ /**
199
+ * Creates a signature
200
+ * @param order smart-contract-type order
201
+ * @param chainId chainId of network
202
+ * @param isNewOrder true unless we cancel
203
+ * @param signer ethereum-type wallet
204
+ * @param proxyAddress address of the contract
205
+ * @returns signature as string
206
+ * @ignore
207
+ */
208
+ private _createSignature;
209
+ /**
210
+ *
211
+ * @param {string} symbol Symbol of the form ETH-USD-MATIC.
212
+ * @param {number} amount How much collateral to add, in units of collateral currency, e.g. MATIC
213
+ */
214
+ addCollateral(symbol: string, amount: number, submission?: PriceFeedSubmission): Promise<ethers.ContractTransaction>;
215
+ /**
216
+ *
217
+ * @param {string} symbol Symbol of the form ETH-USD-MATIC.
218
+ * @param {number} amount How much collateral to remove, in units of collateral currency, e.g. MATIC
219
+ */
220
+ removeCollateral(symbol: string, amount: number, submission?: PriceFeedSubmission): Promise<ethers.ContractTransaction>;
221
+ }
@@ -1,82 +1,11 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
- var __generator = (this && this.__generator) || function (thisArg, body) {
27
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
- function verb(n) { return function (v) { return step([n, v]); }; }
30
- function step(op) {
31
- if (f) throw new TypeError("Generator is already executing.");
32
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
- if (y = 0, t) op = [op[0] & 2, t.value];
35
- switch (op[0]) {
36
- case 0: case 1: t = op; break;
37
- case 4: _.label++; return { value: op[1], done: false };
38
- case 5: _.label++; y = op[1]; op = [0]; continue;
39
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
- default:
41
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
- if (t[2]) _.ops.pop();
46
- _.trys.pop(); continue;
47
- }
48
- op = body.call(thisArg, _);
49
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
- }
52
- };
53
- var __read = (this && this.__read) || function (o, n) {
54
- var m = typeof Symbol === "function" && o[Symbol.iterator];
55
- if (!m) return o;
56
- var i = m.call(o), r, ar = [], e;
57
- try {
58
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
59
- }
60
- catch (error) { e = { error: error }; }
61
- finally {
62
- try {
63
- if (r && !r.done && (m = i["return"])) m.call(i);
64
- }
65
- finally { if (e) throw e.error; }
66
- }
67
- return ar;
68
- };
69
- var __importDefault = (this && this.__importDefault) || function (mod) {
70
- return (mod && mod.__esModule) ? mod : { "default": mod };
71
- };
72
- Object.defineProperty(exports, "__esModule", { value: true });
73
- var d8XMath_1 = require("./d8XMath");
74
- var marketData_1 = __importDefault(require("./marketData"));
75
- var nodeSDKTypes_1 = require("./nodeSDKTypes");
76
- var perpetualDataHandler_1 = __importDefault(require("./perpetualDataHandler"));
77
- var traderDigests_1 = __importDefault(require("./traderDigests"));
78
- var writeAccessHandler_1 = __importDefault(require("./writeAccessHandler"));
79
- var buffer_1 = require("buffer");
1
+ import { __awaiter, __extends, __generator, __read } from "tslib";
2
+ import { ABK64x64ToFloat, floatToABK64x64 } from "./d8XMath";
3
+ import MarketData from "./marketData";
4
+ import { ZERO_ADDRESS, } from "./nodeSDKTypes";
5
+ import PerpetualDataHandler from "./perpetualDataHandler";
6
+ import TraderDigests from "./traderDigests";
7
+ import WriteAccessHandler from "./writeAccessHandler";
8
+ import { Buffer } from "buffer";
80
9
  /**
81
10
  * Functions to create, submit and cancel orders on the exchange.
82
11
  * This class requires a private key and executes smart-contract interactions that
@@ -107,7 +36,7 @@ var AccountTrade = /** @class */ (function (_super) {
107
36
  */
108
37
  function AccountTrade(config, privateKey) {
109
38
  var _this = _super.call(this, config, privateKey) || this;
110
- _this.digestTool = new traderDigests_1.default();
39
+ _this.digestTool = new TraderDigests();
111
40
  return _this;
112
41
  }
113
42
  /**
@@ -221,7 +150,7 @@ var AccountTrade = /** @class */ (function (_super) {
221
150
  if (this.proxyContract == null || this.signer == null) {
222
151
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
223
152
  }
224
- minSize = perpetualDataHandler_1.default._getMinimalPositionSize(order.symbol, this.symbolToPerpStaticInfo);
153
+ minSize = PerpetualDataHandler._getMinimalPositionSize(order.symbol, this.symbolToPerpStaticInfo);
225
154
  if (Math.abs(order.quantity) < minSize) {
226
155
  throw Error("order size too small");
227
156
  }
@@ -268,9 +197,9 @@ var AccountTrade = /** @class */ (function (_super) {
268
197
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
269
198
  }
270
199
  if (typeof brokerAddr == "undefined") {
271
- brokerAddr = nodeSDKTypes_1.ZERO_ADDRESS;
200
+ brokerAddr = ZERO_ADDRESS;
272
201
  }
273
- poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
202
+ poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
274
203
  return [4 /*yield*/, this.proxyContract.queryExchangeFee(poolId, this.traderAddr, brokerAddr)];
275
204
  case 1:
276
205
  feeTbps = _a.sent();
@@ -309,11 +238,11 @@ var AccountTrade = /** @class */ (function (_super) {
309
238
  if (this.proxyContract == null || this.signer == null) {
310
239
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
311
240
  }
312
- poolId = writeAccessHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
241
+ poolId = WriteAccessHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
313
242
  return [4 /*yield*/, this.proxyContract.getCurrentTraderVolume(poolId, this.traderAddr)];
314
243
  case 1:
315
244
  volume = _a.sent();
316
- return [2 /*return*/, (0, d8XMath_1.ABK64x64ToFloat)(volume)];
245
+ return [2 /*return*/, ABK64x64ToFloat(volume)];
317
246
  }
318
247
  });
319
248
  });
@@ -348,7 +277,7 @@ var AccountTrade = /** @class */ (function (_super) {
348
277
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
349
278
  }
350
279
  orderBookContract = this.getOrderBookContract(symbol);
351
- return [4 /*yield*/, marketData_1.default.orderIdsOfTrader(this.traderAddr, orderBookContract)];
280
+ return [4 /*yield*/, MarketData.orderIdsOfTrader(this.traderAddr, orderBookContract)];
352
281
  case 1: return [2 /*return*/, _a.sent()];
353
282
  }
354
283
  });
@@ -391,7 +320,7 @@ var AccountTrade = /** @class */ (function (_super) {
391
320
  };
392
321
  AccountTrade.prototype._cancelOrder = function (symbol, orderId, orderBookContract, submission) {
393
322
  return __awaiter(this, void 0, void 0, function () {
394
- var scOrder, _a, signature, digest;
323
+ var scOrder, _a, signature;
395
324
  return __generator(this, function (_b) {
396
325
  switch (_b.label) {
397
326
  case 0:
@@ -408,7 +337,7 @@ var AccountTrade = /** @class */ (function (_super) {
408
337
  scOrder = _b.sent();
409
338
  return [4 /*yield*/, this._createSignature(scOrder, this.chainId, false, this.signer, this.proxyAddr)];
410
339
  case 4:
411
- _a = __read.apply(void 0, [_b.sent(), 2]), signature = _a[0], digest = _a[1];
340
+ _a = __read.apply(void 0, [_b.sent(), 1]), signature = _a[0];
412
341
  return [4 /*yield*/, orderBookContract.cancelOrder(orderId, signature, submission.priceFeedVaas, submission.timestamps, {
413
342
  value: submission.timestamps.length * this.PRICE_UPDATE_FEE_GWEI,
414
343
  })];
@@ -435,7 +364,7 @@ var AccountTrade = /** @class */ (function (_super) {
435
364
  case 0: return [4 /*yield*/, this.digestTool.createDigest(order, chainId, isNewOrder, proxyAddress)];
436
365
  case 1:
437
366
  digest = _a.sent();
438
- digestBuffer = buffer_1.Buffer.from(digest.substring(2, digest.length), "hex");
367
+ digestBuffer = Buffer.from(digest.substring(2, digest.length), "hex");
439
368
  return [4 /*yield*/, signer.signMessage(digestBuffer)];
440
369
  case 2:
441
370
  signature = _a.sent();
@@ -459,7 +388,7 @@ var AccountTrade = /** @class */ (function (_super) {
459
388
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
460
389
  }
461
390
  perpId = this.getPerpIdFromSymbol(symbol);
462
- fAmountCC = (0, d8XMath_1.floatToABK64x64)(amount);
391
+ fAmountCC = floatToABK64x64(amount);
463
392
  if (!(submission == undefined)) return [3 /*break*/, 2];
464
393
  return [4 /*yield*/, this.fetchLatestFeedPriceInfo(symbol)];
465
394
  case 1:
@@ -489,7 +418,7 @@ var AccountTrade = /** @class */ (function (_super) {
489
418
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
490
419
  }
491
420
  perpId = this.getPerpIdFromSymbol(symbol);
492
- fAmountCC = (0, d8XMath_1.floatToABK64x64)(amount);
421
+ fAmountCC = floatToABK64x64(amount);
493
422
  if (!(submission == undefined)) return [3 /*break*/, 2];
494
423
  return [4 /*yield*/, this.fetchLatestFeedPriceInfo(symbol)];
495
424
  case 1:
@@ -505,6 +434,6 @@ var AccountTrade = /** @class */ (function (_super) {
505
434
  });
506
435
  };
507
436
  return AccountTrade;
508
- }(writeAccessHandler_1.default));
509
- exports.default = AccountTrade;
437
+ }(WriteAccessHandler));
438
+ export default AccountTrade;
510
439
  //# sourceMappingURL=accountTrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountTrade.js","sourceRoot":"","sources":["../../src/accountTrade.ts"],"names":[],"mappings":"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"}