@d8x/perpetuals-sdk 1.3.7 → 2.0.0-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/accountTrade.d.ts +9 -9
- package/dist/cjs/accountTrade.js +19 -17
- package/dist/cjs/accountTrade.js.map +1 -1
- package/dist/cjs/brokerTool.d.ts +11 -12
- package/dist/cjs/brokerTool.js +7 -8
- package/dist/cjs/brokerTool.js.map +1 -1
- package/dist/cjs/constants.d.ts +11 -12
- package/dist/cjs/constants.js +12 -13
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/contracts/ERC20.d.ts +146 -171
- package/dist/cjs/contracts/IPerpetualManager.d.ts +2534 -2225
- package/dist/cjs/contracts/IPyth.d.ts +181 -184
- package/dist/cjs/contracts/LimitOrderBook.d.ts +373 -401
- package/dist/cjs/contracts/LimitOrderBookBeacon.d.ts +53 -104
- package/dist/cjs/contracts/LimitOrderBookFactory.d.ts +129 -185
- package/dist/cjs/contracts/MockTokenSwap.d.ts +109 -169
- package/dist/cjs/contracts/Multicall3.d.ts +147 -211
- package/dist/cjs/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
- package/dist/cjs/contracts/OracleFactory.d.ts +258 -238
- package/dist/cjs/contracts/PerpetualManagerProxy.d.ts +1099 -891
- package/dist/cjs/contracts/RedStoneAbi.d.ts +369 -488
- package/dist/cjs/contracts/ShareToken.d.ts +232 -285
- package/dist/cjs/contracts/common.d.ts +40 -11
- package/dist/cjs/contracts/factories/ERC20__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/ERC20__factory.js +3 -3
- package/dist/cjs/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +3 -3
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/IPyth__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/IPyth__factory.js +3 -3
- package/dist/cjs/contracts/factories/IPyth__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js +3 -3
- package/dist/cjs/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js +3 -3
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js +3 -3
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js +3 -3
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/Multicall3__factory.d.ts +11 -9
- package/dist/cjs/contracts/factories/Multicall3__factory.js +7 -10
- package/dist/cjs/contracts/factories/Multicall3__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js +3 -3
- package/dist/cjs/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/OracleFactory__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/OracleFactory__factory.js +3 -3
- package/dist/cjs/contracts/factories/OracleFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js +3 -3
- package/dist/cjs/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/RedStoneAbi__factory.js +3 -3
- package/dist/cjs/contracts/factories/RedStoneAbi__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/ShareToken__factory.d.ts +2 -3
- package/dist/cjs/contracts/factories/ShareToken__factory.js +3 -3
- package/dist/cjs/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/cjs/d8XMath.d.ts +16 -16
- package/dist/cjs/d8XMath.js +48 -49
- package/dist/cjs/d8XMath.js.map +1 -1
- package/dist/cjs/liquidatorTool.d.ts +8 -8
- package/dist/cjs/liquidatorTool.js +5 -7
- package/dist/cjs/liquidatorTool.js.map +1 -1
- package/dist/cjs/liquidityProviderTool.d.ts +4 -5
- package/dist/cjs/liquidityProviderTool.js.map +1 -1
- package/dist/cjs/marketData.d.ts +27 -28
- package/dist/cjs/marketData.js +65 -69
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/nodeSDKTypes.d.ts +35 -37
- package/dist/cjs/onChainPxFeed.d.ts +2 -2
- package/dist/cjs/onChainPxFeed.js +3 -3
- package/dist/cjs/onChainPxFeed.js.map +1 -1
- package/dist/cjs/onChainPxFeedAngle.d.ts +2 -2
- package/dist/cjs/onChainPxFeedAngle.js +4 -5
- package/dist/cjs/onChainPxFeedAngle.js.map +1 -1
- package/dist/cjs/onChainPxFeedRedStone.js +2 -2
- package/dist/cjs/onChainPxFeedRedStone.js.map +1 -1
- package/dist/cjs/orderExecutorTool.d.ts +7 -9
- package/dist/cjs/orderExecutorTool.js +52 -62
- package/dist/cjs/orderExecutorTool.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.d.ts +38 -35
- package/dist/cjs/perpetualDataHandler.js +173 -167
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/perpetualEventHandler.d.ts +4 -5
- package/dist/cjs/perpetualEventHandler.js +2 -2
- package/dist/cjs/perpetualEventHandler.js.map +1 -1
- package/dist/cjs/priceFeeds.js +2 -3
- package/dist/cjs/priceFeeds.js.map +1 -1
- package/dist/cjs/referralCodeSigner.d.ts +1 -1
- package/dist/cjs/referralCodeSigner.js +12 -16
- package/dist/cjs/referralCodeSigner.js.map +1 -1
- package/dist/cjs/traderDigests.d.ts +2 -1
- package/dist/cjs/traderDigests.js +9 -11
- package/dist/cjs/traderDigests.js.map +1 -1
- package/dist/cjs/traderInterface.d.ts +8 -9
- package/dist/cjs/traderInterface.js +26 -23
- package/dist/cjs/traderInterface.js.map +1 -1
- package/dist/cjs/utils.d.ts +2 -3
- package/dist/cjs/utils.js +1 -2
- package/dist/cjs/utils.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/writeAccessHandler.d.ts +7 -9
- package/dist/cjs/writeAccessHandler.js +13 -16
- package/dist/cjs/writeAccessHandler.js.map +1 -1
- package/dist/esm/accountTrade.d.ts +9 -9
- package/dist/esm/accountTrade.js +19 -17
- package/dist/esm/accountTrade.js.map +1 -1
- package/dist/esm/brokerTool.d.ts +11 -12
- package/dist/esm/brokerTool.js +2 -3
- package/dist/esm/brokerTool.js.map +1 -1
- package/dist/esm/constants.d.ts +11 -12
- package/dist/esm/constants.js +12 -13
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/contracts/ERC20.d.ts +146 -171
- package/dist/esm/contracts/IPerpetualManager.d.ts +2534 -2225
- package/dist/esm/contracts/IPyth.d.ts +181 -184
- package/dist/esm/contracts/LimitOrderBook.d.ts +373 -401
- package/dist/esm/contracts/LimitOrderBookBeacon.d.ts +53 -104
- package/dist/esm/contracts/LimitOrderBookFactory.d.ts +129 -185
- package/dist/esm/contracts/MockTokenSwap.d.ts +109 -169
- package/dist/esm/contracts/Multicall3.d.ts +147 -211
- package/dist/esm/contracts/OnDemandOracleUpgradeable.d.ts +342 -399
- package/dist/esm/contracts/OracleFactory.d.ts +258 -238
- package/dist/esm/contracts/PerpetualManagerProxy.d.ts +1099 -891
- package/dist/esm/contracts/RedStoneAbi.d.ts +369 -488
- package/dist/esm/contracts/ShareToken.d.ts +232 -285
- package/dist/esm/contracts/common.d.ts +40 -11
- package/dist/esm/contracts/factories/ERC20__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/ERC20__factory.js +4 -4
- package/dist/esm/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js +4 -4
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/IPyth__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/IPyth__factory.js +4 -4
- package/dist/esm/contracts/factories/IPyth__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js +4 -4
- package/dist/esm/contracts/factories/LimitOrderBookBeacon__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js +4 -4
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBook__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js +4 -4
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/esm/contracts/factories/MockTokenSwap__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js +4 -4
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/esm/contracts/factories/Multicall3__factory.d.ts +11 -9
- package/dist/esm/contracts/factories/Multicall3__factory.js +8 -11
- package/dist/esm/contracts/factories/Multicall3__factory.js.map +1 -1
- package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js +4 -4
- package/dist/esm/contracts/factories/OnDemandOracleUpgradeable__factory.js.map +1 -1
- package/dist/esm/contracts/factories/OracleFactory__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/OracleFactory__factory.js +4 -4
- package/dist/esm/contracts/factories/OracleFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js +4 -4
- package/dist/esm/contracts/factories/PerpetualManagerProxy__factory.js.map +1 -1
- package/dist/esm/contracts/factories/RedStoneAbi__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/RedStoneAbi__factory.js +4 -4
- package/dist/esm/contracts/factories/RedStoneAbi__factory.js.map +1 -1
- package/dist/esm/contracts/factories/ShareToken__factory.d.ts +2 -3
- package/dist/esm/contracts/factories/ShareToken__factory.js +4 -4
- package/dist/esm/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/esm/d8XMath.d.ts +16 -16
- package/dist/esm/d8XMath.js +48 -49
- package/dist/esm/d8XMath.js.map +1 -1
- package/dist/esm/liquidatorTool.d.ts +8 -8
- package/dist/esm/liquidatorTool.js +5 -7
- package/dist/esm/liquidatorTool.js.map +1 -1
- package/dist/esm/liquidityProviderTool.d.ts +4 -5
- package/dist/esm/liquidityProviderTool.js.map +1 -1
- package/dist/esm/marketData.d.ts +27 -28
- package/dist/esm/marketData.js +55 -59
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/nodeSDKTypes.d.ts +35 -37
- package/dist/esm/onChainPxFeed.d.ts +2 -2
- package/dist/esm/onChainPxFeed.js +3 -3
- package/dist/esm/onChainPxFeed.js.map +1 -1
- package/dist/esm/onChainPxFeedAngle.d.ts +2 -2
- package/dist/esm/onChainPxFeedAngle.js +2 -3
- package/dist/esm/onChainPxFeedAngle.js.map +1 -1
- package/dist/esm/onChainPxFeedRedStone.js +1 -1
- package/dist/esm/onChainPxFeedRedStone.js.map +1 -1
- package/dist/esm/orderExecutorTool.d.ts +7 -9
- package/dist/esm/orderExecutorTool.js +38 -48
- package/dist/esm/orderExecutorTool.js.map +1 -1
- package/dist/esm/perpetualDataHandler.d.ts +38 -35
- package/dist/esm/perpetualDataHandler.js +114 -108
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/perpetualEventHandler.d.ts +4 -5
- package/dist/esm/perpetualEventHandler.js +2 -2
- package/dist/esm/perpetualEventHandler.js.map +1 -1
- package/dist/esm/priceFeeds.js +2 -3
- package/dist/esm/priceFeeds.js.map +1 -1
- package/dist/esm/referralCodeSigner.d.ts +1 -1
- package/dist/esm/referralCodeSigner.js +6 -10
- package/dist/esm/referralCodeSigner.js.map +1 -1
- package/dist/esm/traderDigests.d.ts +2 -1
- package/dist/esm/traderDigests.js +2 -4
- package/dist/esm/traderDigests.js.map +1 -1
- package/dist/esm/traderInterface.d.ts +8 -9
- package/dist/esm/traderInterface.js +26 -23
- package/dist/esm/traderInterface.js.map +1 -1
- package/dist/esm/utils.d.ts +2 -3
- package/dist/esm/utils.js +1 -2
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/writeAccessHandler.d.ts +7 -9
- package/dist/esm/writeAccessHandler.js +5 -8
- package/dist/esm/writeAccessHandler.js.map +1 -1
- package/package.json +7 -17
- package/src/accountTrade.ts +32 -34
- package/src/brokerTool.ts +17 -20
- package/src/constants.ts +12 -13
- package/src/contracts/ERC20.ts +236 -350
- package/src/contracts/IPerpetualManager.ts +3359 -5050
- package/src/contracts/IPyth.ts +272 -409
- package/src/contracts/LimitOrderBook.ts +503 -779
- package/src/contracts/LimitOrderBookBeacon.ts +123 -171
- package/src/contracts/LimitOrderBookFactory.ts +263 -332
- package/src/contracts/MockTokenSwap.ts +237 -275
- package/src/contracts/Multicall3.ts +208 -374
- package/src/contracts/OnDemandOracleUpgradeable.ts +569 -782
- package/src/contracts/OracleFactory.ts +410 -538
- package/src/contracts/PerpetualManagerProxy.ts +1898 -1426
- package/src/contracts/RedStoneAbi.ts +486 -986
- package/src/contracts/ShareToken.ts +376 -557
- package/src/contracts/common.ts +108 -21
- package/src/contracts/factories/ERC20__factory.ts +4 -5
- package/src/contracts/factories/IPerpetualManager__factory.ts +4 -5
- package/src/contracts/factories/IPyth__factory.ts +4 -5
- package/src/contracts/factories/LimitOrderBookBeacon__factory.ts +5 -6
- package/src/contracts/factories/LimitOrderBookFactory__factory.ts +5 -6
- package/src/contracts/factories/LimitOrderBook__factory.ts +4 -5
- package/src/contracts/factories/MockTokenSwap__factory.ts +4 -5
- package/src/contracts/factories/Multicall3__factory.ts +21 -19
- package/src/contracts/factories/OnDemandOracleUpgradeable__factory.ts +5 -6
- package/src/contracts/factories/OracleFactory__factory.ts +4 -5
- package/src/contracts/factories/PerpetualManagerProxy__factory.ts +5 -6
- package/src/contracts/factories/RedStoneAbi__factory.ts +4 -8
- package/src/contracts/factories/ShareToken__factory.ts +4 -8
- package/src/d8XMath.ts +57 -57
- package/src/liquidatorTool.ts +12 -15
- package/src/liquidityProviderTool.ts +7 -5
- package/src/marketData.ts +110 -121
- package/src/nodeSDKTypes.ts +51 -38
- package/src/onChainPxFeed.ts +4 -4
- package/src/onChainPxFeedAngle.ts +5 -7
- package/src/onChainPxFeedRedStone.ts +1 -3
- package/src/orderExecutorTool.ts +100 -108
- package/src/perpetualDataHandler.ts +181 -167
- package/src/perpetualEventHandler.ts +16 -17
- package/src/priceFeeds.ts +2 -3
- package/src/referralCodeSigner.ts +6 -10
- package/src/traderDigests.ts +8 -5
- package/src/traderInterface.ts +45 -31
- package/src/utils.ts +3 -4
- package/src/version.ts +1 -1
- package/src/writeAccessHandler.ts +26 -17
package/src/orderExecutorTool.ts
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import {
|
|
2
|
+
BigNumberish,
|
|
3
|
+
BlockTag,
|
|
4
|
+
JsonRpcProvider,
|
|
5
|
+
Overrides,
|
|
6
|
+
Signer,
|
|
7
|
+
TransactionRequest,
|
|
8
|
+
TransactionResponse,
|
|
9
|
+
ZeroHash,
|
|
10
|
+
} from "ethers";
|
|
6
11
|
import { BUY_SIDE, MULTICALL_ADDRESS, OrderStatus, SELL_SIDE, ZERO_ADDRESS, ZERO_ORDER_ID } from "./constants";
|
|
7
|
-
import { IPyth__factory,
|
|
12
|
+
import { IPyth__factory, LimitOrderBook__factory, Multicall3, Multicall3__factory } from "./contracts";
|
|
13
|
+
import { PayableOverrides } from "./contracts/common";
|
|
8
14
|
import { ABK64x64ToFloat, floatToABK64x64 } from "./d8XMath";
|
|
9
15
|
import {
|
|
10
16
|
type NodeSDKConfig,
|
|
@@ -88,7 +94,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
88
94
|
executorAddr?: string,
|
|
89
95
|
submission?: PriceFeedSubmission,
|
|
90
96
|
overrides?: PayableOverrides
|
|
91
|
-
): Promise<
|
|
97
|
+
): Promise<TransactionResponse> {
|
|
92
98
|
return this.executeOrders(symbol, [orderId], executorAddr, submission, overrides);
|
|
93
99
|
}
|
|
94
100
|
|
|
@@ -126,7 +132,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
126
132
|
executorAddr?: string,
|
|
127
133
|
submission?: PriceFeedSubmission,
|
|
128
134
|
overrides?: PayableOverrides & { rpcURL?: string; splitTx?: boolean; maxGasLimit?: BigNumberish }
|
|
129
|
-
): Promise<
|
|
135
|
+
): Promise<TransactionResponse> {
|
|
130
136
|
if (this.proxyContract == null || this.signer == null) {
|
|
131
137
|
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
132
138
|
}
|
|
@@ -136,7 +142,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
136
142
|
if (overrides) {
|
|
137
143
|
({ rpcURL, splitTx, maxGasLimit, ...overrides } = overrides);
|
|
138
144
|
}
|
|
139
|
-
const provider = new
|
|
145
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL);
|
|
140
146
|
|
|
141
147
|
if (typeof executorAddr == "undefined") {
|
|
142
148
|
executorAddr = this.traderAddr;
|
|
@@ -182,9 +188,8 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
182
188
|
value = this.PRICE_UPDATE_FEE_GWEI * submission.timestamps.length;
|
|
183
189
|
}
|
|
184
190
|
|
|
185
|
-
if (overrides?.nonce
|
|
186
|
-
|
|
187
|
-
overrides.nonce = BigNumber.from(nonce).add(nonceInc);
|
|
191
|
+
if (overrides?.nonce != undefined) {
|
|
192
|
+
overrides.nonce = overrides.nonce + nonceInc;
|
|
188
193
|
}
|
|
189
194
|
|
|
190
195
|
if (overrides?.gasLimit !== undefined) {
|
|
@@ -200,7 +205,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
200
205
|
}
|
|
201
206
|
|
|
202
207
|
const unsignedTx: TransactionRequest = {
|
|
203
|
-
to: this.getOrderBookContract(symbol).
|
|
208
|
+
to: this.getOrderBookContract(symbol).target,
|
|
204
209
|
from: this.traderAddr,
|
|
205
210
|
nonce: overrides?.nonce,
|
|
206
211
|
data: txData,
|
|
@@ -212,29 +217,21 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
212
217
|
};
|
|
213
218
|
// no gas limit was specified, explicitly estimate
|
|
214
219
|
if (!overrides?.gasLimit) {
|
|
215
|
-
// given gas price might be conservative, which leads to a lower a gas estimate
|
|
216
|
-
//-> compensate with larger buffer
|
|
217
220
|
let gasLimit = await this.signer
|
|
218
221
|
.estimateGas(unsignedTx)
|
|
219
|
-
.then((gas) => gas
|
|
222
|
+
.then((gas) => (gas * 1500n) / 1000n)
|
|
220
223
|
.catch((_e) => undefined);
|
|
221
|
-
|
|
222
224
|
if (!gasLimit) {
|
|
223
225
|
// gas estimate failed - txn would probably revert, double check (and possibly re-throw):
|
|
224
|
-
overrides = {
|
|
225
|
-
|
|
226
|
-
gasLimit: maxGasLimit ?? this.gasLimit,
|
|
227
|
-
value: unsignedTx.value,
|
|
228
|
-
};
|
|
229
|
-
await this.getOrderBookContract(symbol, provider).callStatic.executeOrders(
|
|
226
|
+
overrides = { gasLimit: maxGasLimit ?? this.gasLimit, value: unsignedTx.value, ...overrides };
|
|
227
|
+
await this.getOrderBookContract(symbol).executeOrders.staticCall(
|
|
230
228
|
orderIds,
|
|
231
229
|
executorAddr,
|
|
232
230
|
submission.priceFeedVaas,
|
|
233
231
|
submission.timestamps,
|
|
234
232
|
overrides
|
|
235
233
|
);
|
|
236
|
-
|
|
237
|
-
gasLimit = BigNumber.from(maxGasLimit ?? this.gasLimit);
|
|
234
|
+
gasLimit = BigInt(maxGasLimit ?? this.gasLimit);
|
|
238
235
|
}
|
|
239
236
|
unsignedTx.gasLimit = gasLimit;
|
|
240
237
|
}
|
|
@@ -266,7 +263,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
266
263
|
public async getOrderById(
|
|
267
264
|
symbol: string,
|
|
268
265
|
id: string,
|
|
269
|
-
overrides?:
|
|
266
|
+
overrides?: Overrides & { rpcURL?: string }
|
|
270
267
|
): Promise<Order | undefined> {
|
|
271
268
|
let ob = this.getOrderBookContract(symbol);
|
|
272
269
|
// multicall
|
|
@@ -274,63 +271,65 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
274
271
|
if (overrides) {
|
|
275
272
|
({ rpcURL, ...overrides } = overrides);
|
|
276
273
|
}
|
|
277
|
-
const provider = new
|
|
274
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
278
275
|
const multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider);
|
|
279
276
|
const calls: Multicall3.Call3Struct[] = [
|
|
280
277
|
// 0: orderOfDigest
|
|
281
278
|
{
|
|
282
|
-
target: ob.
|
|
279
|
+
target: ob.target,
|
|
283
280
|
allowFailure: false,
|
|
284
281
|
callData: ob.interface.encodeFunctionData("orderOfDigest", [id]),
|
|
285
282
|
},
|
|
286
283
|
// 1: orderDependency
|
|
287
284
|
{
|
|
288
|
-
target: ob.
|
|
285
|
+
target: ob.target,
|
|
289
286
|
allowFailure: false,
|
|
290
287
|
callData: ob.interface.encodeFunctionData("orderDependency", [id]),
|
|
291
288
|
},
|
|
292
289
|
];
|
|
293
|
-
const encodedResults = await multicall.
|
|
290
|
+
const encodedResults = await multicall.aggregate3.staticCall(calls, overrides || {});
|
|
294
291
|
if (encodedResults.some(({ success }) => !success)) {
|
|
295
292
|
return undefined;
|
|
296
293
|
}
|
|
297
294
|
|
|
298
|
-
const smartContractOrder = ob.interface.decodeFunctionResult(
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
295
|
+
const smartContractOrder = ob.interface.decodeFunctionResult(
|
|
296
|
+
"orderOfDigest",
|
|
297
|
+
encodedResults[0].returnData
|
|
298
|
+
) as unknown as [
|
|
299
|
+
bigint,
|
|
300
|
+
bigint,
|
|
301
|
+
bigint,
|
|
302
302
|
string,
|
|
303
|
-
|
|
303
|
+
bigint,
|
|
304
304
|
string,
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
305
|
+
bigint,
|
|
306
|
+
bigint,
|
|
307
|
+
bigint,
|
|
308
308
|
string,
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
309
|
+
bigint,
|
|
310
|
+
bigint,
|
|
311
|
+
bigint,
|
|
312
312
|
string
|
|
313
313
|
] & {
|
|
314
|
-
leverageTDR:
|
|
315
|
-
brokerFeeTbps:
|
|
316
|
-
iPerpetualId:
|
|
314
|
+
leverageTDR: bigint;
|
|
315
|
+
brokerFeeTbps: bigint;
|
|
316
|
+
iPerpetualId: bigint;
|
|
317
317
|
traderAddr: string;
|
|
318
|
-
executionTimestamp:
|
|
318
|
+
executionTimestamp: bigint;
|
|
319
319
|
brokerAddr: string;
|
|
320
|
-
submittedTimestamp:
|
|
321
|
-
flags:
|
|
322
|
-
iDeadline:
|
|
320
|
+
submittedTimestamp: bigint;
|
|
321
|
+
flags: bigint;
|
|
322
|
+
iDeadline: bigint;
|
|
323
323
|
executorAddr: string;
|
|
324
|
-
fAmount:
|
|
325
|
-
fLimitPrice:
|
|
326
|
-
fTriggerPrice:
|
|
324
|
+
fAmount: bigint;
|
|
325
|
+
fLimitPrice: bigint;
|
|
326
|
+
fTriggerPrice: bigint;
|
|
327
327
|
brokerSignature: string;
|
|
328
328
|
};
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
] & {
|
|
329
|
+
const orderDependency = ob.interface.decodeFunctionResult(
|
|
330
|
+
"orderDependency",
|
|
331
|
+
encodedResults[1].returnData
|
|
332
|
+
) as unknown as [string, string] & {
|
|
334
333
|
parentChildDigest1: string;
|
|
335
334
|
parentChildDigest2: string;
|
|
336
335
|
};
|
|
@@ -369,7 +368,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
369
368
|
orderId: string,
|
|
370
369
|
blockTimestamp?: number,
|
|
371
370
|
indexPrices?: [number, number],
|
|
372
|
-
overrides?:
|
|
371
|
+
overrides?: Overrides & { rpcURL?: string }
|
|
373
372
|
): Promise<boolean> {
|
|
374
373
|
if (this.proxyContract == null || this.multicall == null) {
|
|
375
374
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
@@ -382,11 +381,11 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
382
381
|
if (overrides) {
|
|
383
382
|
({ rpcURL, ...overrides } = overrides);
|
|
384
383
|
}
|
|
385
|
-
const provider = new
|
|
384
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
386
385
|
|
|
387
386
|
const fS2S3 = indexPrices.map((x) => floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)) as [
|
|
388
|
-
|
|
389
|
-
|
|
387
|
+
bigint,
|
|
388
|
+
bigint
|
|
390
389
|
];
|
|
391
390
|
const perpId = this.getPerpIdFromSymbol(order.symbol);
|
|
392
391
|
const fAmount = floatToABK64x64(order.quantity * (order.side == BUY_SIDE ? 1 : -1));
|
|
@@ -395,25 +394,25 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
395
394
|
const proxyCalls: Multicall3.Call3Struct[] = [
|
|
396
395
|
// 0: trade amount price
|
|
397
396
|
{
|
|
398
|
-
target: this.proxyContract.
|
|
397
|
+
target: this.proxyContract.target,
|
|
399
398
|
allowFailure: true,
|
|
400
399
|
callData: this.proxyContract.interface.encodeFunctionData("queryPerpetualPrice", [perpId, fAmount, fS2S3]),
|
|
401
400
|
},
|
|
402
401
|
// 1: amm state to get the mark price
|
|
403
402
|
{
|
|
404
|
-
target: this.proxyContract.
|
|
403
|
+
target: this.proxyContract.target,
|
|
405
404
|
allowFailure: true,
|
|
406
405
|
callData: this.proxyContract.interface.encodeFunctionData("getAMMState", [perpId, fS2S3]),
|
|
407
406
|
},
|
|
408
407
|
// 2: order status to see if it's still open
|
|
409
408
|
{
|
|
410
|
-
target: orderBook.
|
|
409
|
+
target: orderBook.target,
|
|
411
410
|
allowFailure: true,
|
|
412
411
|
callData: orderBook.interface.encodeFunctionData("getOrderStatus", [orderId]),
|
|
413
412
|
},
|
|
414
413
|
// 3: block timestamp
|
|
415
414
|
{
|
|
416
|
-
target: this.multicall.
|
|
415
|
+
target: this.multicall.target,
|
|
417
416
|
allowFailure: false,
|
|
418
417
|
callData: this.multicall.interface.encodeFunctionData("getCurrentBlockTimestamp"),
|
|
419
418
|
},
|
|
@@ -421,23 +420,23 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
421
420
|
|
|
422
421
|
const hasParent =
|
|
423
422
|
order.parentChildOrderIds != undefined &&
|
|
424
|
-
order.parentChildOrderIds[0] ==
|
|
425
|
-
order.parentChildOrderIds[1] !=
|
|
423
|
+
order.parentChildOrderIds[0] == ZeroHash &&
|
|
424
|
+
order.parentChildOrderIds[1] != ZeroHash;
|
|
426
425
|
|
|
427
426
|
if (hasParent) {
|
|
428
427
|
// 4: order has a parent, one more call needed:
|
|
429
428
|
proxyCalls.push({
|
|
430
|
-
target: orderBook.
|
|
429
|
+
target: orderBook.target,
|
|
431
430
|
allowFailure: true,
|
|
432
431
|
callData: orderBook.interface.encodeFunctionData("getOrderStatus", [order.parentChildOrderIds![1]]),
|
|
433
432
|
});
|
|
434
433
|
}
|
|
435
434
|
// multicall
|
|
436
435
|
const multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider);
|
|
437
|
-
const encodedResults = await multicall.
|
|
436
|
+
const encodedResults = await multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
438
437
|
|
|
439
438
|
// order status
|
|
440
|
-
let iOrderStatus:
|
|
439
|
+
let iOrderStatus: BigNumberish;
|
|
441
440
|
if (encodedResults[2].success) {
|
|
442
441
|
iOrderStatus = orderBook.interface.decodeFunctionResult("getOrderStatus", encodedResults[2].returnData)[0];
|
|
443
442
|
} else {
|
|
@@ -450,7 +449,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
450
449
|
|
|
451
450
|
// parent status
|
|
452
451
|
if (hasParent) {
|
|
453
|
-
let iParentOrderStatus:
|
|
452
|
+
let iParentOrderStatus: BigNumberish;
|
|
454
453
|
if (encodedResults[4].success) {
|
|
455
454
|
iParentOrderStatus = orderBook.interface.decodeFunctionResult(
|
|
456
455
|
"getOrderStatus",
|
|
@@ -466,37 +465,35 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
466
465
|
}
|
|
467
466
|
|
|
468
467
|
// mark price
|
|
469
|
-
let ammState:
|
|
468
|
+
let ammState: bigint[];
|
|
470
469
|
if (encodedResults[1].success) {
|
|
471
470
|
ammState = this.proxyContract.interface.decodeFunctionResult(
|
|
472
471
|
"getAMMState",
|
|
473
472
|
encodedResults[1].returnData
|
|
474
|
-
)[0] as
|
|
473
|
+
)[0] as bigint[];
|
|
475
474
|
} else {
|
|
476
475
|
ammState = await this.proxyContract.getAMMState(perpId, fS2S3);
|
|
477
476
|
}
|
|
478
477
|
const markPrice = indexPrices[0] * (1 + ABK64x64ToFloat(ammState[8]));
|
|
479
478
|
|
|
480
479
|
// price
|
|
481
|
-
let fOrderPrice:
|
|
480
|
+
let fOrderPrice: bigint;
|
|
482
481
|
if (encodedResults[0].success) {
|
|
483
482
|
fOrderPrice = this.proxyContract.interface.decodeFunctionResult(
|
|
484
483
|
"queryPerpetualPrice",
|
|
485
484
|
encodedResults[0].returnData
|
|
486
|
-
)[0] as
|
|
485
|
+
)[0] as bigint;
|
|
487
486
|
} else {
|
|
488
487
|
fOrderPrice = await this.proxyContract.queryPerpetualPrice(perpId, fAmount, fS2S3);
|
|
489
488
|
}
|
|
490
489
|
const orderPrice = ABK64x64ToFloat(fOrderPrice);
|
|
491
490
|
|
|
492
491
|
// block timestamp
|
|
493
|
-
const ts = (
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
).toNumber();
|
|
499
|
-
blockTimestamp = Math.max(ts + 1, blockTimestamp ?? 0);
|
|
492
|
+
const ts = this.multicall.interface.decodeFunctionResult(
|
|
493
|
+
"getCurrentBlockTimestamp",
|
|
494
|
+
encodedResults[3].returnData
|
|
495
|
+
)[0] as bigint;
|
|
496
|
+
blockTimestamp = Math.max(Number(ts) + 1, blockTimestamp ?? 0);
|
|
500
497
|
return this._isTradeable(order, orderPrice, markPrice, blockTimestamp, this.symbolToPerpStaticInfo);
|
|
501
498
|
}
|
|
502
499
|
|
|
@@ -530,7 +527,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
530
527
|
orderIds: string[],
|
|
531
528
|
blockTimestamp?: number,
|
|
532
529
|
indexPrices?: [number, number, boolean, boolean],
|
|
533
|
-
overrides?:
|
|
530
|
+
overrides?: Overrides & { rpcURL?: string }
|
|
534
531
|
): Promise<boolean[]> {
|
|
535
532
|
const MAX_ORDERS_CHECKED = 10;
|
|
536
533
|
let totalOrders = orders.length;
|
|
@@ -565,7 +562,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
565
562
|
orderIds: string[],
|
|
566
563
|
blockTimestamp?: number,
|
|
567
564
|
indexPrices?: [number, number, boolean, boolean],
|
|
568
|
-
overrides?:
|
|
565
|
+
overrides?: Overrides & { rpcURL?: string }
|
|
569
566
|
): Promise<boolean[]> {
|
|
570
567
|
if (orders.length == 0) {
|
|
571
568
|
return [];
|
|
@@ -588,11 +585,11 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
588
585
|
if (overrides) {
|
|
589
586
|
({ rpcURL, ...overrides } = overrides);
|
|
590
587
|
}
|
|
591
|
-
const provider = new
|
|
588
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
592
589
|
|
|
593
590
|
const fS2S3 = [indexPrices[0], indexPrices[1]].map((x) =>
|
|
594
591
|
floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)
|
|
595
|
-
) as [
|
|
592
|
+
) as [bigint, bigint];
|
|
596
593
|
const perpId = this.getPerpIdFromSymbol(orders[0].symbol);
|
|
597
594
|
const fAmounts = orders.map((order) => floatToABK64x64(order.quantity * (order.side == BUY_SIDE ? 1 : -1)));
|
|
598
595
|
const orderBook = this.getOrderBookContract(orders[0].symbol).connect(provider);
|
|
@@ -602,13 +599,13 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
602
599
|
let proxyCalls: Multicall3.Call3Struct[] = [
|
|
603
600
|
// 0: amm state to get the mark price
|
|
604
601
|
{
|
|
605
|
-
target: this.proxyContract.
|
|
602
|
+
target: this.proxyContract.target,
|
|
606
603
|
allowFailure: false,
|
|
607
604
|
callData: this.proxyContract.interface.encodeFunctionData("getAMMState", [perpId, fS2S3]),
|
|
608
605
|
},
|
|
609
606
|
// 1: block timestamp
|
|
610
607
|
{
|
|
611
|
-
target: this.multicall.
|
|
608
|
+
target: this.multicall.target,
|
|
612
609
|
allowFailure: false,
|
|
613
610
|
callData: this.multicall.interface.encodeFunctionData("getCurrentBlockTimestamp"),
|
|
614
611
|
},
|
|
@@ -616,7 +613,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
616
613
|
|
|
617
614
|
// status calls
|
|
618
615
|
const statusCalls: Multicall3.Call3Struct[] = orderIds.map((orderId) => ({
|
|
619
|
-
target: orderBook.
|
|
616
|
+
target: orderBook.target,
|
|
620
617
|
allowFailure: false,
|
|
621
618
|
callData: orderBook.interface.encodeFunctionData("getOrderStatus", [orderId]),
|
|
622
619
|
}));
|
|
@@ -624,7 +621,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
624
621
|
|
|
625
622
|
// price calls
|
|
626
623
|
const priceCalls: Multicall3.Call3Struct[] = fAmounts.map((fAmount) => ({
|
|
627
|
-
target: this.proxyContract!.
|
|
624
|
+
target: this.proxyContract!.target,
|
|
628
625
|
allowFailure: false,
|
|
629
626
|
callData: this.proxyContract!.interface.encodeFunctionData("queryPerpetualPrice", [perpId, fAmount, fS2S3]),
|
|
630
627
|
}));
|
|
@@ -635,12 +632,12 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
635
632
|
.filter(
|
|
636
633
|
(order) =>
|
|
637
634
|
order.parentChildOrderIds != undefined &&
|
|
638
|
-
order.parentChildOrderIds[0] ==
|
|
639
|
-
order.parentChildOrderIds[1] !=
|
|
635
|
+
order.parentChildOrderIds[0] == ZeroHash &&
|
|
636
|
+
order.parentChildOrderIds[1] != ZeroHash
|
|
640
637
|
)
|
|
641
638
|
.map((order) => {
|
|
642
639
|
return {
|
|
643
|
-
target: orderBook.
|
|
640
|
+
target: orderBook.target,
|
|
644
641
|
allowFailure: false,
|
|
645
642
|
callData: orderBook.interface.encodeFunctionData("getOrderStatus", [order.parentChildOrderIds![1]]),
|
|
646
643
|
};
|
|
@@ -648,23 +645,21 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
648
645
|
proxyCalls = proxyCalls.concat(parentStatusCalls);
|
|
649
646
|
|
|
650
647
|
// --- multicall ---
|
|
651
|
-
const encodedResults = await multicall.
|
|
648
|
+
const encodedResults = await multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
652
649
|
|
|
653
650
|
// mark price
|
|
654
651
|
const ammState = this.proxyContract.interface.decodeFunctionResult(
|
|
655
652
|
"getAMMState",
|
|
656
653
|
encodedResults[0].returnData
|
|
657
|
-
)[0] as
|
|
654
|
+
)[0] as bigint[];
|
|
658
655
|
const markPrice = indexPrices[0] * (1 + ABK64x64ToFloat(ammState[8]));
|
|
659
656
|
|
|
660
657
|
// block timestamp
|
|
661
|
-
const ts = (
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
).toNumber();
|
|
667
|
-
blockTimestamp = Math.max(ts, blockTimestamp ?? 0);
|
|
658
|
+
const ts = this.multicall.interface.decodeFunctionResult(
|
|
659
|
+
"getCurrentBlockTimestamp",
|
|
660
|
+
encodedResults[1].returnData
|
|
661
|
+
)[0] as bigint;
|
|
662
|
+
blockTimestamp = Math.max(Number(ts), blockTimestamp ?? 0);
|
|
668
663
|
|
|
669
664
|
// order status
|
|
670
665
|
const isOrderOpen = encodedResults.slice(2, 2 + orders.length).map((encodedResult) => {
|
|
@@ -675,10 +670,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
675
670
|
// order prices
|
|
676
671
|
const orderPrices = encodedResults.slice(2 + orders.length, 2 + 2 * orders.length).map((encodedResult) => {
|
|
677
672
|
const orderPrice = ABK64x64ToFloat(
|
|
678
|
-
this.proxyContract!.interface.decodeFunctionResult(
|
|
679
|
-
"queryPerpetualPrice",
|
|
680
|
-
encodedResult.returnData
|
|
681
|
-
)[0] as BigNumber
|
|
673
|
+
this.proxyContract!.interface.decodeFunctionResult("queryPerpetualPrice", encodedResult.returnData)[0] as bigint
|
|
682
674
|
);
|
|
683
675
|
return orderPrice;
|
|
684
676
|
});
|
|
@@ -690,8 +682,8 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
690
682
|
const order = orders[i];
|
|
691
683
|
const hasParent =
|
|
692
684
|
order.parentChildOrderIds != undefined &&
|
|
693
|
-
order.parentChildOrderIds[0] ==
|
|
694
|
-
order.parentChildOrderIds[1] !=
|
|
685
|
+
order.parentChildOrderIds[0] == ZeroHash &&
|
|
686
|
+
order.parentChildOrderIds[1] != ZeroHash;
|
|
695
687
|
if (hasParent) {
|
|
696
688
|
const iParentStatus = orderBook.interface.decodeFunctionResult(
|
|
697
689
|
"getOrderStatus",
|
|
@@ -791,6 +783,6 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
791
783
|
if (this.signer == null) {
|
|
792
784
|
throw Error("no wallet initialized. Use createProxyInstance().");
|
|
793
785
|
}
|
|
794
|
-
return await this.signer.
|
|
786
|
+
return await this.signer.getNonce(blockTag);
|
|
795
787
|
}
|
|
796
788
|
}
|