@d8x/perpetuals-sdk 1.3.6 → 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 +54 -63
- 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 +40 -49
- 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 +102 -109
- 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,16 +132,17 @@ 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
|
}
|
|
133
139
|
let rpcURL: string | undefined;
|
|
134
140
|
let splitTx: boolean | undefined;
|
|
141
|
+
let maxGasLimit: BigNumberish | undefined;
|
|
135
142
|
if (overrides) {
|
|
136
|
-
({ rpcURL, splitTx, ...overrides } = overrides);
|
|
143
|
+
({ rpcURL, splitTx, maxGasLimit, ...overrides } = overrides);
|
|
137
144
|
}
|
|
138
|
-
const provider = new
|
|
145
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL);
|
|
139
146
|
|
|
140
147
|
if (typeof executorAddr == "undefined") {
|
|
141
148
|
executorAddr = this.traderAddr;
|
|
@@ -181,9 +188,8 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
181
188
|
value = this.PRICE_UPDATE_FEE_GWEI * submission.timestamps.length;
|
|
182
189
|
}
|
|
183
190
|
|
|
184
|
-
if (overrides?.nonce
|
|
185
|
-
|
|
186
|
-
overrides.nonce = BigNumber.from(nonce).add(nonceInc);
|
|
191
|
+
if (overrides?.nonce != undefined) {
|
|
192
|
+
overrides.nonce = overrides.nonce + nonceInc;
|
|
187
193
|
}
|
|
188
194
|
|
|
189
195
|
if (overrides?.gasLimit !== undefined) {
|
|
@@ -199,7 +205,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
199
205
|
}
|
|
200
206
|
|
|
201
207
|
const unsignedTx: TransactionRequest = {
|
|
202
|
-
to: this.getOrderBookContract(symbol).
|
|
208
|
+
to: this.getOrderBookContract(symbol).target,
|
|
203
209
|
from: this.traderAddr,
|
|
204
210
|
nonce: overrides?.nonce,
|
|
205
211
|
data: txData,
|
|
@@ -211,29 +217,21 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
211
217
|
};
|
|
212
218
|
// no gas limit was specified, explicitly estimate
|
|
213
219
|
if (!overrides?.gasLimit) {
|
|
214
|
-
// given gas price might be conservative, which leads to a lower a gas estimate
|
|
215
|
-
//-> compensate with larger buffer
|
|
216
220
|
let gasLimit = await this.signer
|
|
217
221
|
.estimateGas(unsignedTx)
|
|
218
|
-
.then((gas) => gas
|
|
222
|
+
.then((gas) => (gas * 1500n) / 1000n)
|
|
219
223
|
.catch((_e) => undefined);
|
|
220
|
-
|
|
221
224
|
if (!gasLimit) {
|
|
222
225
|
// gas estimate failed - txn would probably revert, double check (and possibly re-throw):
|
|
223
|
-
overrides = {
|
|
224
|
-
|
|
225
|
-
gasLimit: overrides?.maxGasLimit ?? this.gasLimit,
|
|
226
|
-
value: unsignedTx.value,
|
|
227
|
-
};
|
|
228
|
-
await this.getOrderBookContract(symbol, provider).callStatic.executeOrders(
|
|
226
|
+
overrides = { gasLimit: maxGasLimit ?? this.gasLimit, value: unsignedTx.value, ...overrides };
|
|
227
|
+
await this.getOrderBookContract(symbol).executeOrders.staticCall(
|
|
229
228
|
orderIds,
|
|
230
229
|
executorAddr,
|
|
231
230
|
submission.priceFeedVaas,
|
|
232
231
|
submission.timestamps,
|
|
233
232
|
overrides
|
|
234
233
|
);
|
|
235
|
-
|
|
236
|
-
gasLimit = BigNumber.from(overrides?.maxGasLimit ?? this.gasLimit);
|
|
234
|
+
gasLimit = BigInt(maxGasLimit ?? this.gasLimit);
|
|
237
235
|
}
|
|
238
236
|
unsignedTx.gasLimit = gasLimit;
|
|
239
237
|
}
|
|
@@ -265,7 +263,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
265
263
|
public async getOrderById(
|
|
266
264
|
symbol: string,
|
|
267
265
|
id: string,
|
|
268
|
-
overrides?:
|
|
266
|
+
overrides?: Overrides & { rpcURL?: string }
|
|
269
267
|
): Promise<Order | undefined> {
|
|
270
268
|
let ob = this.getOrderBookContract(symbol);
|
|
271
269
|
// multicall
|
|
@@ -273,63 +271,65 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
273
271
|
if (overrides) {
|
|
274
272
|
({ rpcURL, ...overrides } = overrides);
|
|
275
273
|
}
|
|
276
|
-
const provider = new
|
|
274
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
277
275
|
const multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider);
|
|
278
276
|
const calls: Multicall3.Call3Struct[] = [
|
|
279
277
|
// 0: orderOfDigest
|
|
280
278
|
{
|
|
281
|
-
target: ob.
|
|
279
|
+
target: ob.target,
|
|
282
280
|
allowFailure: false,
|
|
283
281
|
callData: ob.interface.encodeFunctionData("orderOfDigest", [id]),
|
|
284
282
|
},
|
|
285
283
|
// 1: orderDependency
|
|
286
284
|
{
|
|
287
|
-
target: ob.
|
|
285
|
+
target: ob.target,
|
|
288
286
|
allowFailure: false,
|
|
289
287
|
callData: ob.interface.encodeFunctionData("orderDependency", [id]),
|
|
290
288
|
},
|
|
291
289
|
];
|
|
292
|
-
const encodedResults = await multicall.
|
|
290
|
+
const encodedResults = await multicall.aggregate3.staticCall(calls, overrides || {});
|
|
293
291
|
if (encodedResults.some(({ success }) => !success)) {
|
|
294
292
|
return undefined;
|
|
295
293
|
}
|
|
296
294
|
|
|
297
|
-
const smartContractOrder = ob.interface.decodeFunctionResult(
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
295
|
+
const smartContractOrder = ob.interface.decodeFunctionResult(
|
|
296
|
+
"orderOfDigest",
|
|
297
|
+
encodedResults[0].returnData
|
|
298
|
+
) as unknown as [
|
|
299
|
+
bigint,
|
|
300
|
+
bigint,
|
|
301
|
+
bigint,
|
|
301
302
|
string,
|
|
302
|
-
|
|
303
|
+
bigint,
|
|
303
304
|
string,
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
305
|
+
bigint,
|
|
306
|
+
bigint,
|
|
307
|
+
bigint,
|
|
307
308
|
string,
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
309
|
+
bigint,
|
|
310
|
+
bigint,
|
|
311
|
+
bigint,
|
|
311
312
|
string
|
|
312
313
|
] & {
|
|
313
|
-
leverageTDR:
|
|
314
|
-
brokerFeeTbps:
|
|
315
|
-
iPerpetualId:
|
|
314
|
+
leverageTDR: bigint;
|
|
315
|
+
brokerFeeTbps: bigint;
|
|
316
|
+
iPerpetualId: bigint;
|
|
316
317
|
traderAddr: string;
|
|
317
|
-
executionTimestamp:
|
|
318
|
+
executionTimestamp: bigint;
|
|
318
319
|
brokerAddr: string;
|
|
319
|
-
submittedTimestamp:
|
|
320
|
-
flags:
|
|
321
|
-
iDeadline:
|
|
320
|
+
submittedTimestamp: bigint;
|
|
321
|
+
flags: bigint;
|
|
322
|
+
iDeadline: bigint;
|
|
322
323
|
executorAddr: string;
|
|
323
|
-
fAmount:
|
|
324
|
-
fLimitPrice:
|
|
325
|
-
fTriggerPrice:
|
|
324
|
+
fAmount: bigint;
|
|
325
|
+
fLimitPrice: bigint;
|
|
326
|
+
fTriggerPrice: bigint;
|
|
326
327
|
brokerSignature: string;
|
|
327
328
|
};
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
] & {
|
|
329
|
+
const orderDependency = ob.interface.decodeFunctionResult(
|
|
330
|
+
"orderDependency",
|
|
331
|
+
encodedResults[1].returnData
|
|
332
|
+
) as unknown as [string, string] & {
|
|
333
333
|
parentChildDigest1: string;
|
|
334
334
|
parentChildDigest2: string;
|
|
335
335
|
};
|
|
@@ -368,7 +368,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
368
368
|
orderId: string,
|
|
369
369
|
blockTimestamp?: number,
|
|
370
370
|
indexPrices?: [number, number],
|
|
371
|
-
overrides?:
|
|
371
|
+
overrides?: Overrides & { rpcURL?: string }
|
|
372
372
|
): Promise<boolean> {
|
|
373
373
|
if (this.proxyContract == null || this.multicall == null) {
|
|
374
374
|
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
@@ -381,11 +381,11 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
381
381
|
if (overrides) {
|
|
382
382
|
({ rpcURL, ...overrides } = overrides);
|
|
383
383
|
}
|
|
384
|
-
const provider = new
|
|
384
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
385
385
|
|
|
386
386
|
const fS2S3 = indexPrices.map((x) => floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)) as [
|
|
387
|
-
|
|
388
|
-
|
|
387
|
+
bigint,
|
|
388
|
+
bigint
|
|
389
389
|
];
|
|
390
390
|
const perpId = this.getPerpIdFromSymbol(order.symbol);
|
|
391
391
|
const fAmount = floatToABK64x64(order.quantity * (order.side == BUY_SIDE ? 1 : -1));
|
|
@@ -394,25 +394,25 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
394
394
|
const proxyCalls: Multicall3.Call3Struct[] = [
|
|
395
395
|
// 0: trade amount price
|
|
396
396
|
{
|
|
397
|
-
target: this.proxyContract.
|
|
397
|
+
target: this.proxyContract.target,
|
|
398
398
|
allowFailure: true,
|
|
399
399
|
callData: this.proxyContract.interface.encodeFunctionData("queryPerpetualPrice", [perpId, fAmount, fS2S3]),
|
|
400
400
|
},
|
|
401
401
|
// 1: amm state to get the mark price
|
|
402
402
|
{
|
|
403
|
-
target: this.proxyContract.
|
|
403
|
+
target: this.proxyContract.target,
|
|
404
404
|
allowFailure: true,
|
|
405
405
|
callData: this.proxyContract.interface.encodeFunctionData("getAMMState", [perpId, fS2S3]),
|
|
406
406
|
},
|
|
407
407
|
// 2: order status to see if it's still open
|
|
408
408
|
{
|
|
409
|
-
target: orderBook.
|
|
409
|
+
target: orderBook.target,
|
|
410
410
|
allowFailure: true,
|
|
411
411
|
callData: orderBook.interface.encodeFunctionData("getOrderStatus", [orderId]),
|
|
412
412
|
},
|
|
413
413
|
// 3: block timestamp
|
|
414
414
|
{
|
|
415
|
-
target: this.multicall.
|
|
415
|
+
target: this.multicall.target,
|
|
416
416
|
allowFailure: false,
|
|
417
417
|
callData: this.multicall.interface.encodeFunctionData("getCurrentBlockTimestamp"),
|
|
418
418
|
},
|
|
@@ -420,23 +420,23 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
420
420
|
|
|
421
421
|
const hasParent =
|
|
422
422
|
order.parentChildOrderIds != undefined &&
|
|
423
|
-
order.parentChildOrderIds[0] ==
|
|
424
|
-
order.parentChildOrderIds[1] !=
|
|
423
|
+
order.parentChildOrderIds[0] == ZeroHash &&
|
|
424
|
+
order.parentChildOrderIds[1] != ZeroHash;
|
|
425
425
|
|
|
426
426
|
if (hasParent) {
|
|
427
427
|
// 4: order has a parent, one more call needed:
|
|
428
428
|
proxyCalls.push({
|
|
429
|
-
target: orderBook.
|
|
429
|
+
target: orderBook.target,
|
|
430
430
|
allowFailure: true,
|
|
431
431
|
callData: orderBook.interface.encodeFunctionData("getOrderStatus", [order.parentChildOrderIds![1]]),
|
|
432
432
|
});
|
|
433
433
|
}
|
|
434
434
|
// multicall
|
|
435
435
|
const multicall = Multicall3__factory.connect(this.config.multicall ?? MULTICALL_ADDRESS, provider);
|
|
436
|
-
const encodedResults = await multicall.
|
|
436
|
+
const encodedResults = await multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
437
437
|
|
|
438
438
|
// order status
|
|
439
|
-
let iOrderStatus:
|
|
439
|
+
let iOrderStatus: BigNumberish;
|
|
440
440
|
if (encodedResults[2].success) {
|
|
441
441
|
iOrderStatus = orderBook.interface.decodeFunctionResult("getOrderStatus", encodedResults[2].returnData)[0];
|
|
442
442
|
} else {
|
|
@@ -449,7 +449,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
449
449
|
|
|
450
450
|
// parent status
|
|
451
451
|
if (hasParent) {
|
|
452
|
-
let iParentOrderStatus:
|
|
452
|
+
let iParentOrderStatus: BigNumberish;
|
|
453
453
|
if (encodedResults[4].success) {
|
|
454
454
|
iParentOrderStatus = orderBook.interface.decodeFunctionResult(
|
|
455
455
|
"getOrderStatus",
|
|
@@ -465,37 +465,35 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
465
465
|
}
|
|
466
466
|
|
|
467
467
|
// mark price
|
|
468
|
-
let ammState:
|
|
468
|
+
let ammState: bigint[];
|
|
469
469
|
if (encodedResults[1].success) {
|
|
470
470
|
ammState = this.proxyContract.interface.decodeFunctionResult(
|
|
471
471
|
"getAMMState",
|
|
472
472
|
encodedResults[1].returnData
|
|
473
|
-
)[0] as
|
|
473
|
+
)[0] as bigint[];
|
|
474
474
|
} else {
|
|
475
475
|
ammState = await this.proxyContract.getAMMState(perpId, fS2S3);
|
|
476
476
|
}
|
|
477
477
|
const markPrice = indexPrices[0] * (1 + ABK64x64ToFloat(ammState[8]));
|
|
478
478
|
|
|
479
479
|
// price
|
|
480
|
-
let fOrderPrice:
|
|
480
|
+
let fOrderPrice: bigint;
|
|
481
481
|
if (encodedResults[0].success) {
|
|
482
482
|
fOrderPrice = this.proxyContract.interface.decodeFunctionResult(
|
|
483
483
|
"queryPerpetualPrice",
|
|
484
484
|
encodedResults[0].returnData
|
|
485
|
-
)[0] as
|
|
485
|
+
)[0] as bigint;
|
|
486
486
|
} else {
|
|
487
487
|
fOrderPrice = await this.proxyContract.queryPerpetualPrice(perpId, fAmount, fS2S3);
|
|
488
488
|
}
|
|
489
489
|
const orderPrice = ABK64x64ToFloat(fOrderPrice);
|
|
490
490
|
|
|
491
491
|
// block timestamp
|
|
492
|
-
const ts = (
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
).toNumber();
|
|
498
|
-
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);
|
|
499
497
|
return this._isTradeable(order, orderPrice, markPrice, blockTimestamp, this.symbolToPerpStaticInfo);
|
|
500
498
|
}
|
|
501
499
|
|
|
@@ -529,7 +527,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
529
527
|
orderIds: string[],
|
|
530
528
|
blockTimestamp?: number,
|
|
531
529
|
indexPrices?: [number, number, boolean, boolean],
|
|
532
|
-
overrides?:
|
|
530
|
+
overrides?: Overrides & { rpcURL?: string }
|
|
533
531
|
): Promise<boolean[]> {
|
|
534
532
|
const MAX_ORDERS_CHECKED = 10;
|
|
535
533
|
let totalOrders = orders.length;
|
|
@@ -564,7 +562,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
564
562
|
orderIds: string[],
|
|
565
563
|
blockTimestamp?: number,
|
|
566
564
|
indexPrices?: [number, number, boolean, boolean],
|
|
567
|
-
overrides?:
|
|
565
|
+
overrides?: Overrides & { rpcURL?: string }
|
|
568
566
|
): Promise<boolean[]> {
|
|
569
567
|
if (orders.length == 0) {
|
|
570
568
|
return [];
|
|
@@ -587,11 +585,11 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
587
585
|
if (overrides) {
|
|
588
586
|
({ rpcURL, ...overrides } = overrides);
|
|
589
587
|
}
|
|
590
|
-
const provider = new
|
|
588
|
+
const provider = new JsonRpcProvider(rpcURL ?? this.nodeURL, this.network, { staticNetwork: true });
|
|
591
589
|
|
|
592
590
|
const fS2S3 = [indexPrices[0], indexPrices[1]].map((x) =>
|
|
593
591
|
floatToABK64x64(x == undefined || Number.isNaN(x) ? 0 : x)
|
|
594
|
-
) as [
|
|
592
|
+
) as [bigint, bigint];
|
|
595
593
|
const perpId = this.getPerpIdFromSymbol(orders[0].symbol);
|
|
596
594
|
const fAmounts = orders.map((order) => floatToABK64x64(order.quantity * (order.side == BUY_SIDE ? 1 : -1)));
|
|
597
595
|
const orderBook = this.getOrderBookContract(orders[0].symbol).connect(provider);
|
|
@@ -601,13 +599,13 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
601
599
|
let proxyCalls: Multicall3.Call3Struct[] = [
|
|
602
600
|
// 0: amm state to get the mark price
|
|
603
601
|
{
|
|
604
|
-
target: this.proxyContract.
|
|
602
|
+
target: this.proxyContract.target,
|
|
605
603
|
allowFailure: false,
|
|
606
604
|
callData: this.proxyContract.interface.encodeFunctionData("getAMMState", [perpId, fS2S3]),
|
|
607
605
|
},
|
|
608
606
|
// 1: block timestamp
|
|
609
607
|
{
|
|
610
|
-
target: this.multicall.
|
|
608
|
+
target: this.multicall.target,
|
|
611
609
|
allowFailure: false,
|
|
612
610
|
callData: this.multicall.interface.encodeFunctionData("getCurrentBlockTimestamp"),
|
|
613
611
|
},
|
|
@@ -615,7 +613,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
615
613
|
|
|
616
614
|
// status calls
|
|
617
615
|
const statusCalls: Multicall3.Call3Struct[] = orderIds.map((orderId) => ({
|
|
618
|
-
target: orderBook.
|
|
616
|
+
target: orderBook.target,
|
|
619
617
|
allowFailure: false,
|
|
620
618
|
callData: orderBook.interface.encodeFunctionData("getOrderStatus", [orderId]),
|
|
621
619
|
}));
|
|
@@ -623,7 +621,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
623
621
|
|
|
624
622
|
// price calls
|
|
625
623
|
const priceCalls: Multicall3.Call3Struct[] = fAmounts.map((fAmount) => ({
|
|
626
|
-
target: this.proxyContract!.
|
|
624
|
+
target: this.proxyContract!.target,
|
|
627
625
|
allowFailure: false,
|
|
628
626
|
callData: this.proxyContract!.interface.encodeFunctionData("queryPerpetualPrice", [perpId, fAmount, fS2S3]),
|
|
629
627
|
}));
|
|
@@ -634,12 +632,12 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
634
632
|
.filter(
|
|
635
633
|
(order) =>
|
|
636
634
|
order.parentChildOrderIds != undefined &&
|
|
637
|
-
order.parentChildOrderIds[0] ==
|
|
638
|
-
order.parentChildOrderIds[1] !=
|
|
635
|
+
order.parentChildOrderIds[0] == ZeroHash &&
|
|
636
|
+
order.parentChildOrderIds[1] != ZeroHash
|
|
639
637
|
)
|
|
640
638
|
.map((order) => {
|
|
641
639
|
return {
|
|
642
|
-
target: orderBook.
|
|
640
|
+
target: orderBook.target,
|
|
643
641
|
allowFailure: false,
|
|
644
642
|
callData: orderBook.interface.encodeFunctionData("getOrderStatus", [order.parentChildOrderIds![1]]),
|
|
645
643
|
};
|
|
@@ -647,23 +645,21 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
647
645
|
proxyCalls = proxyCalls.concat(parentStatusCalls);
|
|
648
646
|
|
|
649
647
|
// --- multicall ---
|
|
650
|
-
const encodedResults = await multicall.
|
|
648
|
+
const encodedResults = await multicall.aggregate3.staticCall(proxyCalls, overrides || {});
|
|
651
649
|
|
|
652
650
|
// mark price
|
|
653
651
|
const ammState = this.proxyContract.interface.decodeFunctionResult(
|
|
654
652
|
"getAMMState",
|
|
655
653
|
encodedResults[0].returnData
|
|
656
|
-
)[0] as
|
|
654
|
+
)[0] as bigint[];
|
|
657
655
|
const markPrice = indexPrices[0] * (1 + ABK64x64ToFloat(ammState[8]));
|
|
658
656
|
|
|
659
657
|
// block timestamp
|
|
660
|
-
const ts = (
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
).toNumber();
|
|
666
|
-
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);
|
|
667
663
|
|
|
668
664
|
// order status
|
|
669
665
|
const isOrderOpen = encodedResults.slice(2, 2 + orders.length).map((encodedResult) => {
|
|
@@ -674,10 +670,7 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
674
670
|
// order prices
|
|
675
671
|
const orderPrices = encodedResults.slice(2 + orders.length, 2 + 2 * orders.length).map((encodedResult) => {
|
|
676
672
|
const orderPrice = ABK64x64ToFloat(
|
|
677
|
-
this.proxyContract!.interface.decodeFunctionResult(
|
|
678
|
-
"queryPerpetualPrice",
|
|
679
|
-
encodedResult.returnData
|
|
680
|
-
)[0] as BigNumber
|
|
673
|
+
this.proxyContract!.interface.decodeFunctionResult("queryPerpetualPrice", encodedResult.returnData)[0] as bigint
|
|
681
674
|
);
|
|
682
675
|
return orderPrice;
|
|
683
676
|
});
|
|
@@ -689,8 +682,8 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
689
682
|
const order = orders[i];
|
|
690
683
|
const hasParent =
|
|
691
684
|
order.parentChildOrderIds != undefined &&
|
|
692
|
-
order.parentChildOrderIds[0] ==
|
|
693
|
-
order.parentChildOrderIds[1] !=
|
|
685
|
+
order.parentChildOrderIds[0] == ZeroHash &&
|
|
686
|
+
order.parentChildOrderIds[1] != ZeroHash;
|
|
694
687
|
if (hasParent) {
|
|
695
688
|
const iParentStatus = orderBook.interface.decodeFunctionResult(
|
|
696
689
|
"getOrderStatus",
|
|
@@ -790,6 +783,6 @@ export default class OrderExecutorTool extends WriteAccessHandler {
|
|
|
790
783
|
if (this.signer == null) {
|
|
791
784
|
throw Error("no wallet initialized. Use createProxyInstance().");
|
|
792
785
|
}
|
|
793
|
-
return await this.signer.
|
|
786
|
+
return await this.signer.getNonce(blockTag);
|
|
794
787
|
}
|
|
795
788
|
}
|