@drift-labs/sdk 0.2.0-master.1 → 0.2.0-master.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/accounts/types.d.ts +1 -0
- package/lib/admin.d.ts +6 -3
- package/lib/admin.js +39 -7
- package/lib/clearingHouse.d.ts +13 -14
- package/lib/clearingHouse.js +166 -106
- package/lib/config.js +1 -1
- package/lib/constants/banks.js +8 -1
- package/lib/constants/numericConstants.d.ts +1 -0
- package/lib/constants/numericConstants.js +2 -1
- package/lib/factory/bigNum.d.ts +8 -2
- package/lib/factory/bigNum.js +14 -6
- package/lib/idl/clearing_house.json +277 -55
- package/lib/index.d.ts +2 -1
- package/lib/index.js +6 -1
- package/lib/math/amm.d.ts +6 -1
- package/lib/math/amm.js +124 -41
- package/lib/math/auction.js +4 -1
- package/lib/math/orders.d.ts +2 -2
- package/lib/math/orders.js +18 -11
- package/lib/math/position.js +3 -1
- package/lib/math/repeg.js +1 -1
- package/lib/math/trade.d.ts +1 -1
- package/lib/math/trade.js +7 -10
- package/lib/orderParams.d.ts +14 -5
- package/lib/orderParams.js +8 -96
- package/lib/orders.d.ts +1 -2
- package/lib/orders.js +6 -85
- package/lib/slot/SlotSubscriber.d.ts +7 -0
- package/lib/slot/SlotSubscriber.js +3 -0
- package/lib/tx/utils.js +1 -1
- package/lib/types.d.ts +75 -1
- package/lib/types.js +42 -1
- package/package.json +3 -3
- package/src/accounts/bulkAccountLoader.js +197 -0
- package/src/accounts/bulkUserSubscription.js +33 -0
- package/src/accounts/fetch.js +29 -0
- package/src/accounts/pollingClearingHouseAccountSubscriber.js +311 -0
- package/src/accounts/pollingOracleSubscriber.js +93 -0
- package/src/accounts/pollingTokenAccountSubscriber.js +90 -0
- package/src/accounts/pollingUserAccountSubscriber.js +132 -0
- package/src/accounts/types.js +10 -0
- package/src/accounts/utils.js +7 -0
- package/src/accounts/webSocketAccountSubscriber.js +93 -0
- package/src/accounts/webSocketClearingHouseAccountSubscriber.js +233 -0
- package/src/accounts/webSocketUserAccountSubscriber.js +62 -0
- package/src/addresses/marketAddresses.js +26 -0
- package/src/addresses/pda.js +104 -0
- package/src/admin.ts +60 -8
- package/src/assert/assert.js +9 -0
- package/src/clearingHouse.ts +223 -183
- package/src/config.ts +1 -1
- package/src/constants/banks.ts +8 -1
- package/src/constants/numericConstants.ts +1 -0
- package/src/events/eventList.js +77 -0
- package/src/events/eventSubscriber.js +139 -0
- package/src/events/fetchLogs.js +50 -0
- package/src/events/pollingLogProvider.js +64 -0
- package/src/events/sort.js +44 -0
- package/src/events/txEventCache.js +71 -0
- package/src/events/types.js +20 -0
- package/src/events/webSocketLogProvider.js +41 -0
- package/src/examples/makeTradeExample.js +80 -0
- package/src/factory/bigNum.js +364 -0
- package/src/factory/bigNum.ts +26 -9
- package/src/factory/oracleClient.js +20 -0
- package/src/idl/clearing_house.json +277 -55
- package/src/index.js +69 -0
- package/src/index.ts +2 -1
- package/src/math/amm.js +369 -0
- package/src/math/amm.ts +207 -52
- package/src/math/auction.js +42 -0
- package/src/math/auction.ts +5 -1
- package/src/math/bankBalance.js +75 -0
- package/src/math/conversion.js +11 -0
- package/src/math/funding.js +248 -0
- package/src/math/market.js +57 -0
- package/src/math/oracles.js +26 -0
- package/src/math/orders.js +110 -0
- package/src/math/orders.ts +17 -13
- package/src/math/position.js +140 -0
- package/src/math/position.ts +5 -1
- package/src/math/repeg.js +128 -0
- package/src/math/repeg.ts +2 -1
- package/src/math/state.js +15 -0
- package/src/math/trade.js +253 -0
- package/src/math/trade.ts +23 -25
- package/src/math/utils.js +0 -1
- package/src/mockUSDCFaucet.js +171 -0
- package/src/oracles/oracleClientCache.js +19 -0
- package/src/oracles/pythClient.js +46 -0
- package/src/oracles/quoteAssetOracleClient.js +32 -0
- package/src/oracles/switchboardClient.js +69 -0
- package/src/oracles/types.js +2 -0
- package/src/orderParams.js +20 -0
- package/src/orderParams.ts +20 -141
- package/src/orders.js +134 -0
- package/src/orders.ts +7 -131
- package/src/slot/SlotSubscriber.js +39 -0
- package/src/slot/SlotSubscriber.ts +11 -1
- package/src/token/index.js +38 -0
- package/src/tx/retryTxSender.js +188 -0
- package/src/tx/types.js +2 -0
- package/src/tx/utils.js +17 -0
- package/src/tx/utils.ts +1 -1
- package/src/types.js +114 -0
- package/src/types.ts +69 -3
- package/src/userName.js +20 -0
- package/src/util/promiseTimeout.js +14 -0
- package/src/util/tps.js +27 -0
- package/src/wallet.js +35 -0
- package/src/util/computeUnits.js +0 -17
- package/src/util/computeUnits.js.map +0 -1
package/lib/accounts/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="bn.js" />
|
|
3
|
+
/// <reference types="node" />
|
|
3
4
|
import { BankAccount, MarketAccount, OracleSource, StateAccount, UserAccount } from '../types';
|
|
4
5
|
import StrictEventEmitter from 'strict-event-emitter-types';
|
|
5
6
|
import { EventEmitter } from 'events';
|
package/lib/admin.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { BN } from '@project-serum/anchor';
|
|
|
5
5
|
import { ClearingHouse } from './clearingHouse';
|
|
6
6
|
export declare class Admin extends ClearingHouse {
|
|
7
7
|
initialize(usdcMint: PublicKey, adminControlsPrices: boolean): Promise<[TransactionSignature]>;
|
|
8
|
-
initializeBank(mint: PublicKey, optimalUtilization: BN, optimalRate: BN, maxRate: BN, oracle: PublicKey, oracleSource: OracleSource, initialAssetWeight: BN, maintenanceAssetWeight: BN, initialLiabilityWeight: BN, maintenanceLiabilityWeight: BN): Promise<TransactionSignature>;
|
|
8
|
+
initializeBank(mint: PublicKey, optimalUtilization: BN, optimalRate: BN, maxRate: BN, oracle: PublicKey, oracleSource: OracleSource, initialAssetWeight: BN, maintenanceAssetWeight: BN, initialLiabilityWeight: BN, maintenanceLiabilityWeight: BN, imfFactor?: BN): Promise<TransactionSignature>;
|
|
9
9
|
initializeMarket(priceOracle: PublicKey, baseAssetReserve: BN, quoteAssetReserve: BN, periodicity: BN, pegMultiplier?: BN, oracleSource?: OracleSource, marginRatioInitial?: number, marginRatioPartial?: number, marginRatioMaintenance?: number): Promise<TransactionSignature>;
|
|
10
10
|
moveAmmPrice(baseAssetReserve: BN, quoteAssetReserve: BN, marketIndex: BN): Promise<TransactionSignature>;
|
|
11
11
|
updateK(sqrtK: BN, marketIndex: BN): Promise<TransactionSignature>;
|
|
@@ -14,12 +14,13 @@ export declare class Admin extends ClearingHouse {
|
|
|
14
14
|
updateAmmOracleTwap(marketIndex: BN): Promise<TransactionSignature>;
|
|
15
15
|
resetAmmOracleTwap(marketIndex: BN): Promise<TransactionSignature>;
|
|
16
16
|
withdrawFromInsuranceVault(amount: BN, recipient: PublicKey): Promise<TransactionSignature>;
|
|
17
|
-
|
|
17
|
+
withdrawFromMarketToInsuranceVault(marketIndex: BN, amount: BN, recipient: PublicKey): Promise<TransactionSignature>;
|
|
18
18
|
withdrawFromInsuranceVaultToMarket(marketIndex: BN, amount: BN): Promise<TransactionSignature>;
|
|
19
19
|
updateAdmin(admin: PublicKey): Promise<TransactionSignature>;
|
|
20
20
|
updateCurveUpdateIntensity(marketIndex: BN, curveUpdateIntensity: number): Promise<TransactionSignature>;
|
|
21
21
|
updateMarginRatio(marketIndex: BN, marginRatioInitial: number, marginRatioPartial: number, marginRatioMaintenance: number): Promise<TransactionSignature>;
|
|
22
22
|
updateMarketBaseSpread(marketIndex: BN, baseSpread: number): Promise<TransactionSignature>;
|
|
23
|
+
updateMarketMaxSpread(marketIndex: BN, maxSpread: number): Promise<TransactionSignature>;
|
|
23
24
|
updatePartialLiquidationClosePercentage(numerator: BN, denominator: BN): Promise<TransactionSignature>;
|
|
24
25
|
updatePartialLiquidationPenaltyPercentage(numerator: BN, denominator: BN): Promise<TransactionSignature>;
|
|
25
26
|
updateFullLiquidationPenaltyPercentage(numerator: BN, denominator: BN): Promise<TransactionSignature>;
|
|
@@ -37,5 +38,7 @@ export declare class Admin extends ClearingHouse {
|
|
|
37
38
|
updateFundingPaused(fundingPaused: boolean): Promise<TransactionSignature>;
|
|
38
39
|
updateExchangePaused(exchangePaused: boolean): Promise<TransactionSignature>;
|
|
39
40
|
disableAdminControlsPrices(): Promise<TransactionSignature>;
|
|
40
|
-
|
|
41
|
+
updateAuctionDuration(minDuration: BN | number, maxDuration: BN | number): Promise<TransactionSignature>;
|
|
42
|
+
updateMaxBaseAssetAmountRatio(marketIndex: BN, maxBaseAssetAmountRatio: number): Promise<TransactionSignature>;
|
|
43
|
+
updateMaxSlippageRatio(marketIndex: BN, maxSlippageRatio: number): Promise<TransactionSignature>;
|
|
41
44
|
}
|
package/lib/admin.js
CHANGED
|
@@ -58,12 +58,12 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
58
58
|
const { txSig: initializeTxSig } = await this.txSender.send(initializeTx, [], this.opts);
|
|
59
59
|
return [initializeTxSig];
|
|
60
60
|
}
|
|
61
|
-
async initializeBank(mint, optimalUtilization, optimalRate, maxRate, oracle, oracleSource, initialAssetWeight, maintenanceAssetWeight, initialLiabilityWeight, maintenanceLiabilityWeight) {
|
|
61
|
+
async initializeBank(mint, optimalUtilization, optimalRate, maxRate, oracle, oracleSource, initialAssetWeight, maintenanceAssetWeight, initialLiabilityWeight, maintenanceLiabilityWeight, imfFactor = new anchor_1.BN(0)) {
|
|
62
62
|
const bankIndex = this.getStateAccount().numberOfBanks;
|
|
63
63
|
const bank = await (0, pda_1.getBankPublicKey)(this.program.programId, bankIndex);
|
|
64
64
|
const bankVault = await (0, pda_1.getBankVaultPublicKey)(this.program.programId, bankIndex);
|
|
65
65
|
const bankVaultAuthority = await (0, pda_1.getBankVaultAuthorityPublicKey)(this.program.programId, bankIndex);
|
|
66
|
-
const initializeTx = await this.program.transaction.initializeBank(optimalUtilization, optimalRate, maxRate, oracleSource, initialAssetWeight, maintenanceAssetWeight, initialLiabilityWeight, maintenanceLiabilityWeight, {
|
|
66
|
+
const initializeTx = await this.program.transaction.initializeBank(optimalUtilization, optimalRate, maxRate, oracleSource, initialAssetWeight, maintenanceAssetWeight, initialLiabilityWeight, maintenanceLiabilityWeight, imfFactor, {
|
|
67
67
|
accounts: {
|
|
68
68
|
admin: this.wallet.publicKey,
|
|
69
69
|
state: await this.getStatePublicKey(),
|
|
@@ -177,10 +177,12 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
177
177
|
}
|
|
178
178
|
async withdrawFromInsuranceVault(amount, recipient) {
|
|
179
179
|
const state = await this.getStateAccount();
|
|
180
|
+
const bank = this.getQuoteAssetBankAccount();
|
|
180
181
|
return await this.program.rpc.withdrawFromInsuranceVault(amount, {
|
|
181
182
|
accounts: {
|
|
182
183
|
admin: this.wallet.publicKey,
|
|
183
184
|
state: await this.getStatePublicKey(),
|
|
185
|
+
bank: bank.pubkey,
|
|
184
186
|
insuranceVault: state.insuranceVault,
|
|
185
187
|
insuranceVaultAuthority: state.insuranceVaultAuthority,
|
|
186
188
|
recipient: recipient,
|
|
@@ -188,10 +190,10 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
188
190
|
},
|
|
189
191
|
});
|
|
190
192
|
}
|
|
191
|
-
async
|
|
193
|
+
async withdrawFromMarketToInsuranceVault(marketIndex, amount, recipient) {
|
|
192
194
|
const marketPublicKey = await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex);
|
|
193
195
|
const bank = this.getQuoteAssetBankAccount();
|
|
194
|
-
return await this.program.rpc.
|
|
196
|
+
return await this.program.rpc.withdrawFromMarketToInsuranceVault(amount, {
|
|
195
197
|
accounts: {
|
|
196
198
|
admin: this.wallet.publicKey,
|
|
197
199
|
state: await this.getStatePublicKey(),
|
|
@@ -206,6 +208,7 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
206
208
|
}
|
|
207
209
|
async withdrawFromInsuranceVaultToMarket(marketIndex, amount) {
|
|
208
210
|
const state = await this.getStateAccount();
|
|
211
|
+
const bank = this.getQuoteAssetBankAccount();
|
|
209
212
|
return await this.program.rpc.withdrawFromInsuranceVaultToMarket(amount, {
|
|
210
213
|
accounts: {
|
|
211
214
|
admin: this.wallet.publicKey,
|
|
@@ -213,7 +216,9 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
213
216
|
market: await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex),
|
|
214
217
|
insuranceVault: state.insuranceVault,
|
|
215
218
|
insuranceVaultAuthority: state.insuranceVaultAuthority,
|
|
216
|
-
|
|
219
|
+
bank: bank.pubkey,
|
|
220
|
+
bankVault: bank.vault,
|
|
221
|
+
bankVaultAuthority: bank.vaultAuthority,
|
|
217
222
|
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
218
223
|
},
|
|
219
224
|
});
|
|
@@ -255,6 +260,15 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
255
260
|
},
|
|
256
261
|
});
|
|
257
262
|
}
|
|
263
|
+
async updateMarketMaxSpread(marketIndex, maxSpread) {
|
|
264
|
+
return await this.program.rpc.updateMarketMaxSpread(maxSpread, {
|
|
265
|
+
accounts: {
|
|
266
|
+
admin: this.wallet.publicKey,
|
|
267
|
+
state: await this.getStatePublicKey(),
|
|
268
|
+
market: await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex),
|
|
269
|
+
},
|
|
270
|
+
});
|
|
271
|
+
}
|
|
258
272
|
async updatePartialLiquidationClosePercentage(numerator, denominator) {
|
|
259
273
|
return await this.program.rpc.updatePartialLiquidationClosePercentage(numerator, denominator, {
|
|
260
274
|
accounts: {
|
|
@@ -394,11 +408,29 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
394
408
|
},
|
|
395
409
|
});
|
|
396
410
|
}
|
|
397
|
-
async
|
|
398
|
-
return await this.program.rpc.
|
|
411
|
+
async updateAuctionDuration(minDuration, maxDuration) {
|
|
412
|
+
return await this.program.rpc.updateAuctionDuration(typeof minDuration === 'number' ? minDuration : minDuration.toNumber(), typeof maxDuration === 'number' ? maxDuration : maxDuration.toNumber(), {
|
|
413
|
+
accounts: {
|
|
414
|
+
admin: this.wallet.publicKey,
|
|
415
|
+
state: await this.getStatePublicKey(),
|
|
416
|
+
},
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
async updateMaxBaseAssetAmountRatio(marketIndex, maxBaseAssetAmountRatio) {
|
|
420
|
+
return await this.program.rpc.updateMaxBaseAssetAmountRatio(maxBaseAssetAmountRatio, {
|
|
421
|
+
accounts: {
|
|
422
|
+
admin: this.wallet.publicKey,
|
|
423
|
+
state: await this.getStatePublicKey(),
|
|
424
|
+
market: this.getMarketAccount(marketIndex).pubkey,
|
|
425
|
+
},
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
async updateMaxSlippageRatio(marketIndex, maxSlippageRatio) {
|
|
429
|
+
return await this.program.rpc.updateMaxSlippageRatio(maxSlippageRatio, {
|
|
399
430
|
accounts: {
|
|
400
431
|
admin: this.wallet.publicKey,
|
|
401
432
|
state: await this.getStatePublicKey(),
|
|
433
|
+
market: this.getMarketAccount(marketIndex).pubkey,
|
|
402
434
|
},
|
|
403
435
|
});
|
|
404
436
|
}
|
package/lib/clearingHouse.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="bn.js" />
|
|
3
3
|
import { AnchorProvider, BN, Program } from '@project-serum/anchor';
|
|
4
|
-
import { StateAccount, IWallet, PositionDirection, UserAccount, MarketAccount, OrderParams, Order, BankAccount, UserBankBalance, MakerInfo } from './types';
|
|
4
|
+
import { StateAccount, IWallet, PositionDirection, UserAccount, MarketAccount, OrderParams, Order, BankAccount, UserBankBalance, MakerInfo, TakerInfo, OptionalOrderParams } from './types';
|
|
5
5
|
import { Connection, PublicKey, TransactionSignature, ConfirmOptions, TransactionInstruction, AccountMeta } from '@solana/web3.js';
|
|
6
6
|
import { MockUSDCFaucet } from './mockUSDCFaucet';
|
|
7
7
|
import { EventEmitter } from 'events';
|
|
@@ -95,24 +95,23 @@ export declare class ClearingHouse {
|
|
|
95
95
|
updateBankCumulativeInterest(bankIndex: BN): Promise<TransactionSignature>;
|
|
96
96
|
updateBankCumulativeInterestIx(bankIndex: BN): Promise<TransactionInstruction>;
|
|
97
97
|
openPosition(direction: PositionDirection, amount: BN, marketIndex: BN, limitPrice?: BN): Promise<TransactionSignature>;
|
|
98
|
-
placeOrder(orderParams:
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
getExpireOrdersIx(userAccountPublicKey: PublicKey): Promise<TransactionInstruction>;
|
|
98
|
+
placeOrder(orderParams: OptionalOrderParams): Promise<TransactionSignature>;
|
|
99
|
+
getOrderParams(optionalOrderParams: OptionalOrderParams): OrderParams;
|
|
100
|
+
getPlaceOrderIx(orderParams: OptionalOrderParams): Promise<TransactionInstruction>;
|
|
102
101
|
updateAMMs(marketIndexes: BN[]): Promise<TransactionSignature>;
|
|
103
102
|
getUpdateAMMsIx(marketIndexes: BN[]): Promise<TransactionInstruction>;
|
|
104
|
-
cancelOrder(orderId
|
|
105
|
-
getCancelOrderIx(orderId
|
|
103
|
+
cancelOrder(orderId?: BN): Promise<TransactionSignature>;
|
|
104
|
+
getCancelOrderIx(orderId?: BN): Promise<TransactionInstruction>;
|
|
106
105
|
cancelOrderByUserId(userOrderId: number): Promise<TransactionSignature>;
|
|
107
106
|
getCancelOrderByUserIdIx(userOrderId: number): Promise<TransactionInstruction>;
|
|
108
|
-
|
|
109
|
-
getCancelAllOrdersIx(bestEffort?: boolean): Promise<TransactionInstruction>;
|
|
110
|
-
cancelOrdersByMarketAndSide(bestEffort?: boolean, marketIndexOnly?: BN, directionOnly?: PositionDirection): Promise<TransactionSignature>;
|
|
111
|
-
getCancelOrdersByMarketAndSideIx(bestEffort?: boolean, marketIndexOnly?: BN, directionOnly?: PositionDirection): Promise<TransactionInstruction>;
|
|
112
|
-
fillOrder(userAccountPublicKey: PublicKey, user: UserAccount, order: Order, makerInfo?: MakerInfo): Promise<TransactionSignature>;
|
|
107
|
+
fillOrder(userAccountPublicKey: PublicKey, user: UserAccount, order?: Order, makerInfo?: MakerInfo): Promise<TransactionSignature>;
|
|
113
108
|
getFillOrderIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, order: Order, makerInfo?: MakerInfo): Promise<TransactionInstruction>;
|
|
114
|
-
|
|
115
|
-
|
|
109
|
+
triggerOrder(userAccountPublicKey: PublicKey, user: UserAccount, order: Order): Promise<TransactionSignature>;
|
|
110
|
+
getTriggerOrderIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, order: Order): Promise<TransactionInstruction>;
|
|
111
|
+
placeAndTake(orderParams: OptionalOrderParams, makerInfo?: MakerInfo): Promise<TransactionSignature>;
|
|
112
|
+
getPlaceAndTakeIx(orderParams: OptionalOrderParams, makerInfo?: MakerInfo): Promise<TransactionInstruction>;
|
|
113
|
+
placeAndMake(orderParams: OptionalOrderParams, takerInfo: TakerInfo): Promise<TransactionSignature>;
|
|
114
|
+
getPlaceAndMakeIx(orderParams: OptionalOrderParams, takerInfo: TakerInfo): Promise<TransactionInstruction>;
|
|
116
115
|
/**
|
|
117
116
|
* Close an entire position. If you want to reduce a position, use the {@link openPosition} method in the opposite direction of the current position.
|
|
118
117
|
* @param marketIndex
|
package/lib/clearingHouse.js
CHANGED
|
@@ -29,6 +29,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
exports.ClearingHouse = void 0;
|
|
30
30
|
const anchor_1 = require("@project-serum/anchor");
|
|
31
31
|
const spl_token_1 = require("@solana/spl-token");
|
|
32
|
+
const types_1 = require("./types");
|
|
32
33
|
const anchor = __importStar(require("@project-serum/anchor"));
|
|
33
34
|
const clearing_house_json_1 = __importDefault(require("./idl/clearing_house.json"));
|
|
34
35
|
const web3_js_1 = require("@solana/web3.js");
|
|
@@ -42,7 +43,6 @@ const pollingClearingHouseAccountSubscriber_1 = require("./accounts/pollingClear
|
|
|
42
43
|
const webSocketClearingHouseAccountSubscriber_1 = require("./accounts/webSocketClearingHouseAccountSubscriber");
|
|
43
44
|
const retryTxSender_1 = require("./tx/retryTxSender");
|
|
44
45
|
const clearingHouseUser_1 = require("./clearingHouseUser");
|
|
45
|
-
const orderParams_1 = require("./orderParams");
|
|
46
46
|
const config_1 = require("./config");
|
|
47
47
|
/**
|
|
48
48
|
* # ClearingHouse
|
|
@@ -371,13 +371,19 @@ class ClearingHouse {
|
|
|
371
371
|
});
|
|
372
372
|
}
|
|
373
373
|
else {
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
374
|
+
const bankAccount = this.getBankAccount(bankIndex);
|
|
375
|
+
if (!bankAccount.oracle.equals(web3_js_1.PublicKey.default)) {
|
|
376
|
+
remainingAccounts.push({
|
|
377
|
+
pubkey: bankAccount.oracle,
|
|
377
378
|
isSigner: false,
|
|
378
|
-
isWritable:
|
|
379
|
-
}
|
|
380
|
-
|
|
379
|
+
isWritable: false,
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
remainingAccounts.push({
|
|
383
|
+
pubkey: bankAccount.pubkey,
|
|
384
|
+
isSigner: false,
|
|
385
|
+
isWritable: true,
|
|
386
|
+
});
|
|
381
387
|
}
|
|
382
388
|
const bank = this.getBankAccount(bankIndex);
|
|
383
389
|
return await this.program.instruction.deposit(bankIndex, amount, reduceOnly, {
|
|
@@ -482,17 +488,25 @@ class ClearingHouse {
|
|
|
482
488
|
});
|
|
483
489
|
}
|
|
484
490
|
async openPosition(direction, amount, marketIndex, limitPrice) {
|
|
485
|
-
return await this.placeAndTake(
|
|
491
|
+
return await this.placeAndTake({
|
|
492
|
+
orderType: types_1.OrderType.MARKET,
|
|
493
|
+
marketIndex,
|
|
494
|
+
direction,
|
|
495
|
+
baseAssetAmount: amount,
|
|
496
|
+
price: limitPrice,
|
|
497
|
+
});
|
|
486
498
|
}
|
|
487
499
|
async placeOrder(orderParams) {
|
|
488
500
|
const { txSig, slot } = await this.txSender.send((0, utils_1.wrapInTx)(await this.getPlaceOrderIx(orderParams)), [], this.opts);
|
|
489
501
|
this.marketLastSlotCache.set(orderParams.marketIndex.toNumber(), slot);
|
|
490
502
|
return txSig;
|
|
491
503
|
}
|
|
504
|
+
getOrderParams(optionalOrderParams) {
|
|
505
|
+
return Object.assign({}, types_1.DefaultOrderParams, optionalOrderParams);
|
|
506
|
+
}
|
|
492
507
|
async getPlaceOrderIx(orderParams) {
|
|
508
|
+
orderParams = this.getOrderParams(orderParams);
|
|
493
509
|
const userAccountPublicKey = await this.getUserAccountPublicKey();
|
|
494
|
-
const priceOracle = this.getMarketAccount(orderParams.marketIndex).amm
|
|
495
|
-
.oracle;
|
|
496
510
|
const remainingAccounts = this.getRemainingAccounts({
|
|
497
511
|
writableMarketIndex: orderParams.marketIndex,
|
|
498
512
|
});
|
|
@@ -501,26 +515,10 @@ class ClearingHouse {
|
|
|
501
515
|
state: await this.getStatePublicKey(),
|
|
502
516
|
user: userAccountPublicKey,
|
|
503
517
|
authority: this.wallet.publicKey,
|
|
504
|
-
oracle: priceOracle,
|
|
505
518
|
},
|
|
506
519
|
remainingAccounts,
|
|
507
520
|
});
|
|
508
521
|
}
|
|
509
|
-
async expireOrders(userAccountPublicKey) {
|
|
510
|
-
const { txSig } = await this.txSender.send((0, utils_1.wrapInTx)(await this.getExpireOrdersIx(userAccountPublicKey)), [], this.opts);
|
|
511
|
-
return txSig;
|
|
512
|
-
}
|
|
513
|
-
async getExpireOrdersIx(userAccountPublicKey) {
|
|
514
|
-
const fillerPublicKey = await this.getUserAccountPublicKey();
|
|
515
|
-
return await this.program.instruction.expireOrders({
|
|
516
|
-
accounts: {
|
|
517
|
-
state: await this.getStatePublicKey(),
|
|
518
|
-
filler: fillerPublicKey,
|
|
519
|
-
user: userAccountPublicKey,
|
|
520
|
-
authority: this.wallet.publicKey,
|
|
521
|
-
},
|
|
522
|
-
});
|
|
523
|
-
}
|
|
524
522
|
async updateAMMs(marketIndexes) {
|
|
525
523
|
const { txSig } = await this.txSender.send((0, utils_1.wrapInTx)(await this.getUpdateAMMsIx(marketIndexes)), [], this.opts);
|
|
526
524
|
return txSig;
|
|
@@ -561,15 +559,12 @@ class ClearingHouse {
|
|
|
561
559
|
}
|
|
562
560
|
async getCancelOrderIx(orderId) {
|
|
563
561
|
const userAccountPublicKey = await this.getUserAccountPublicKey();
|
|
564
|
-
const order = this.getOrder(orderId);
|
|
565
|
-
const oracle = this.getMarketAccount(order.marketIndex).amm.oracle;
|
|
566
562
|
const remainingAccounts = this.getRemainingAccounts({});
|
|
567
|
-
return await this.program.instruction.cancelOrder(orderId, {
|
|
563
|
+
return await this.program.instruction.cancelOrder(orderId !== null && orderId !== void 0 ? orderId : null, {
|
|
568
564
|
accounts: {
|
|
569
565
|
state: await this.getStatePublicKey(),
|
|
570
566
|
user: userAccountPublicKey,
|
|
571
567
|
authority: this.wallet.publicKey,
|
|
572
|
-
oracle,
|
|
573
568
|
},
|
|
574
569
|
remainingAccounts,
|
|
575
570
|
});
|
|
@@ -593,117 +588,150 @@ class ClearingHouse {
|
|
|
593
588
|
remainingAccounts,
|
|
594
589
|
});
|
|
595
590
|
}
|
|
596
|
-
async
|
|
597
|
-
const { txSig } = await this.txSender.send((0, utils_1.wrapInTx)(await this.
|
|
591
|
+
async fillOrder(userAccountPublicKey, user, order, makerInfo) {
|
|
592
|
+
const { txSig } = await this.txSender.send((0, utils_1.wrapInTx)(await this.getFillOrderIx(userAccountPublicKey, user, order, makerInfo)), [], this.opts);
|
|
598
593
|
return txSig;
|
|
599
594
|
}
|
|
600
|
-
async
|
|
601
|
-
const
|
|
602
|
-
const
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
return await this.program.instruction.cancelAllOrders(bestEffort, {
|
|
612
|
-
accounts: {
|
|
613
|
-
state: await this.getStatePublicKey(),
|
|
614
|
-
user: userAccountPublicKey,
|
|
615
|
-
authority: this.wallet.publicKey,
|
|
616
|
-
},
|
|
617
|
-
remainingAccounts,
|
|
595
|
+
async getFillOrderIx(userAccountPublicKey, userAccount, order, makerInfo) {
|
|
596
|
+
const fillerPublicKey = await this.getUserAccountPublicKey();
|
|
597
|
+
const marketIndex = order.marketIndex;
|
|
598
|
+
const marketAccount = this.getMarketAccount(marketIndex);
|
|
599
|
+
const oracleAccountMap = new Map();
|
|
600
|
+
const bankAccountMap = new Map();
|
|
601
|
+
const marketAccountMap = new Map();
|
|
602
|
+
marketAccountMap.set(marketIndex.toNumber(), {
|
|
603
|
+
pubkey: marketAccount.pubkey,
|
|
604
|
+
isWritable: true,
|
|
605
|
+
isSigner: false,
|
|
618
606
|
});
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
607
|
+
oracleAccountMap.set(marketAccount.amm.oracle.toString(), {
|
|
608
|
+
pubkey: marketAccount.amm.oracle,
|
|
609
|
+
isWritable: false,
|
|
610
|
+
isSigner: false,
|
|
611
|
+
});
|
|
612
|
+
for (const bankBalance of userAccount.bankBalances) {
|
|
613
|
+
if (!bankBalance.balance.eq(numericConstants_1.ZERO)) {
|
|
614
|
+
const bankAccount = this.getBankAccount(bankBalance.bankIndex);
|
|
615
|
+
bankAccountMap.set(bankBalance.bankIndex.toNumber(), {
|
|
616
|
+
pubkey: bankAccount.pubkey,
|
|
617
|
+
isSigner: false,
|
|
618
|
+
isWritable: true,
|
|
619
|
+
});
|
|
620
|
+
if (!bankAccount.oracle.equals(web3_js_1.PublicKey.default)) {
|
|
621
|
+
oracleAccountMap.set(bankAccount.oracle.toString(), {
|
|
622
|
+
pubkey: bankAccount.oracle,
|
|
623
|
+
isSigner: false,
|
|
624
|
+
isWritable: false,
|
|
625
|
+
});
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
for (const position of userAccount.positions) {
|
|
630
|
+
if (!(0, position_1.positionIsAvailable)(position) &&
|
|
631
|
+
!position.marketIndex.eq(order.marketIndex)) {
|
|
632
|
+
const market = this.getMarketAccount(position.marketIndex);
|
|
633
|
+
marketAccountMap.set(position.marketIndex.toNumber(), {
|
|
634
|
+
pubkey: market.pubkey,
|
|
635
|
+
isWritable: true,
|
|
636
|
+
isSigner: false,
|
|
637
|
+
});
|
|
638
|
+
oracleAccountMap.set(market.amm.oracle.toString(), {
|
|
639
|
+
pubkey: market.amm.oracle,
|
|
640
|
+
isWritable: false,
|
|
641
|
+
isSigner: false,
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
const remainingAccounts = [
|
|
646
|
+
...oracleAccountMap.values(),
|
|
647
|
+
...bankAccountMap.values(),
|
|
648
|
+
...marketAccountMap.values(),
|
|
649
|
+
];
|
|
650
|
+
if (makerInfo) {
|
|
629
651
|
remainingAccounts.push({
|
|
630
|
-
pubkey:
|
|
631
|
-
isWritable:
|
|
652
|
+
pubkey: makerInfo.maker,
|
|
653
|
+
isWritable: true,
|
|
632
654
|
isSigner: false,
|
|
633
655
|
});
|
|
634
656
|
}
|
|
635
|
-
|
|
657
|
+
const orderId = order.orderId;
|
|
658
|
+
const makerOrderId = makerInfo ? makerInfo.order.orderId : null;
|
|
659
|
+
return await this.program.instruction.fillOrder(orderId, makerOrderId, {
|
|
636
660
|
accounts: {
|
|
637
661
|
state: await this.getStatePublicKey(),
|
|
662
|
+
filler: fillerPublicKey,
|
|
638
663
|
user: userAccountPublicKey,
|
|
639
664
|
authority: this.wallet.publicKey,
|
|
640
665
|
},
|
|
641
666
|
remainingAccounts,
|
|
642
667
|
});
|
|
643
668
|
}
|
|
644
|
-
async
|
|
645
|
-
const { txSig } = await this.txSender.send((0, utils_1.wrapInTx)(await this.
|
|
669
|
+
async triggerOrder(userAccountPublicKey, user, order) {
|
|
670
|
+
const { txSig } = await this.txSender.send((0, utils_1.wrapInTx)(await this.getTriggerOrderIx(userAccountPublicKey, user, order)), [], this.opts);
|
|
646
671
|
return txSig;
|
|
647
672
|
}
|
|
648
|
-
async
|
|
673
|
+
async getTriggerOrderIx(userAccountPublicKey, userAccount, order) {
|
|
649
674
|
const fillerPublicKey = await this.getUserAccountPublicKey();
|
|
650
675
|
const marketIndex = order.marketIndex;
|
|
651
676
|
const marketAccount = this.getMarketAccount(marketIndex);
|
|
652
|
-
const
|
|
653
|
-
const
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
677
|
+
const oracleAccountMap = new Map();
|
|
678
|
+
const bankAccountMap = new Map();
|
|
679
|
+
const marketAccountMap = new Map();
|
|
680
|
+
marketAccountMap.set(marketIndex.toNumber(), {
|
|
681
|
+
pubkey: marketAccount.pubkey,
|
|
682
|
+
isWritable: true,
|
|
683
|
+
isSigner: false,
|
|
684
|
+
});
|
|
685
|
+
oracleAccountMap.set(marketAccount.amm.oracle.toString(), {
|
|
686
|
+
pubkey: marketAccount.amm.oracle,
|
|
687
|
+
isWritable: false,
|
|
688
|
+
isSigner: false,
|
|
689
|
+
});
|
|
690
|
+
for (const bankBalance of userAccount.bankBalances) {
|
|
691
|
+
if (!bankBalance.balance.eq(numericConstants_1.ZERO)) {
|
|
692
|
+
const bankAccount = this.getBankAccount(bankBalance.bankIndex);
|
|
693
|
+
bankAccountMap.set(bankBalance.bankIndex.toNumber(), {
|
|
694
|
+
pubkey: bankAccount.pubkey,
|
|
695
|
+
isSigner: false,
|
|
696
|
+
isWritable: true,
|
|
697
|
+
});
|
|
698
|
+
if (!bankAccount.oracle.equals(web3_js_1.PublicKey.default)) {
|
|
699
|
+
oracleAccountMap.set(bankAccount.oracle.toString(), {
|
|
700
|
+
pubkey: bankAccount.oracle,
|
|
701
|
+
isSigner: false,
|
|
702
|
+
isWritable: false,
|
|
703
|
+
});
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
}
|
|
674
707
|
for (const position of userAccount.positions) {
|
|
675
708
|
if (!(0, position_1.positionIsAvailable)(position) &&
|
|
676
709
|
!position.marketIndex.eq(order.marketIndex)) {
|
|
677
710
|
const market = this.getMarketAccount(position.marketIndex);
|
|
678
|
-
|
|
711
|
+
marketAccountMap.set(position.marketIndex.toNumber(), {
|
|
679
712
|
pubkey: market.pubkey,
|
|
680
|
-
isWritable:
|
|
713
|
+
isWritable: true,
|
|
681
714
|
isSigner: false,
|
|
682
715
|
});
|
|
683
|
-
|
|
716
|
+
oracleAccountMap.set(market.amm.oracle.toString(), {
|
|
684
717
|
pubkey: market.amm.oracle,
|
|
685
718
|
isWritable: false,
|
|
686
719
|
isSigner: false,
|
|
687
720
|
});
|
|
688
721
|
}
|
|
689
722
|
}
|
|
690
|
-
const remainingAccounts =
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
isSigner: false,
|
|
696
|
-
});
|
|
697
|
-
}
|
|
723
|
+
const remainingAccounts = [
|
|
724
|
+
...oracleAccountMap.values(),
|
|
725
|
+
...bankAccountMap.values(),
|
|
726
|
+
...marketAccountMap.values(),
|
|
727
|
+
];
|
|
698
728
|
const orderId = order.orderId;
|
|
699
|
-
|
|
700
|
-
return await this.program.instruction.fillOrder(orderId, makerOrderId, {
|
|
729
|
+
return await this.program.instruction.triggerOrder(orderId, {
|
|
701
730
|
accounts: {
|
|
702
731
|
state: await this.getStatePublicKey(),
|
|
703
732
|
filler: fillerPublicKey,
|
|
704
733
|
user: userAccountPublicKey,
|
|
705
734
|
authority: this.wallet.publicKey,
|
|
706
|
-
oracle: oracle,
|
|
707
735
|
},
|
|
708
736
|
remainingAccounts,
|
|
709
737
|
});
|
|
@@ -714,9 +742,8 @@ class ClearingHouse {
|
|
|
714
742
|
return txSig;
|
|
715
743
|
}
|
|
716
744
|
async getPlaceAndTakeIx(orderParams, makerInfo) {
|
|
745
|
+
orderParams = this.getOrderParams(orderParams);
|
|
717
746
|
const userAccountPublicKey = await this.getUserAccountPublicKey();
|
|
718
|
-
const priceOracle = this.getMarketAccount(orderParams.marketIndex).amm
|
|
719
|
-
.oracle;
|
|
720
747
|
const remainingAccounts = this.getRemainingAccounts({
|
|
721
748
|
writableMarketIndex: orderParams.marketIndex,
|
|
722
749
|
writableBankIndex: numericConstants_1.QUOTE_ASSET_BANK_INDEX,
|
|
@@ -735,7 +762,34 @@ class ClearingHouse {
|
|
|
735
762
|
state: await this.getStatePublicKey(),
|
|
736
763
|
user: userAccountPublicKey,
|
|
737
764
|
authority: this.wallet.publicKey,
|
|
738
|
-
|
|
765
|
+
},
|
|
766
|
+
remainingAccounts,
|
|
767
|
+
});
|
|
768
|
+
}
|
|
769
|
+
async placeAndMake(orderParams, takerInfo) {
|
|
770
|
+
const { txSig, slot } = await this.txSender.send((0, utils_1.wrapInTx)(await this.getPlaceAndMakeIx(orderParams, takerInfo)), [], this.opts);
|
|
771
|
+
this.marketLastSlotCache.set(orderParams.marketIndex.toNumber(), slot);
|
|
772
|
+
return txSig;
|
|
773
|
+
}
|
|
774
|
+
async getPlaceAndMakeIx(orderParams, takerInfo) {
|
|
775
|
+
orderParams = this.getOrderParams(orderParams);
|
|
776
|
+
const userAccountPublicKey = await this.getUserAccountPublicKey();
|
|
777
|
+
const remainingAccounts = this.getRemainingAccounts({
|
|
778
|
+
writableMarketIndex: orderParams.marketIndex,
|
|
779
|
+
writableBankIndex: numericConstants_1.QUOTE_ASSET_BANK_INDEX,
|
|
780
|
+
});
|
|
781
|
+
const takerOrderId = takerInfo.order.orderId;
|
|
782
|
+
remainingAccounts.push({
|
|
783
|
+
pubkey: takerInfo.taker,
|
|
784
|
+
isSigner: false,
|
|
785
|
+
isWritable: true,
|
|
786
|
+
});
|
|
787
|
+
return await this.program.instruction.placeAndMake(orderParams, takerOrderId, {
|
|
788
|
+
accounts: {
|
|
789
|
+
state: await this.getStatePublicKey(),
|
|
790
|
+
user: userAccountPublicKey,
|
|
791
|
+
taker: takerInfo.taker,
|
|
792
|
+
authority: this.wallet.publicKey,
|
|
739
793
|
},
|
|
740
794
|
remainingAccounts,
|
|
741
795
|
});
|
|
@@ -750,7 +804,13 @@ class ClearingHouse {
|
|
|
750
804
|
if (!userPosition) {
|
|
751
805
|
throw Error(`No position in market ${marketIndex.toString()}`);
|
|
752
806
|
}
|
|
753
|
-
return await this.placeAndTake(
|
|
807
|
+
return await this.placeAndTake({
|
|
808
|
+
orderType: types_1.OrderType.MARKET,
|
|
809
|
+
marketIndex,
|
|
810
|
+
direction: (0, position_1.findDirectionToClose)(userPosition),
|
|
811
|
+
baseAssetAmount: userPosition.baseAssetAmount,
|
|
812
|
+
reduceOnly: true,
|
|
813
|
+
});
|
|
754
814
|
}
|
|
755
815
|
async settlePNLs(users, marketIndex) {
|
|
756
816
|
const ixs = [];
|
package/lib/config.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.configs = {
|
|
|
7
7
|
devnet: {
|
|
8
8
|
ENV: 'devnet',
|
|
9
9
|
PYTH_ORACLE_MAPPING_ADDRESS: 'BmA9Z6FjioHJPpjT39QazZyhDRUdZy2ezwx4GiDdE2u2',
|
|
10
|
-
CLEARING_HOUSE_PROGRAM_ID: '
|
|
10
|
+
CLEARING_HOUSE_PROGRAM_ID: 'BMow898PH56jD8z4EaqxicoGXkR1HhN17qrER6Uc4AYq',
|
|
11
11
|
USDC_MINT_ADDRESS: '8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2',
|
|
12
12
|
MARKETS: markets_1.DevnetMarkets,
|
|
13
13
|
BANKS: banks_1.DevnetBanks,
|
package/lib/constants/banks.js
CHANGED
|
@@ -12,8 +12,15 @@ exports.DevnetBanks = [
|
|
|
12
12
|
mint: new web3_js_1.PublicKey('8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2'),
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
|
-
symbol: '
|
|
15
|
+
symbol: 'SOL',
|
|
16
16
|
bankIndex: new __1.BN(1),
|
|
17
|
+
oracle: new web3_js_1.PublicKey('J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix'),
|
|
18
|
+
oracleSource: __1.OracleSource.PYTH,
|
|
19
|
+
mint: new web3_js_1.PublicKey('So11111111111111111111111111111111111111112'),
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
symbol: 'BTC',
|
|
23
|
+
bankIndex: new __1.BN(2),
|
|
17
24
|
oracle: new web3_js_1.PublicKey('HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J'),
|
|
18
25
|
oracleSource: __1.OracleSource.PYTH,
|
|
19
26
|
mint: new web3_js_1.PublicKey('Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr'),
|
|
@@ -29,6 +29,7 @@ export declare const AMM_RESERVE_PRECISION: BN;
|
|
|
29
29
|
export declare const BASE_PRECISION: BN;
|
|
30
30
|
export declare const BASE_PRECISION_EXP: BN;
|
|
31
31
|
export declare const AMM_TO_QUOTE_PRECISION_RATIO: BN;
|
|
32
|
+
export declare const PRICE_DIV_PEG: BN;
|
|
32
33
|
export declare const PRICE_TO_QUOTE_PRECISION: BN;
|
|
33
34
|
export declare const AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO: BN;
|
|
34
35
|
export declare const MARGIN_PRECISION: BN;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QUOTE_ASSET_BANK_INDEX = exports.ONE_YEAR = exports.BID_ASK_SPREAD_PRECISION = exports.MARGIN_PRECISION = exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.PRICE_TO_QUOTE_PRECISION = exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.BASE_PRECISION_EXP = exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION = exports.PEG_PRECISION = exports.FUNDING_PAYMENT_PRECISION = exports.MARK_PRICE_PRECISION = exports.QUOTE_PRECISION = exports.BANK_BALANCE_PRECISION = exports.BANK_BALANCE_PRECISION_EXP = exports.BANK_WEIGHT_PRECISION = exports.BANK_RATE_PRECISION = exports.BANK_UTILIZATION_PRECISION = exports.BANK_CUMULATIVE_INTEREST_PRECISION = exports.BANK_INTEREST_PRECISION = exports.AMM_RESERVE_PRECISION_EXP = exports.PEG_PRECISION_EXP = exports.FUNDING_RATE_PRECISION_EXP = exports.MARK_PRICE_PRECISION_EXP = exports.FUNDING_PAYMENT_PRECISION_EXP = exports.QUOTE_PRECISION_EXP = exports.MAX_LEVERAGE = exports.TEN_MILLION = exports.BN_MAX = exports.TEN_THOUSAND = exports.TEN = exports.TWO = exports.ONE = exports.ZERO = void 0;
|
|
3
|
+
exports.QUOTE_ASSET_BANK_INDEX = exports.ONE_YEAR = exports.BID_ASK_SPREAD_PRECISION = exports.MARGIN_PRECISION = exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.PRICE_TO_QUOTE_PRECISION = exports.PRICE_DIV_PEG = exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.BASE_PRECISION_EXP = exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION = exports.PEG_PRECISION = exports.FUNDING_PAYMENT_PRECISION = exports.MARK_PRICE_PRECISION = exports.QUOTE_PRECISION = exports.BANK_BALANCE_PRECISION = exports.BANK_BALANCE_PRECISION_EXP = exports.BANK_WEIGHT_PRECISION = exports.BANK_RATE_PRECISION = exports.BANK_UTILIZATION_PRECISION = exports.BANK_CUMULATIVE_INTEREST_PRECISION = exports.BANK_INTEREST_PRECISION = exports.AMM_RESERVE_PRECISION_EXP = exports.PEG_PRECISION_EXP = exports.FUNDING_RATE_PRECISION_EXP = exports.MARK_PRICE_PRECISION_EXP = exports.FUNDING_PAYMENT_PRECISION_EXP = exports.QUOTE_PRECISION_EXP = exports.MAX_LEVERAGE = exports.TEN_MILLION = exports.BN_MAX = exports.TEN_THOUSAND = exports.TEN = exports.TWO = exports.ONE = exports.ZERO = void 0;
|
|
4
4
|
const __1 = require("../");
|
|
5
5
|
exports.ZERO = new __1.BN(0);
|
|
6
6
|
exports.ONE = new __1.BN(1);
|
|
@@ -31,6 +31,7 @@ exports.AMM_RESERVE_PRECISION = new __1.BN(10).pow(exports.AMM_RESERVE_PRECISION
|
|
|
31
31
|
exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION;
|
|
32
32
|
exports.BASE_PRECISION_EXP = exports.AMM_RESERVE_PRECISION_EXP;
|
|
33
33
|
exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.div(exports.QUOTE_PRECISION); // 10^7
|
|
34
|
+
exports.PRICE_DIV_PEG = exports.MARK_PRICE_PRECISION.div(exports.PEG_PRECISION); //10^7
|
|
34
35
|
exports.PRICE_TO_QUOTE_PRECISION = exports.MARK_PRICE_PRECISION.div(exports.QUOTE_PRECISION);
|
|
35
36
|
exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.mul(exports.PEG_PRECISION).div(exports.QUOTE_PRECISION); // 10^10
|
|
36
37
|
exports.MARGIN_PRECISION = exports.TEN_THOUSAND;
|