@drift-labs/sdk 0.2.0-master.1 → 0.2.0-master.12
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 +8 -5
- package/lib/admin.js +43 -11
- package/lib/clearingHouse.d.ts +35 -20
- package/lib/clearingHouse.js +497 -154
- package/lib/clearingHouseUser.d.ts +12 -17
- package/lib/clearingHouseUser.js +97 -88
- package/lib/config.js +1 -1
- package/lib/constants/banks.d.ts +2 -2
- package/lib/constants/banks.js +12 -4
- package/lib/constants/numericConstants.d.ts +4 -0
- package/lib/constants/numericConstants.js +5 -1
- package/lib/events/eventList.js +3 -0
- package/lib/events/types.d.ts +2 -1
- package/lib/factory/bigNum.d.ts +9 -2
- package/lib/factory/bigNum.js +50 -16
- package/lib/idl/clearing_house.json +858 -177
- package/lib/idl/{mock_usdc_faucet.json → token_faucet.json} +46 -23
- package/lib/index.d.ts +4 -2
- package/lib/index.js +8 -2
- 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/bankBalance.d.ts +3 -1
- package/lib/math/bankBalance.js +54 -1
- package/lib/math/margin.d.ts +11 -0
- package/lib/math/margin.js +72 -0
- package/lib/math/market.d.ts +4 -1
- package/lib/math/market.js +35 -1
- package/lib/math/orders.d.ts +2 -2
- package/lib/math/orders.js +18 -11
- package/lib/math/position.d.ts +8 -0
- package/lib/math/position.js +44 -12
- 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 +2 -4
- package/lib/orders.js +7 -161
- package/lib/slot/SlotSubscriber.d.ts +7 -0
- package/lib/slot/SlotSubscriber.js +3 -0
- package/lib/{mockUSDCFaucet.d.ts → tokenFaucet.d.ts} +8 -5
- package/lib/{mockUSDCFaucet.js → tokenFaucet.js} +63 -51
- package/lib/tx/retryTxSender.js +9 -2
- package/lib/tx/utils.js +1 -1
- package/lib/types.d.ts +159 -15
- package/lib/types.js +59 -1
- package/lib/util/computeUnits.js +1 -1
- package/lib/util/getTokenAddress.d.ts +2 -0
- package/lib/util/getTokenAddress.js +9 -0
- package/package.json +3 -3
- package/src/accounts/bulkAccountLoader.js +197 -0
- package/src/accounts/bulkUserSubscription.js +33 -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/admin.ts +66 -14
- package/src/assert/assert.js +9 -0
- package/src/clearingHouse.ts +836 -254
- package/src/clearingHouseConfig.js +2 -0
- package/src/clearingHouseUser.ts +219 -121
- package/src/clearingHouseUserConfig.js +2 -0
- package/src/config.ts +1 -1
- package/src/constants/banks.js +42 -0
- package/src/constants/banks.ts +14 -4
- package/src/constants/markets.js +42 -0
- package/src/constants/numericConstants.js +41 -0
- package/src/constants/numericConstants.ts +5 -0
- package/src/events/eventList.js +77 -0
- package/src/events/eventList.ts +3 -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/types.ts +2 -0
- package/src/events/webSocketLogProvider.js +41 -0
- package/src/examples/makeTradeExample.js +80 -0
- package/src/factory/bigNum.js +390 -0
- package/src/factory/bigNum.ts +65 -18
- package/src/factory/oracleClient.js +20 -0
- package/src/idl/clearing_house.json +858 -177
- package/src/idl/{mock_usdc_faucet.json → token_faucet.json} +46 -23
- package/src/index.js +69 -0
- package/src/index.ts +4 -2
- 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.ts +98 -1
- package/src/math/conversion.js +11 -0
- package/src/math/funding.js +248 -0
- package/src/math/margin.ts +124 -0
- package/src/math/market.ts +66 -1
- package/src/math/oracles.js +26 -0
- package/src/math/orders.ts +17 -13
- package/src/math/position.ts +63 -9
- 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 +280 -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.ts +10 -287
- package/src/slot/SlotSubscriber.js +39 -0
- package/src/slot/SlotSubscriber.ts +11 -1
- package/src/token/index.js +38 -0
- package/src/tokenFaucet.js +189 -0
- package/src/{mockUSDCFaucet.ts → tokenFaucet.ts} +82 -70
- package/src/tx/retryTxSender.ts +11 -3
- 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 +125 -0
- package/src/types.ts +155 -17
- package/src/userName.js +20 -0
- package/src/util/computeUnits.js +21 -11
- package/src/util/computeUnits.ts +1 -1
- package/src/util/getTokenAddress.js +9 -0
- package/src/util/getTokenAddress.ts +18 -0
- package/src/util/promiseTimeout.js +14 -0
- package/src/util/tps.js +27 -0
- package/src/wallet.js +35 -0
- package/tests/bn/test.ts +2 -0
- 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,8 +5,8 @@ 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>;
|
|
9
|
-
initializeMarket(priceOracle: PublicKey, baseAssetReserve: BN, quoteAssetReserve: BN, periodicity: BN, pegMultiplier?: BN, oracleSource?: OracleSource, marginRatioInitial?: number,
|
|
8
|
+
initializeBank(mint: PublicKey, optimalUtilization: BN, optimalRate: BN, maxRate: BN, oracle: PublicKey, oracleSource: OracleSource, initialAssetWeight: BN, maintenanceAssetWeight: BN, initialLiabilityWeight: BN, maintenanceLiabilityWeight: BN, imfFactor?: BN, liquidationFee?: BN): Promise<TransactionSignature>;
|
|
9
|
+
initializeMarket(priceOracle: PublicKey, baseAssetReserve: BN, quoteAssetReserve: BN, periodicity: BN, pegMultiplier?: BN, oracleSource?: OracleSource, marginRatioInitial?: number, marginRatioMaintenance?: number, liquidationFee?: BN): Promise<TransactionSignature>;
|
|
10
10
|
moveAmmPrice(baseAssetReserve: BN, quoteAssetReserve: BN, marketIndex: BN): Promise<TransactionSignature>;
|
|
11
11
|
updateK(sqrtK: BN, marketIndex: BN): Promise<TransactionSignature>;
|
|
12
12
|
moveAmmToPrice(marketIndex: BN, targetPrice: 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
|
-
updateMarginRatio(marketIndex: BN, marginRatioInitial: number,
|
|
21
|
+
updateMarginRatio(marketIndex: BN, marginRatioInitial: 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), liquidationFee = numericConstants_1.ZERO) {
|
|
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, liquidationFee, {
|
|
67
67
|
accounts: {
|
|
68
68
|
admin: this.wallet.publicKey,
|
|
69
69
|
state: await this.getStatePublicKey(),
|
|
@@ -85,9 +85,9 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
85
85
|
});
|
|
86
86
|
return txSig;
|
|
87
87
|
}
|
|
88
|
-
async initializeMarket(priceOracle, baseAssetReserve, quoteAssetReserve, periodicity, pegMultiplier = numericConstants_1.PEG_PRECISION, oracleSource = types_1.OracleSource.PYTH, marginRatioInitial = 2000,
|
|
88
|
+
async initializeMarket(priceOracle, baseAssetReserve, quoteAssetReserve, periodicity, pegMultiplier = numericConstants_1.PEG_PRECISION, oracleSource = types_1.OracleSource.PYTH, marginRatioInitial = 2000, marginRatioMaintenance = 500, liquidationFee = numericConstants_1.ZERO) {
|
|
89
89
|
const marketPublicKey = await (0, pda_1.getMarketPublicKey)(this.program.programId, this.getStateAccount().numberOfMarkets);
|
|
90
|
-
const initializeMarketTx = await this.program.transaction.initializeMarket(baseAssetReserve, quoteAssetReserve, periodicity, pegMultiplier, oracleSource, marginRatioInitial,
|
|
90
|
+
const initializeMarketTx = await this.program.transaction.initializeMarket(baseAssetReserve, quoteAssetReserve, periodicity, pegMultiplier, oracleSource, marginRatioInitial, marginRatioMaintenance, liquidationFee, {
|
|
91
91
|
accounts: {
|
|
92
92
|
state: await this.getStatePublicKey(),
|
|
93
93
|
admin: this.wallet.publicKey,
|
|
@@ -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
|
});
|
|
@@ -237,8 +242,8 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
237
242
|
},
|
|
238
243
|
});
|
|
239
244
|
}
|
|
240
|
-
async updateMarginRatio(marketIndex, marginRatioInitial,
|
|
241
|
-
return await this.program.rpc.updateMarginRatio(marginRatioInitial,
|
|
245
|
+
async updateMarginRatio(marketIndex, marginRatioInitial, marginRatioMaintenance) {
|
|
246
|
+
return await this.program.rpc.updateMarginRatio(marginRatioInitial, marginRatioMaintenance, {
|
|
242
247
|
accounts: {
|
|
243
248
|
admin: this.wallet.publicKey,
|
|
244
249
|
state: await this.getStatePublicKey(),
|
|
@@ -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,9 +1,9 @@
|
|
|
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
|
-
import {
|
|
6
|
+
import { TokenFaucet } from './tokenFaucet';
|
|
7
7
|
import { EventEmitter } from 'events';
|
|
8
8
|
import StrictEventEmitter from 'strict-event-emitter-types';
|
|
9
9
|
import { ClearingHouseAccountSubscriber, ClearingHouseAccountEvents, DataAndSlot } from './accounts/types';
|
|
@@ -72,22 +72,27 @@ export declare class ClearingHouse {
|
|
|
72
72
|
getRemainingAccounts(params: {
|
|
73
73
|
writableMarketIndex?: BN;
|
|
74
74
|
writableBankIndex?: BN;
|
|
75
|
+
readableMarketIndex?: BN;
|
|
75
76
|
}): AccountMeta[];
|
|
76
77
|
getOrder(orderId: BN | number): Order | undefined;
|
|
77
78
|
getOrderByUserId(userOrderId: number): Order | undefined;
|
|
78
79
|
deposit(amount: BN, bankIndex: BN, collateralAccountPublicKey: PublicKey, userId?: number, reduceOnly?: boolean): Promise<TransactionSignature>;
|
|
79
80
|
getDepositInstruction(amount: BN, bankIndex: BN, userTokenAccount: PublicKey, userId?: number, reduceOnly?: boolean, userInitialized?: boolean): Promise<TransactionInstruction>;
|
|
81
|
+
private checkIfAccountExists;
|
|
82
|
+
private getSolWithdrawalIxs;
|
|
83
|
+
private getWrappedSolAccountCreationIxs;
|
|
80
84
|
/**
|
|
81
85
|
* Creates the Clearing House User account for a user, and deposits some initial collateral
|
|
82
|
-
* @param userId
|
|
83
|
-
* @param name
|
|
84
86
|
* @param amount
|
|
85
87
|
* @param userTokenAccount
|
|
88
|
+
* @param bankIndex
|
|
89
|
+
* @param userId
|
|
90
|
+
* @param name
|
|
86
91
|
* @param fromUserId
|
|
87
92
|
* @returns
|
|
88
93
|
*/
|
|
89
94
|
initializeUserAccountAndDepositCollateral(amount: BN, userTokenAccount: PublicKey, bankIndex?: BN, userId?: number, name?: string, fromUserId?: number): Promise<[TransactionSignature, PublicKey]>;
|
|
90
|
-
initializeUserAccountForDevnet(userId: number, name: string,
|
|
95
|
+
initializeUserAccountForDevnet(userId: number, name: string, bankIndex: BN, tokenFaucet: TokenFaucet, amount: BN): Promise<[TransactionSignature, PublicKey]>;
|
|
91
96
|
withdraw(amount: BN, bankIndex: BN, userTokenAccount: PublicKey, reduceOnly?: boolean): Promise<TransactionSignature>;
|
|
92
97
|
getWithdrawIx(amount: BN, bankIndex: BN, userTokenAccount: PublicKey, reduceOnly?: boolean): Promise<TransactionInstruction>;
|
|
93
98
|
transferDeposit(amount: BN, bankIndex: BN, fromUserId: number, toUserId: number): Promise<TransactionSignature>;
|
|
@@ -95,24 +100,23 @@ export declare class ClearingHouse {
|
|
|
95
100
|
updateBankCumulativeInterest(bankIndex: BN): Promise<TransactionSignature>;
|
|
96
101
|
updateBankCumulativeInterestIx(bankIndex: BN): Promise<TransactionInstruction>;
|
|
97
102
|
openPosition(direction: PositionDirection, amount: BN, marketIndex: BN, limitPrice?: BN): Promise<TransactionSignature>;
|
|
98
|
-
placeOrder(orderParams:
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
getExpireOrdersIx(userAccountPublicKey: PublicKey): Promise<TransactionInstruction>;
|
|
103
|
+
placeOrder(orderParams: OptionalOrderParams): Promise<TransactionSignature>;
|
|
104
|
+
getOrderParams(optionalOrderParams: OptionalOrderParams): OrderParams;
|
|
105
|
+
getPlaceOrderIx(orderParams: OptionalOrderParams): Promise<TransactionInstruction>;
|
|
102
106
|
updateAMMs(marketIndexes: BN[]): Promise<TransactionSignature>;
|
|
103
107
|
getUpdateAMMsIx(marketIndexes: BN[]): Promise<TransactionInstruction>;
|
|
104
|
-
cancelOrder(orderId
|
|
105
|
-
getCancelOrderIx(orderId
|
|
108
|
+
cancelOrder(orderId?: BN): Promise<TransactionSignature>;
|
|
109
|
+
getCancelOrderIx(orderId?: BN): Promise<TransactionInstruction>;
|
|
106
110
|
cancelOrderByUserId(userOrderId: number): Promise<TransactionSignature>;
|
|
107
111
|
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>;
|
|
112
|
+
fillOrder(userAccountPublicKey: PublicKey, user: UserAccount, order?: Order, makerInfo?: MakerInfo): Promise<TransactionSignature>;
|
|
113
113
|
getFillOrderIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, order: Order, makerInfo?: MakerInfo): Promise<TransactionInstruction>;
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
triggerOrder(userAccountPublicKey: PublicKey, user: UserAccount, order: Order): Promise<TransactionSignature>;
|
|
115
|
+
getTriggerOrderIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, order: Order): Promise<TransactionInstruction>;
|
|
116
|
+
placeAndTake(orderParams: OptionalOrderParams, makerInfo?: MakerInfo): Promise<TransactionSignature>;
|
|
117
|
+
getPlaceAndTakeIx(orderParams: OptionalOrderParams, makerInfo?: MakerInfo): Promise<TransactionInstruction>;
|
|
118
|
+
placeAndMake(orderParams: OptionalOrderParams, takerInfo: TakerInfo): Promise<TransactionSignature>;
|
|
119
|
+
getPlaceAndMakeIx(orderParams: OptionalOrderParams, takerInfo: TakerInfo): Promise<TransactionInstruction>;
|
|
116
120
|
/**
|
|
117
121
|
* 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
122
|
* @param marketIndex
|
|
@@ -125,8 +129,19 @@ export declare class ClearingHouse {
|
|
|
125
129
|
}[], marketIndex: BN): Promise<TransactionSignature>;
|
|
126
130
|
settlePNL(settleeUserAccountPublicKey: PublicKey, settleeUserAccount: UserAccount, marketIndex: BN): Promise<TransactionSignature>;
|
|
127
131
|
settlePNLIx(settleeUserAccountPublicKey: PublicKey, settleeUserAccount: UserAccount, marketIndex: BN): Promise<TransactionInstruction>;
|
|
128
|
-
|
|
129
|
-
|
|
132
|
+
liquidatePerp(userAccountPublicKey: PublicKey, userAccount: UserAccount, marketIndex: BN, maxBaseAssetAmount: BN): Promise<TransactionSignature>;
|
|
133
|
+
getLiquidatePerpIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, marketIndex: BN, maxBaseAssetAmount: BN): Promise<TransactionInstruction>;
|
|
134
|
+
liquidateBorrow(userAccountPublicKey: PublicKey, userAccount: UserAccount, assetBankIndex: BN, liabilityBankIndex: BN, maxLiabilityTransfer: BN): Promise<TransactionSignature>;
|
|
135
|
+
getLiquidateBorrowIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, assetBankIndex: BN, liabilityBankIndex: BN, maxLiabilityTransfer: BN): Promise<TransactionInstruction>;
|
|
136
|
+
liquidateBorrowForPerpPnl(userAccountPublicKey: PublicKey, userAccount: UserAccount, perpMarketIndex: BN, liabilityBankIndex: BN, maxLiabilityTransfer: BN): Promise<TransactionSignature>;
|
|
137
|
+
getLiquidateBorrowForPerpPnlIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, perpMarketIndex: BN, liabilityBankIndex: BN, maxLiabilityTransfer: BN): Promise<TransactionInstruction>;
|
|
138
|
+
liquidatePerpPnlForDeposit(userAccountPublicKey: PublicKey, userAccount: UserAccount, perpMarketIndex: BN, assetBankIndex: BN, maxPnlTransfer: BN): Promise<TransactionSignature>;
|
|
139
|
+
getLiquidatePerpPnlForDepositIx(userAccountPublicKey: PublicKey, userAccount: UserAccount, perpMarketIndex: BN, assetBankIndex: BN, maxPnlTransfer: BN): Promise<TransactionInstruction>;
|
|
140
|
+
getRemainingAccountsForLiquidation(params: {
|
|
141
|
+
userAccount: UserAccount;
|
|
142
|
+
writableMarketIndex?: BN;
|
|
143
|
+
writableBankIndexes?: BN[];
|
|
144
|
+
}): AccountMeta[];
|
|
130
145
|
updateFundingRate(oracle: PublicKey, marketIndex: BN): Promise<TransactionSignature>;
|
|
131
146
|
getUpdateFundingRateIx(oracle: PublicKey, marketIndex: BN): Promise<TransactionInstruction>;
|
|
132
147
|
settleFundingPayment(userAccount: PublicKey): Promise<TransactionSignature>;
|