@d8x/perpetuals-sdk 1.3.2 → 1.3.4

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 (171) hide show
  1. package/dist/cjs/abi/BeaconProxy.json +71 -0
  2. package/dist/cjs/abi/Maintainer.json +774 -0
  3. package/dist/cjs/abi/MockToken.json +347 -0
  4. package/dist/cjs/abi/UUPSUpgradeable.json +104 -0
  5. package/dist/cjs/abi/WeETH.json +310 -0
  6. package/dist/cjs/abi-zkevm/LimitOrderBook.json +910 -0
  7. package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +236 -0
  8. package/dist/cjs/config/priceFeedConfig.json +30 -0
  9. package/dist/cjs/config/symbolList.json +6 -1
  10. package/dist/cjs/contracts/BeaconProxy.d.ts +63 -0
  11. package/dist/cjs/contracts/BeaconProxy.js +3 -0
  12. package/dist/cjs/contracts/BeaconProxy.js.map +1 -0
  13. package/dist/cjs/contracts/Maintainer.d.ts +799 -0
  14. package/dist/cjs/contracts/Maintainer.js +3 -0
  15. package/dist/cjs/contracts/Maintainer.js.map +1 -0
  16. package/dist/cjs/contracts/MockToken.d.ts +263 -0
  17. package/dist/cjs/contracts/MockToken.js +3 -0
  18. package/dist/cjs/contracts/MockToken.js.map +1 -0
  19. package/dist/cjs/contracts/UUPSUpgradeable.d.ts +118 -0
  20. package/dist/cjs/contracts/UUPSUpgradeable.js +3 -0
  21. package/dist/cjs/contracts/UUPSUpgradeable.js.map +1 -0
  22. package/dist/cjs/contracts/WeETH.d.ts +503 -0
  23. package/dist/cjs/contracts/WeETH.js +3 -0
  24. package/dist/cjs/contracts/WeETH.js.map +1 -0
  25. package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +61 -0
  26. package/dist/cjs/contracts/factories/BeaconProxy__factory.js +89 -0
  27. package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +1 -0
  28. package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +609 -0
  29. package/dist/cjs/contracts/factories/Maintainer__factory.js +792 -0
  30. package/dist/cjs/contracts/factories/Maintainer__factory.js.map +1 -0
  31. package/dist/{esm/contracts/factories/PerpStorage__factory.d.ts → cjs/contracts/factories/MockToken__factory.d.ts} +128 -115
  32. package/dist/cjs/contracts/factories/MockToken__factory.js +365 -0
  33. package/dist/cjs/contracts/factories/MockToken__factory.js.map +1 -0
  34. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
  35. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +122 -0
  36. package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
  37. package/dist/cjs/contracts/factories/WeETH__factory.d.ts +545 -0
  38. package/dist/cjs/contracts/factories/WeETH__factory.js +721 -0
  39. package/dist/cjs/contracts/factories/WeETH__factory.js.map +1 -0
  40. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
  41. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +5324 -0
  42. package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
  43. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
  44. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +254 -0
  45. package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
  46. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
  47. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +928 -0
  48. package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
  49. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
  50. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +456 -0
  51. package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
  52. package/dist/cjs/contracts/factories/lean0/index.d.ts +4 -0
  53. package/dist/cjs/contracts/factories/lean0/index.js +15 -0
  54. package/dist/cjs/contracts/factories/lean0/index.js.map +1 -0
  55. package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +2821 -0
  56. package/dist/cjs/contracts/lean0/IPerpetualManager.js +3 -0
  57. package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +1 -0
  58. package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +533 -0
  59. package/dist/cjs/contracts/lean0/LimitOrderBook.js +3 -0
  60. package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +1 -0
  61. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
  62. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +3 -0
  63. package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
  64. package/dist/cjs/contracts/lean0/ShareToken.d.ts +320 -0
  65. package/dist/cjs/contracts/lean0/ShareToken.js +3 -0
  66. package/dist/cjs/contracts/lean0/ShareToken.js.map +1 -0
  67. package/dist/cjs/contracts/lean0/index.d.ts +4 -0
  68. package/dist/cjs/contracts/lean0/index.js +3 -0
  69. package/dist/cjs/contracts/lean0/index.js.map +1 -0
  70. package/dist/cjs/orderExecutorTool.d.ts +2 -2
  71. package/dist/cjs/orderExecutorTool.js +30 -59
  72. package/dist/cjs/orderExecutorTool.js.map +1 -1
  73. package/dist/cjs/version.d.ts +1 -1
  74. package/dist/cjs/version.js +1 -1
  75. package/dist/cjs/writeAccessHandler.js +6 -6
  76. package/dist/cjs/writeAccessHandler.js.map +1 -1
  77. package/dist/esm/abi/BeaconProxy.json +71 -0
  78. package/dist/esm/abi/Maintainer.json +774 -0
  79. package/dist/esm/abi/MockToken.json +347 -0
  80. package/dist/esm/abi/UUPSUpgradeable.json +104 -0
  81. package/dist/esm/abi/WeETH.json +310 -0
  82. package/dist/esm/abi/lean0/IPerpetualManager.json +5306 -0
  83. package/dist/esm/abi/lean0/LimitOrderBook.json +910 -0
  84. package/dist/esm/abi/lean0/LimitOrderBookFactory.json +236 -0
  85. package/dist/esm/abi/lean0/ShareToken.json +438 -0
  86. package/dist/esm/abi-zkevm/LimitOrderBook.json +910 -0
  87. package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +236 -0
  88. package/dist/esm/config/priceFeedConfig.json +30 -0
  89. package/dist/esm/config/symbolList.json +6 -1
  90. package/dist/esm/contracts/BeaconProxy.d.ts +63 -0
  91. package/dist/esm/contracts/BeaconProxy.js +2 -0
  92. package/dist/esm/contracts/BeaconProxy.js.map +1 -0
  93. package/dist/esm/contracts/Maintainer.d.ts +799 -0
  94. package/dist/esm/contracts/Maintainer.js +2 -0
  95. package/dist/esm/contracts/Maintainer.js.map +1 -0
  96. package/dist/esm/contracts/MockToken.d.ts +263 -0
  97. package/dist/esm/contracts/MockToken.js +2 -0
  98. package/dist/esm/contracts/MockToken.js.map +1 -0
  99. package/dist/esm/contracts/UUPSUpgradeable.d.ts +118 -0
  100. package/dist/esm/contracts/UUPSUpgradeable.js +2 -0
  101. package/dist/esm/contracts/UUPSUpgradeable.js.map +1 -0
  102. package/dist/esm/contracts/WeETH.d.ts +503 -0
  103. package/dist/esm/contracts/WeETH.js +2 -0
  104. package/dist/esm/contracts/WeETH.js.map +1 -0
  105. package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +61 -0
  106. package/dist/esm/contracts/factories/BeaconProxy__factory.js +85 -0
  107. package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +1 -0
  108. package/dist/esm/contracts/factories/Maintainer__factory.d.ts +609 -0
  109. package/dist/esm/contracts/factories/Maintainer__factory.js +788 -0
  110. package/dist/esm/contracts/factories/Maintainer__factory.js.map +1 -0
  111. package/dist/esm/contracts/factories/MockToken__factory.d.ts +273 -0
  112. package/dist/esm/contracts/factories/{PerpStorage__factory.js → MockToken__factory.js} +139 -128
  113. package/dist/esm/contracts/factories/MockToken__factory.js.map +1 -0
  114. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
  115. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +118 -0
  116. package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
  117. package/dist/esm/contracts/factories/WeETH__factory.d.ts +545 -0
  118. package/dist/esm/contracts/factories/WeETH__factory.js +717 -0
  119. package/dist/esm/contracts/factories/WeETH__factory.js.map +1 -0
  120. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
  121. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +5320 -0
  122. package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
  123. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
  124. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +250 -0
  125. package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
  126. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
  127. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +924 -0
  128. package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
  129. package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
  130. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +452 -0
  131. package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
  132. package/dist/esm/contracts/factories/lean0/index.d.ts +4 -0
  133. package/dist/esm/contracts/factories/lean0/index.js +8 -0
  134. package/dist/esm/contracts/factories/lean0/index.js.map +1 -0
  135. package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +2821 -0
  136. package/dist/esm/contracts/lean0/IPerpetualManager.js +2 -0
  137. package/dist/esm/contracts/lean0/IPerpetualManager.js.map +1 -0
  138. package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +533 -0
  139. package/dist/esm/contracts/lean0/LimitOrderBook.js +2 -0
  140. package/dist/esm/contracts/lean0/LimitOrderBook.js.map +1 -0
  141. package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
  142. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +2 -0
  143. package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
  144. package/dist/esm/contracts/lean0/ShareToken.d.ts +320 -0
  145. package/dist/esm/contracts/lean0/ShareToken.js +2 -0
  146. package/dist/esm/contracts/lean0/ShareToken.js.map +1 -0
  147. package/dist/esm/contracts/lean0/index.d.ts +4 -0
  148. package/dist/esm/contracts/lean0/index.js +2 -0
  149. package/dist/esm/contracts/lean0/index.js.map +1 -0
  150. package/dist/esm/orderExecutorTool.d.ts +2 -2
  151. package/dist/esm/orderExecutorTool.js +30 -59
  152. package/dist/esm/orderExecutorTool.js.map +1 -1
  153. package/dist/esm/version.d.ts +1 -1
  154. package/dist/esm/version.js +1 -1
  155. package/dist/esm/writeAccessHandler.js +6 -6
  156. package/dist/esm/writeAccessHandler.js.map +1 -1
  157. package/package.json +1 -1
  158. package/src/config/priceFeedConfig.json +30 -0
  159. package/src/config/symbolList.json +6 -1
  160. package/src/contracts/BeaconProxy.ts +108 -0
  161. package/src/contracts/MockToken.ts +581 -0
  162. package/src/contracts/UUPSUpgradeable.ts +228 -0
  163. package/src/contracts/WeETH.ts +1104 -0
  164. package/src/contracts/factories/BeaconProxy__factory.ts +92 -0
  165. package/src/contracts/factories/MockToken__factory.ts +368 -0
  166. package/src/contracts/factories/UUPSUpgradeable__factory.ts +128 -0
  167. package/src/contracts/factories/WeETH__factory.ts +721 -0
  168. package/src/orderExecutorTool.ts +40 -69
  169. package/src/version.ts +1 -1
  170. package/src/writeAccessHandler.ts +6 -6
  171. package/dist/esm/contracts/factories/PerpStorage__factory.js.map +0 -1
@@ -88,60 +88,8 @@ export default class OrderExecutorTool extends WriteAccessHandler {
88
88
  executorAddr?: string,
89
89
  submission?: PriceFeedSubmission,
90
90
  overrides?: PayableOverrides
91
- ): Promise<ContractTransaction> {
92
- if (this.proxyContract == null || this.signer == null) {
93
- throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
94
- }
95
- const orderBookSC = this.getOrderBookContract(symbol);
96
- if (executorAddr == undefined) {
97
- executorAddr = this.traderAddr;
98
- }
99
- if (submission == undefined) {
100
- submission = await this.priceFeedGetter.fetchLatestFeedPriceInfoForPerpetual(symbol);
101
- }
102
- if (submission.priceFeedVaas.length == 0) {
103
- // we have at least 1 push oracle, so there must be at least 1 price feed to update
104
- throw Error("executeOrder: no priceFeedVaas found for symbol " + symbol);
105
- }
106
- if (!overrides || overrides.value == undefined) {
107
- overrides = {
108
- // value: submission.timestamps.length * this.PRICE_UPDATE_FEE_GWEI,s
109
- gasLimit: overrides?.gasLimit ?? this.gasLimit,
110
- ...overrides,
111
- } as PayableOverrides;
112
- }
113
-
114
- const pyth = IPyth__factory.connect(this.pythAddr!, this.signer);
115
-
116
- // update first
117
- const priceIds = this.symbolToPerpStaticInfo.get(symbol)!.priceIds;
118
- try {
119
- const pythTxn = await pyth.updatePriceFeedsIfNecessary(
120
- submission.priceFeedVaas,
121
- priceIds,
122
- submission.timestamps,
123
- {
124
- value: this.PRICE_UPDATE_FEE_GWEI * submission.timestamps.length,
125
- gasLimit: overrides?.gasLimit ?? this.gasLimit,
126
- }
127
- );
128
- } catch (e) {
129
- console.log(e);
130
- }
131
-
132
- const txData = await orderBookSC.interface.encodeFunctionData("executeOrders", [[orderId], executorAddr, [], []]);
133
-
134
- let unsignedTx = {
135
- to: orderBookSC.address,
136
- from: this.traderAddr,
137
- nonce: overrides.nonce, // populated by provider if undefined
138
- data: txData,
139
- value: overrides.value,
140
- gasLimit: overrides.gasLimit, // always defined at this point
141
- gasPrice: overrides.gasPrice, // populated by the provider if not specified
142
- chainId: this.chainId,
143
- };
144
- return await this.signer.sendTransaction(unsignedTx);
91
+ ): Promise<ContractTransaction | undefined> {
92
+ return this.executeOrders(symbol, [orderId], executorAddr, submission, overrides);
145
93
  }
146
94
 
147
95
  /**
@@ -178,7 +126,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
178
126
  executorAddr?: string,
179
127
  submission?: PriceFeedSubmission,
180
128
  overrides?: PayableOverrides & { rpcURL?: string; splitTx?: boolean }
181
- ): Promise<ContractTransaction> {
129
+ ): Promise<ContractTransaction | undefined> {
182
130
  if (this.proxyContract == null || this.signer == null) {
183
131
  throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
184
132
  }
@@ -188,19 +136,15 @@ export default class OrderExecutorTool extends WriteAccessHandler {
188
136
  ({ rpcURL, splitTx, ...overrides } = overrides);
189
137
  }
190
138
  const provider = new StaticJsonRpcProvider(rpcURL ?? this.nodeURL);
191
- const orderBookSC = LimitOrderBook__factory.connect(this.getOrderBookContract(symbol).address, provider);
139
+
192
140
  if (typeof executorAddr == "undefined") {
193
141
  executorAddr = this.traderAddr;
194
142
  }
195
143
  if (submission == undefined) {
196
144
  submission = await this.priceFeedGetter.fetchLatestFeedPriceInfoForPerpetual(symbol);
197
145
  }
198
- if (!overrides || overrides.gasLimit == undefined) {
199
- overrides = {
200
- gasLimit: overrides?.gasLimit ?? this.gasLimit,
201
- ...overrides,
202
- } as PayableOverrides;
203
- }
146
+
147
+ const iOB = LimitOrderBook__factory.createInterface();
204
148
 
205
149
  // update first
206
150
  let nonceInc = 0;
@@ -217,7 +161,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
217
161
  {
218
162
  value: this.PRICE_UPDATE_FEE_GWEI * submission.timestamps.length,
219
163
  gasLimit: overrides?.gasLimit ?? this.gasLimit,
220
- nonce: overrides.nonce,
164
+ nonce: overrides?.nonce,
221
165
  }
222
166
  );
223
167
  nonceInc += 1;
@@ -226,9 +170,9 @@ export default class OrderExecutorTool extends WriteAccessHandler {
226
170
  console.log(e);
227
171
  }
228
172
 
229
- txData = orderBookSC.interface.encodeFunctionData("executeOrders", [orderIds, executorAddr, [], []]);
173
+ txData = iOB.encodeFunctionData("executeOrders", [orderIds, executorAddr, [], []]);
230
174
  } else {
231
- txData = orderBookSC.interface.encodeFunctionData("executeOrders", [
175
+ txData = iOB.encodeFunctionData("executeOrders", [
232
176
  orderIds,
233
177
  executorAddr,
234
178
  submission.priceFeedVaas,
@@ -241,17 +185,44 @@ export default class OrderExecutorTool extends WriteAccessHandler {
241
185
  const nonce = await overrides!.nonce;
242
186
  overrides.nonce = BigNumber.from(nonce).add(nonceInc);
243
187
  }
188
+
244
189
  let unsignedTx = {
245
- to: orderBookSC.address,
190
+ to: this.getOrderBookContract(symbol).address,
246
191
  from: this.traderAddr,
247
- nonce: overrides.nonce,
192
+ nonce: overrides?.nonce,
248
193
  data: txData,
249
194
  value: value,
250
- gasLimit: overrides.gasLimit,
195
+ gasLimit: overrides?.gasLimit,
251
196
  // gas price is populated by the provider if undefined
252
- gasPrice: overrides.gasPrice,
197
+ gasPrice: overrides?.gasPrice,
253
198
  chainId: this.chainId,
254
199
  };
200
+ // no gas limit was specified, explicitly estimate
201
+ if (!overrides?.gasLimit) {
202
+ overrides = {
203
+ gasLimit: await this.signer
204
+ .estimateGas(unsignedTx)
205
+ .then((gas) => gas.mul(1100).div(1000))
206
+ .catch((_e) => undefined),
207
+ ...overrides,
208
+ };
209
+ if (!overrides.gasLimit) {
210
+ // gas estimate failed - txn would probably revert, double check:
211
+ overrides = { gasLimit: this.gasLimit, value: unsignedTx.value, ...overrides };
212
+ try {
213
+ await this.getOrderBookContract(symbol).callStatic.executeOrders(
214
+ orderIds,
215
+ executorAddr,
216
+ submission.priceFeedVaas,
217
+ submission.timestamps,
218
+ overrides
219
+ );
220
+ } catch (e) {
221
+ console.log("Order cannot be executed:", e);
222
+ return undefined;
223
+ }
224
+ }
225
+ }
255
226
  return await this.signer.sendTransaction(unsignedTx);
256
227
  }
257
228
 
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const D8X_SDK_VERSION = "1.3.2";
1
+ export const D8X_SDK_VERSION = "1.3.4";
@@ -87,21 +87,21 @@ export default class WriteAccessHandler extends PerpetualDataHandler {
87
87
  * @returns ContractTransaction
88
88
  */
89
89
  public async setAllowance(symbol: string, amount?: number, overrides?: Overrides): Promise<ContractTransaction> {
90
- //extract margin-currency name
90
+ // extract margin-currency name
91
91
  let symbolarr = symbol.split("-");
92
92
  symbol = symbol.length == 3 ? symbolarr[2] : symbolarr[0];
93
- //note: symbol is in long format
94
- let marginTokenAddr = this.symbolToTokenAddrMap.get(symbol);
95
- if (marginTokenAddr == undefined || this.signer == null) {
93
+ //
94
+ let settleTokenAddr = this.getSettlementTokenFromSymbol(symbol);
95
+ if (settleTokenAddr == undefined || this.signer == null) {
96
96
  throw Error("No margin token or signer defined, call createProxyInstance");
97
97
  }
98
98
  let amountDec18: BigNumber;
99
99
  if (amount == undefined) {
100
100
  amountDec18 = MAX_UINT_256;
101
101
  } else {
102
- amountDec18 = floatToDecN(amount, this.getMarginTokenDecimalsFromSymbol(symbol)!);
102
+ amountDec18 = floatToDecN(amount, this.getSettlementTokenDecimalsFromSymbol(symbol)!);
103
103
  }
104
- return WriteAccessHandler._setAllowance(marginTokenAddr, this.proxyAddr, this.signer, amountDec18, overrides);
104
+ return WriteAccessHandler._setAllowance(settleTokenAddr, this.proxyAddr, this.signer, amountDec18, overrides);
105
105
  }
106
106
 
107
107
  protected static async _setAllowance(
@@ -1 +0,0 @@
1
- {"version":3,"file":"PerpStorage__factory.js","sourceRoot":"","sources":["../../../../src/contracts/factories/PerpStorage__factory.ts"],"names":[],"mappings":"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"}