///
///
import { BN, Program, Provider } from '@coral-xyz/anchor';
import { AccountInfo, AddressLookupTableAccount, Cluster, Commitment, Connection, PublicKey, TransactionInstruction } from '@solana/web3.js';
import { Bank, MintInfo, TokenIndex } from './accounts/bank';
import { Group } from './accounts/group';
import { MangoAccount, TokenConditionalSwapDisplayPriceStyle, TokenConditionalSwapIntention } from './accounts/mangoAccount';
import { StubOracle } from './accounts/oracle';
import { PerpMarket, PerpMarketIndex, PerpOrderSide, PerpOrderType, PerpSelfTradeBehavior } from './accounts/perp';
import { MarketIndex, Serum3Market, Serum3OrderType, Serum3SelfTradeBehavior, Serum3Side } from './accounts/serum3';
import { IxGateParams, PerpEditParams, TokenEditParams, TokenRegisterParams } from './clientIxParamBuilder';
import { Id } from './ids';
import { MangoV4 } from './mango_v4';
import { FlashLoanType, OracleConfigParams } from './types';
import { LatestBlockhash, MangoSignatureStatus, SendTransactionOpts } from './utils/rpc';
export declare const DEFAULT_TOKEN_CONDITIONAL_SWAP_COUNT = 8;
export declare const PERP_SETTLE_PNL_CU_LIMIT = 400000;
export declare const PERP_SETTLE_FEES_CU_LIMIT = 20000;
export declare const SERUM_SETTLE_FUNDS_CU_LIMIT = 65000;
export declare enum AccountRetriever {
Scanning = 0,
Fixed = 1
}
export type IdsSource = 'api' | 'static' | 'get-program-accounts';
export type MangoClientOptions = {
idsSource?: IdsSource;
postSendTxCallback?: (callbackOpts: TxCallbackOptions) => void;
postTxConfirmationCallback?: (callbackOpts: TxCallbackOptions) => void;
prioritizationFee?: number;
estimateFee?: boolean;
txConfirmationCommitment?: Commitment;
openbookFeesToDao?: boolean;
prependedGlobalAdditionalInstructions?: TransactionInstruction[];
multipleConnections?: Connection[];
};
export type TxCallbackOptions = {
txid: string;
txSignatureBlockHash: LatestBlockhash;
};
export declare class MangoClient {
program: Program;
programId: PublicKey;
cluster: Cluster;
opts: MangoClientOptions;
private idsSource;
private postSendTxCallback?;
postTxConfirmationCallback?: (callbackOpts: TxCallbackOptions) => void;
private prioritizationFee;
private estimateFee;
private txConfirmationCommitment;
private openbookFeesToDao;
private prependedGlobalAdditionalInstructions;
multipleConnections: Connection[];
constructor(program: Program, programId: PublicKey, cluster: Cluster, opts?: MangoClientOptions);
get connection(): Connection;
get walletPk(): PublicKey;
sendAndConfirmTransaction(ixs: TransactionInstruction[], opts?: SendTransactionOpts): Promise;
sendAndConfirmTransaction(ixs: TransactionInstruction[], opts?: {
confirmInBackground: true;
} & SendTransactionOpts): Promise;
sendAndConfirmTransactionForGroup(group: Group, ixs: TransactionInstruction[], opts?: SendTransactionOpts): Promise;
sendAndConfirmTransactionForGroup(group: Group, ixs: TransactionInstruction[], opts?: {
confirmInBackground: true;
} & SendTransactionOpts): Promise;
adminTokenWithdrawFees(group: Group, bank: Bank, tokenAccountPk: PublicKey): Promise;
adminPerpWithdrawFees(group: Group, perpMarket: PerpMarket, tokenAccountPk: PublicKey): Promise;
groupCreate(groupNum: number, testing: boolean, version: number, insuranceMintPk: PublicKey): Promise;
groupEdit(group: Group, admin?: PublicKey, fastListingAdmin?: PublicKey, securityAdmin?: PublicKey, testing?: number, version?: number, depositLimitQuote?: BN, feesPayWithMngo?: boolean, feesMngoBonusRate?: number, feesSwapMangoAccount?: PublicKey, feesMngoTokenIndex?: TokenIndex, feesExpiryInterval?: BN, allowedFastListingsPerInterval?: number): Promise;
ixGateSet(group: Group, ixGateParams: IxGateParams): Promise;
groupClose(group: Group): Promise;
getGroup(groupPk: PublicKey): Promise;
getGroupsForCreator(creatorPk: PublicKey): Promise;
getGroupForCreator(creatorPk: PublicKey, groupNum: number): Promise;
getIds(groupPk: PublicKey): Promise;
tokenRegister(group: Group, mintPk: PublicKey, oraclePk: PublicKey, tokenIndex: number, name: string, params: TokenRegisterParams): Promise;
tokenRegisterTrustless(group: Group, mintPk: PublicKey, oraclePk: PublicKey, tokenIndex: number, name: string): Promise;
tokenEdit(group: Group, mintPk: PublicKey, params: TokenEditParams): Promise;
tokenForceCloseBorrowsWithToken(group: Group, liqor: MangoAccount, liqee: MangoAccount, assetTokenIndex: TokenIndex, liabTokenIndex: TokenIndex, maxLiabTransfer?: number): Promise;
tokenDeregister(group: Group, mintPk: PublicKey): Promise;
getBanksForGroup(group: Group): Promise;
getMintInfosForGroup(group: Group): Promise;
getMintInfoForTokenIndex(group: Group, tokenIndex: TokenIndex): Promise;
stubOracleCreate(group: Group, mintPk: PublicKey, price: number): Promise;
stubOracleClose(group: Group, oracle: PublicKey): Promise;
stubOracleSet(group: Group, oraclePk: PublicKey, price: number): Promise;
getStubOracle(group: Group, mintPk?: PublicKey): Promise;
createMangoAccount(group: Group, accountNumber?: number, name?: string, tokenCount?: number, serum3Count?: number, perpCount?: number, perpOoCount?: number): Promise;
expandMangoAccount(group: Group, account: MangoAccount, tokenCount: number, serum3Count: number, perpCount: number, perpOoCount: number): Promise;
accountExpandV2(group: Group, account: MangoAccount, tokenCount: number, serum3Count: number, perpCount: number, perpOoCount: number, tokenConditionalSwapCount: number): Promise;
accountExpandV2Ix(group: Group, account: MangoAccount, tokenCount: number, serum3Count: number, perpCount: number, perpOoCount: number, tokenConditionalSwapCount: number): Promise;
editMangoAccount(group: Group, mangoAccount: MangoAccount, name?: string, delegate?: PublicKey, temporaryDelegate?: PublicKey, delegateExpiry?: number): Promise;
toggleMangoAccountFreeze(group: Group, mangoAccount: MangoAccount, freeze: boolean): Promise;
getMangoAccount(mangoAccountPk: PublicKey, loadSerum3Oo?: boolean): Promise;
private getMangoAccountFromPk;
getMangoAccountFromAi(mangoAccountPk: PublicKey, ai: AccountInfo): MangoAccount;
getMangoAccountWithSlot(mangoAccountPk: PublicKey, loadSerum3Oo?: boolean): Promise<{
slot: number;
value: MangoAccount;
} | undefined>;
getMangoAccountForOwner(group: Group, ownerPk: PublicKey, accountNumber: number, loadSerum3Oo?: boolean): Promise;
getMangoAccountsForOwner(group: Group, ownerPk: PublicKey, loadSerum3Oo?: boolean): Promise;
getMangoAccountsForDelegate(group: Group, delegate: PublicKey, loadSerum3Oo?: boolean): Promise;
getAllMangoAccounts(group: Group, loadSerum3Oo?: boolean): Promise;
/**
* Note: this ix doesn't settle liabs, reduce open positions, or withdraw tokens to wallet,
* it simply closes the account. To close successfully ensure all positions are closed, or
* use forceClose flag
* @param group
* @param mangoAccount
* @param forceClose
* @returns
*/
closeMangoAccount(group: Group, mangoAccount: MangoAccount, forceClose?: boolean): Promise;
emptyAndCloseMangoAccount(group: Group, mangoAccount: MangoAccount): Promise;
accountBuybackFeesWithMngoIx(group: Group, mangoAccount: MangoAccount, maxBuybackUsd?: number): Promise;
accountBuybackFeesWithMngo(group: Group, mangoAccount: MangoAccount, maxBuyback?: number): Promise;
tokenDeposit(group: Group, mangoAccount: MangoAccount, mintPk: PublicKey, amount: number, reduceOnly?: boolean): Promise;
tokenDepositNative(group: Group, mangoAccount: MangoAccount, mintPk: PublicKey, nativeAmount: BN, reduceOnly?: boolean): Promise;
tokenWithdrawAllDepositForAllUnconfidentOrStaleOracles(group: Group, mangoAccount: MangoAccount): Promise;
/**
* Withdraw the entire deposit balance for a token, effectively freeing the token position
*
* @param group
* @param mangoAccount
* @param mintPk
* @returns
*/
tokenWithdrawAllDepositForMint(group: Group, mangoAccount: MangoAccount, mintPk: PublicKey): Promise;
tokenWithdraw(group: Group, mangoAccount: MangoAccount, mintPk: PublicKey, amount: number, allowBorrow: boolean): Promise;
tokenWithdrawNativeIx(group: Group, mangoAccount: MangoAccount, mintPk: PublicKey, nativeAmount: BN, allowBorrow: boolean): Promise;
tokenWithdrawNative(group: Group, mangoAccount: MangoAccount, mintPk: PublicKey, nativeAmount: BN, allowBorrow: boolean): Promise;
serum3RegisterMarket(group: Group, serum3MarketExternalPk: PublicKey, baseBank: Bank, quoteBank: Bank, marketIndex: number, name: string, oraclePriceBand: number): Promise;
serum3EditMarketIx(group: Group, serum3MarketIndex: MarketIndex, admin: PublicKey, reduceOnly: boolean | null, forceClose: boolean | null, name: string | null, oraclePriceBand: number | null): Promise;
serum3EditMarket(group: Group, serum3MarketIndex: MarketIndex, reduceOnly: boolean | null, forceClose: boolean | null, name: string | null, oraclePriceBand: number | null): Promise;
serum3deregisterMarket(group: Group, externalMarketPk: PublicKey): Promise;
serum3GetMarkets(group: Group, baseTokenIndex?: number, quoteTokenIndex?: number): Promise;
serum3CreateOpenOrders(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey): Promise;
serum3CreateOpenOrdersIx(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey): Promise;
serum3CloseOpenOrdersIx(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey): Promise;
serum3CloseOpenOrders(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey): Promise;
serum3LiqForceCancelOrders(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey, limit?: number): Promise;
serum3PlaceOrderIx(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey, side: Serum3Side, price: number, size: number, selfTradeBehavior: Serum3SelfTradeBehavior, orderType: Serum3OrderType, clientOrderId: number, limit: number): Promise;
serum3PlaceOrderV1Ix(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey, side: Serum3Side, price: number, size: number, selfTradeBehavior: Serum3SelfTradeBehavior, orderType: Serum3OrderType, clientOrderId: number, limit: number): Promise;
serum3PlaceOrderV2Ix(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey, side: Serum3Side, price: number, size: number, selfTradeBehavior: Serum3SelfTradeBehavior, orderType: Serum3OrderType, clientOrderId: number, limit: number): Promise;
serum3PlaceOrder(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey, side: Serum3Side, price: number, size: number, selfTradeBehavior: Serum3SelfTradeBehavior, orderType: Serum3OrderType, clientOrderId: number, limit: number): Promise;
serum3CancelAllOrdersIx(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey, limit?: number): Promise;
serum3CancelAllOrders(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey, limit?: number): Promise;
serum3SettleFundsIx(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey): Promise;
serum3SettleFundsV2Ix(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey): Promise;
serum3SettleFunds(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey): Promise;
serum3CancelOrderIx(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey, side: Serum3Side, orderId: BN): Promise;
serum3CancelOrder(group: Group, mangoAccount: MangoAccount, externalMarketPk: PublicKey, side: Serum3Side, orderId: BN): Promise;
perpCreateMarket(group: Group, oraclePk: PublicKey, perpMarketIndex: number, name: string, oracleConfig: OracleConfigParams, baseDecimals: number, quoteLotSize: number, baseLotSize: number, maintBaseAssetWeight: number, initBaseAssetWeight: number, maintBaseLiabWeight: number, initBaseLiabWeight: number, maintOverallAssetWeight: number, initOverallAssetWeight: number, baseLiquidationFee: number, makerFee: number, takerFee: number, feePenalty: number, minFunding: number, maxFunding: number, impactQuantity: number, groupInsuranceFund: boolean, settleFeeFlat: number, settleFeeAmountThreshold: number, settleFeeFractionLowHealth: number, settleTokenIndex: number, settlePnlLimitFactor: number, settlePnlLimitWindowSize: number, positivePnlLiquidationFee: number): Promise;
perpEditMarket(group: Group, perpMarketIndex: PerpMarketIndex, params: PerpEditParams): Promise;
perpForceClosePosition(group: Group, perpMarketIndex: PerpMarketIndex, accountA: MangoAccount, accountB: MangoAccount): Promise;
perpCloseMarket(group: Group, perpMarketIndex: PerpMarketIndex): Promise;
perpGetMarkets(group: Group): Promise;
perpDeactivatePositionIx(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex): Promise;
perpDeactivatePosition(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex): Promise;
perpCloseAll(group: Group, mangoAccount: MangoAccount, slippage?: number): Promise;
perpPlaceOrder(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex, side: PerpOrderSide, price: number, quantity: number, maxQuoteQuantity?: number, clientOrderId?: number, orderType?: PerpOrderType, reduceOnly?: boolean, expiryTimestamp?: number, limit?: number): Promise;
perpPlaceOrderIx(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex, side: PerpOrderSide, price: number, quantity: number, maxQuoteQuantity?: number, clientOrderId?: number, orderType?: PerpOrderType, reduceOnly?: boolean, expiryTimestamp?: number, limit?: number): Promise;
perpPlaceOrderV2Ix(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex, side: PerpOrderSide, price: number, quantity: number, maxQuoteQuantity?: number, clientOrderId?: number, orderType?: PerpOrderType, selfTradeBehavior?: PerpSelfTradeBehavior, reduceOnly?: boolean, expiryTimestamp?: number, limit?: number): Promise;
perpPlaceOrderPegged(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex, side: PerpOrderSide, priceOffset: number, quantity: number, pegLimit?: number, maxQuoteQuantity?: number, clientOrderId?: number, orderType?: PerpOrderType, reduceOnly?: boolean, expiryTimestamp?: number, limit?: number): Promise;
perpPlaceOrderPeggedIx(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex, side: PerpOrderSide, priceOffset: number, quantity: number, pegLimit?: number, maxQuoteQuantity?: number, clientOrderId?: number, orderType?: PerpOrderType, reduceOnly?: boolean, expiryTimestamp?: number, limit?: number): Promise;
perpPlaceOrderPeggedV2Ix(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex, side: PerpOrderSide, priceOffset: number, quantity: number, pegLimit?: number, maxQuoteQuantity?: number, clientOrderId?: number, orderType?: PerpOrderType, selfTradeBehavior?: PerpSelfTradeBehavior, reduceOnly?: boolean, expiryTimestamp?: number, limit?: number): Promise;
perpCancelOrderByClientOrderIdIx(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex, clientOrderId: BN): Promise;
perpCancelOrderIx(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex, orderId: BN): Promise;
perpCancelOrder(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex, orderId: BN): Promise;
perpCancelAllOrders(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex, limit: number): Promise;
perpCancelAllOrdersIx(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex, limit: number): Promise;
settleAll(client: MangoClient, group: Group, mangoAccount: MangoAccount, allMangoAccounts?: MangoAccount[]): Promise;
perpSettlePnlAndFees(group: Group, profitableAccount: MangoAccount, unprofitableAccount: MangoAccount, accountToSettleFeesFor: MangoAccount, settler: MangoAccount, perpMarketIndex: PerpMarketIndex, maxSettleAmount?: number): Promise;
perpSettlePnl(group: Group, profitableAccount: MangoAccount, unprofitableAccount: MangoAccount, settler: MangoAccount, perpMarketIndex: PerpMarketIndex): Promise;
perpSettlePnlIx(group: Group, profitableAccount: MangoAccount, unprofitableAccount: MangoAccount, settler: MangoAccount, perpMarketIndex: PerpMarketIndex): Promise;
perpSettleFees(group: Group, account: MangoAccount, perpMarketIndex: PerpMarketIndex, maxSettleAmount?: number): Promise;
perpSettleFeesIx(group: Group, account: MangoAccount, perpMarketIndex: PerpMarketIndex, maxSettleAmount?: number): Promise;
perpConsumeEvents(group: Group, perpMarketIndex: PerpMarketIndex, accounts: PublicKey[], limit: number): Promise;
perpConsumeEventsIx(group: Group, perpMarketIndex: PerpMarketIndex, accounts: PublicKey[], limit: number): Promise;
perpConsumeAllEvents(group: Group, perpMarketIndex: PerpMarketIndex): Promise;
perpUpdateFundingIx(group: Group, perpMarket: PerpMarket): Promise;
marginTrade({ group, mangoAccount, inputMintPk, amountIn, outputMintPk, userDefinedInstructions, userDefinedAlts, flashLoanType, }: {
group: Group;
mangoAccount: MangoAccount;
inputMintPk: PublicKey;
amountIn: number;
outputMintPk: PublicKey;
userDefinedInstructions: TransactionInstruction[];
userDefinedAlts: AddressLookupTableAccount[];
flashLoanType: FlashLoanType;
}): Promise;
tokenUpdateIndexAndRate(group: Group, mintPk: PublicKey): Promise;
tokenUpdateIndexAndRateIx(group: Group, mintPk: PublicKey): Promise;
liqTokenWithToken(group: Group, liqor: MangoAccount, liqee: MangoAccount, assetMintPk: PublicKey, liabMintPk: PublicKey, maxLiabTransfer: number): Promise;
tcsTakeProfitOnDeposit(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, thresholdPrice: number, thresholdPriceInSellPerBuyToken: boolean, maxSell: number | null, pricePremium: number | null, expiryTimestamp: number | null): Promise;
tcsTakeProfitOnDepositIx(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, thresholdPrice: number, thresholdPriceInSellPerBuyToken: boolean, maxSell: number | null, pricePremium: number | null, expiryTimestamp: number | null): Promise;
tcsStopLossOnDeposit(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, thresholdPrice: number, thresholdPriceInSellPerBuyToken: boolean, maxSell: number | null, pricePremium: number | null, expiryTimestamp: number | null): Promise;
tcsStopLossOnDepositIx(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, thresholdPrice: number, thresholdPriceInSellPerBuyToken: boolean, maxSell: number | null, pricePremium: number | null, expiryTimestamp: number | null): Promise;
tcsTakeProfitOnBorrow(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, thresholdPrice: number, thresholdPriceInSellPerBuyToken: boolean, maxBuyUi: number | null, pricePremium: number | null, allowMargin: boolean | null, expiryTimestamp: number | null): Promise;
tcsTakeProfitOnBorrowIx(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, thresholdPrice: number, thresholdPriceInSellPerBuyToken: boolean, maxBuyUi: number | null, pricePremium: number | null, allowMargin: boolean | null, expiryTimestamp: number | null): Promise;
tcsStopLossOnBorrow(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, thresholdPrice: number, thresholdPriceInSellPerBuyToken: boolean, maxBuyUi: number | null, pricePremium: number | null, allowMargin: boolean | null, expiryTimestamp: number | null): Promise;
tcsStopLossOnBorrowIx(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, thresholdPrice: number, thresholdPriceInSellPerBuyToken: boolean, maxBuyUi: number | null, pricePremium: number | null, allowMargin: boolean | null, expiryTimestamp: number | null): Promise;
tokenConditionalSwapCreateIx(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, lowerLimitNativeNative: number, upperLimitNativeNative: number, maxBuy: number, maxSell: number, tcsIntention: 'TakeProfitOnDeposit' | 'StopLossOnDeposit' | 'TakeProfitOnBorrow' | 'StopLossOnBorrow' | null, pricePremium: number | null, allowCreatingDeposits: boolean, allowCreatingBorrows: boolean, expiryTimestamp: number | null, displayPriceInSellTokenPerBuyToken: boolean): Promise;
tokenConditionalSwapCreate(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, lowerLimitNativeNative: number, upperLimitNativeNative: number, maxBuy: number, maxSell: number, tcsIntention: 'TakeProfitOnDeposit' | 'StopLossOnDeposit' | 'TakeProfitOnBorrow' | 'StopLossOnBorrow' | null, pricePremium: number | null, allowCreatingDeposits: boolean, allowCreatingBorrows: boolean, expiryTimestamp: number | null, displayPriceInSellTokenPerBuyToken: boolean): Promise;
tokenConditionalSwapCreateLinearAuctionIx(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, priceStart: number, priceEnd: number, maxBuy: number, maxSell: number, allowCreatingDeposits: boolean, allowCreatingBorrows: boolean, displayPriceInSellTokenPerBuyToken: boolean, startTimestamp: number, durationSeconds: number, expiryTimestamp: number | null): Promise;
tokenConditionalSwapCreateLinearAuction(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, priceStart: number, priceEnd: number, maxBuy: number, maxSell: number, allowCreatingDeposits: boolean, allowCreatingBorrows: boolean, displayPriceInSellTokenPerBuyToken: boolean, startTimestamp: number, durationSeconds: number, expiryTimestamp: number | null): Promise;
tokenConditionalSwapCreatePremiumAuctionIx(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, lowerLimit: number, upperLimit: number, maxBuy: number, maxSell: number, tcsIntention: 'TakeProfitOnDeposit' | 'StopLossOnDeposit' | 'TakeProfitOnBorrow' | 'StopLossOnBorrow' | null, maxPricePremiumPercent: number | null, allowCreatingDeposits: boolean, allowCreatingBorrows: boolean, expiryTimestamp: number | null, displayPriceInSellTokenPerBuyToken: boolean, durationSeconds: number): Promise;
tokenConditionalSwapCreatePremiumAuction(group: Group, account: MangoAccount, sellBank: Bank, buyBank: Bank, lowerLimit: number, upperLimit: number, maxBuy: number, maxSell: number, tcsIntention: 'TakeProfitOnDeposit' | 'StopLossOnDeposit' | 'TakeProfitOnBorrow' | 'StopLossOnBorrow' | null, maxPricePremiumPercent: number | null, allowCreatingDeposits: boolean, allowCreatingBorrows: boolean, expiryTimestamp: number | null, displayPriceInSellTokenPerBuyToken: boolean, durationSeconds: number): Promise;
tokenConditionalSwapCreateRaw(group: Group, account: MangoAccount, buyMintPk: PublicKey, sellMintPk: PublicKey, maxBuy: BN, maxSell: BN, expiryTimestamp: number | null, priceLowerLimit: number, priceUpperLimit: number, pricePremiumRate: number, allowCreatingDeposits: boolean, allowCreatingBorrows: boolean, priceDisplayStyle: TokenConditionalSwapDisplayPriceStyle, intention: TokenConditionalSwapIntention): Promise;
tokenConditionalSwapCreateRawIx(group: Group, account: MangoAccount, buyMintPk: PublicKey, sellMintPk: PublicKey, maxBuy: BN, maxSell: BN, expiryTimestamp: number | null, priceLowerLimit: number, priceUpperLimit: number, pricePremiumRate: number, allowCreatingDeposits: boolean, allowCreatingBorrows: boolean, priceDisplayStyle: TokenConditionalSwapDisplayPriceStyle, intention: TokenConditionalSwapIntention): Promise;
tokenConditionalSwapCancelIx(group: Group, account: MangoAccount, tokenConditionalSwapId: BN): Promise;
tokenConditionalSwapCancel(group: Group, account: MangoAccount, tokenConditionalSwapId: BN): Promise;
tokenConditionalSwapCancelAll(group: Group, account: MangoAccount): Promise;
tokenConditionalSwapTrigger(group: Group, liqee: MangoAccount, liqor: MangoAccount, tokenConditionalSwapId: BN, maxBuyTokenToLiqee: number, maxSellTokenToLiqor: number): Promise;
tokenConditionalSwapTriggerIx(group: Group, liqee: MangoAccount, liqor: MangoAccount, tokenConditionalSwapId: BN, maxBuyTokenToLiqee: number, maxSellTokenToLiqor: number): Promise;
altSet(group: Group, addressLookupTable: PublicKey, index: number): Promise;
altExtend(group: Group, addressLookupTable: PublicKey, index: number, pks: PublicKey[]): Promise;
healthRegionBeginIx(group: Group, account: MangoAccount, banks?: Bank[], perpMarkets?: PerpMarket[]): Promise;
healthRegionEndIx(group: Group, account: MangoAccount, banks?: Bank[], perpMarkets?: PerpMarket[]): Promise;
static connect(provider: Provider, cluster: Cluster, programId: PublicKey, opts?: MangoClientOptions): MangoClient;
/**
* Connect with defaults,
* - random ephemeral keypair,
* - fetch ids using gPa
* - connects to mainnet-beta
* - uses well known program Id
* @param clusterUrl
* @returns
*/
static connectDefault(clusterUrl: string): MangoClient;
static connectForGroupName(provider: Provider, groupName: string): MangoClient;
/**
* Builds health remaining accounts.
*
* For single mango account it builds a list of PublicKeys
* which is compatbile with Fixed account retriever.
*
* For multiple mango accounts it uses same logic as for fixed
* but packing all banks, then perp markets, and then serum oo accounts, which
* should always be compatible with Scanning account retriever.
*
* @param group
* @param mangoAccounts
* @param banks - banks in which new positions might be opened
* @param perpMarkets - markets in which new positions might be opened
* @param openOrdersForMarket - markets in which new positions might be opened
* @returns
*/
buildHealthRemainingAccounts(group: Group, mangoAccounts: MangoAccount[], banks?: Bank[], perpMarkets?: PerpMarket[], openOrdersForMarket?: [Serum3Market, PublicKey][]): PublicKey[];
modifyPerpOrder(group: Group, mangoAccount: MangoAccount, perpMarketIndex: PerpMarketIndex, orderId: BN, side: PerpOrderSide, price: number, quantity: number, maxQuoteQuantity?: number, clientOrderId?: number, orderType?: PerpOrderType, reduceOnly?: boolean, expiryTimestamp?: number, limit?: number): Promise;
modifySerum3Order(group: Group, orderId: BN, mangoAccount: MangoAccount, externalMarketPk: PublicKey, side: Serum3Side, price: number, size: number, selfTradeBehavior: Serum3SelfTradeBehavior, orderType: Serum3OrderType, clientOrderId: number, limit: number): Promise;
/**
* Returns an estimate of a prioritization fee for a set of instructions.
*
* The estimate is based on the median fees of writable accounts that will be involved in the transaction.
*
* @param ixs - the instructions that make up the transaction
* @returns prioritizationFeeEstimate -- in microLamports
*/
estimatePrioritizationFee(ixs: TransactionInstruction[]): Promise;
}
//# sourceMappingURL=client.d.ts.map