///
import { AccountInfo, BlockhashWithExpiryBlockHeight, Commitment, Connection, Keypair, PublicKey, Transaction, TransactionConfirmationStatus, TransactionSignature } from '@solana/web3.js';
import BN from 'bn.js';
import { AssetType, MangoCache } from './layout';
import MangoAccount from './MangoAccount';
import PerpMarket from './PerpMarket';
import RootBank from './RootBank';
import { Market } from '@project-serum/serum';
import { I80F48 } from './utils/fixednum';
import { Order } from '@project-serum/serum/lib/market';
import { PerpOrderType, Payer } from './utils/types';
import { PerpOrder } from './book';
import MangoGroup from './MangoGroup';
import { ReferrerIdRecord } from './layout';
/**
* Get the current epoch timestamp in seconds with microsecond precision
*/
export declare const getUnixTs: () => number;
declare type AccountWithPnl = {
publicKey: PublicKey;
pnl: I80F48;
};
/**
* A class for interacting with the Mango V3 Program
*
* @param connection A solana web.js Connection object
* @param programId The PublicKey of the Mango V3 Program
* @param opts An object used to configure the MangoClient. Accepts a postSendTxCallback
*/
export declare class MangoClient {
connection: Connection;
sendConnection?: Connection;
programId: PublicKey;
lastSlot: number;
lastValidBlockHeight: number;
timeout: number | null;
blockhashCommitment: Commitment;
postSendTxCallback?: ({ txid: string }: {
txid: any;
}) => void;
prioritizationFee: number;
constructor(connection: Connection, programId: PublicKey, opts?: {
postSendTxCallback?: ({ txid }: {
txid: string;
}) => void;
maxStoredBlockhashes?: number;
blockhashCommitment?: Commitment;
timeout?: number;
sendConnection?: Connection;
prioritizationFee?: number;
});
sendTransactions(transactionAndSigners: {
transaction: Transaction;
signers?: Keypair[];
}[], payer: Payer, timeout?: number | null, confirmLevel?: TransactionConfirmationStatus): Promise;
getCurrentBlockhash(): Promise;
signTransaction({ transaction, payer, signers, currentBlockhash, }: {
transaction: Transaction;
payer: any;
signers: Array;
currentBlockhash?: BlockhashWithExpiryBlockHeight;
}): Promise;
signTransactions({ transactionsAndSigners, payer, currentBlockhash, }: {
transactionsAndSigners: {
transaction: Transaction;
signers?: Array;
}[];
payer: Payer;
currentBlockhash?: BlockhashWithExpiryBlockHeight;
}): Promise;
/**
* Send a transaction using the Solana Web3.js connection on the mango client
*
* @param transaction
* @param payer
* @param additionalSigners
* @param timeout Retries sending the transaction and trying to confirm it until the given timeout. Passing null will disable the transaction confirmation check and always return success.
*/
sendTransaction(transaction: Transaction, payer: Payer, additionalSigners: Keypair[], timeout?: number | null, confirmLevel?: TransactionConfirmationStatus): Promise;
sendSignedTransaction({ signedTransaction, timeout, confirmLevel, signedAtBlock, }: {
signedTransaction: Transaction;
timeout?: number | null;
confirmLevel?: TransactionConfirmationStatus;
signedAtBlock?: BlockhashWithExpiryBlockHeight;
}): Promise;
awaitTransactionSignatureConfirmation(txid: TransactionSignature, timeout: number, confirmLevel: TransactionConfirmationStatus, signedAtBlock?: BlockhashWithExpiryBlockHeight): Promise;
/**
* Create a new Mango group
*/
initMangoGroup(quoteMint: PublicKey, msrmMint: PublicKey, dexProgram: PublicKey, feesVault: PublicKey, // owned by Mango DAO token governance
validInterval: number, quoteOptimalUtil: number, quoteOptimalRate: number, quoteMaxRate: number, payer: Payer): Promise;
/**
* Retrieve information about a Mango Group
*/
getMangoGroup(mangoGroup: PublicKey): Promise;
/**
* DEPRECATED - Create a new Mango Account on a given group
*/
initMangoAccount(mangoGroup: MangoGroup, owner: Payer): Promise;
/**
* Create a new Mango Account (PDA) on a given group
*/
createMangoAccount(mangoGroup: MangoGroup, owner: Payer, accountNum: number, payerPk?: PublicKey): Promise;
/**
* Upgrade a Mango Account from V0 (not deletable) to V1 (deletable)
*/
upgradeMangoAccountV0V1(mangoGroup: MangoGroup, owner: Payer, accountNum: number): Promise;
/**
* Retrieve information about a Mango Account
*/
getMangoAccount(mangoAccountPk: PublicKey, dexProgramId: PublicKey): Promise;
/**
* Create a new Mango Account and deposit some tokens in a single transaction
*
* @param rootBank The RootBank for the deposit currency
* @param nodeBank The NodeBank asociated with the RootBank
* @param vault The token account asociated with the NodeBank
* @param tokenAcc The token account to transfer from
* @param info An optional UI name for the account
*/
initMangoAccountAndDeposit(mangoGroup: MangoGroup, owner: Payer, rootBank: PublicKey, nodeBank: PublicKey, vault: PublicKey, tokenAcc: PublicKey, quantity: number, info?: string): Promise;
/**
* Create a new Mango Account (PDA) and deposit some tokens in a single transaction
*
* @param rootBank The RootBank for the deposit currency
* @param nodeBank The NodeBank asociated with the RootBank
* @param vault The token account asociated with the NodeBank
* @param tokenAcc The token account to transfer from
* @param info An optional UI name for the account
*/
createMangoAccountAndDeposit(mangoGroup: MangoGroup, owner: Payer, rootBank: PublicKey, nodeBank: PublicKey, vault: PublicKey, tokenAcc: PublicKey, quantity: number, accountNum: number, info?: string, referrerPk?: PublicKey, payerPk?: PublicKey): Promise<[string, TransactionSignature] | undefined>;
/**
* Deposit tokens in a Mango Account
*
* @param rootBank The RootBank for the deposit currency
* @param nodeBank The NodeBank asociated with the RootBank
* @param vault The token account asociated with the NodeBank
* @param tokenAcc The token account to transfer from
*/
deposit(mangoGroup: MangoGroup, mangoAccount: MangoAccount, owner: Payer, rootBank: PublicKey, nodeBank: PublicKey, vault: PublicKey, tokenAcc: PublicKey, quantity: number): Promise;
/**
* Withdraw tokens from a Mango Account
*
* @param rootBank The RootBank for the withdrawn currency
* @param nodeBank The NodeBank asociated with the RootBank
* @param vault The token account asociated with the NodeBank
* @param allowBorrow Whether to borrow tokens if there are not enough deposits for the withdrawal
*/
withdraw(mangoGroup: MangoGroup, mangoAccount: MangoAccount, owner: Payer, rootBank: PublicKey, nodeBank: PublicKey, vault: PublicKey, quantity: number, allowBorrow: boolean): Promise;
/**
* Withdraw tokens from a Mango Account, only passing open orders accounts in the margin basket
*
* @param rootBank The RootBank for the withdrawn currency
* @param nodeBank The NodeBank asociated with the RootBank
* @param vault The token account asociated with the NodeBank
* @param allowBorrow Whether to borrow tokens if there are not enough deposits for the withdrawal
*/
withdraw2(mangoGroup: MangoGroup, mangoAccount: MangoAccount, owner: Payer, rootBank: PublicKey, nodeBank: PublicKey, vault: PublicKey, quantity: number, allowBorrow: boolean): Promise;
withdrawAll(mangoGroup: MangoGroup, mangoAccount: MangoAccount, owner: Payer): Promise;
/**
* Called by the Keeper to cache interest rates from the RootBanks
*/
cacheRootBanks(mangoGroup: PublicKey, mangoCache: PublicKey, rootBanks: PublicKey[], payer: Payer): Promise;
/**
* Called by the Keeper to cache prices from the Oracles
*/
cachePrices(mangoGroup: PublicKey, mangoCache: PublicKey, oracles: PublicKey[], payer: Payer): Promise;
/**
* Called by the Keeper to cache perp market funding
*/
cachePerpMarkets(mangoGroup: PublicKey, mangoCache: PublicKey, perpMarkets: PublicKey[], payer: Keypair): Promise;
/**
* Called by the Keeper to update interest rates on the RootBanks
*/
updateRootBank(mangoGroup: MangoGroup, rootBank: PublicKey, nodeBanks: PublicKey[], payer: Payer): Promise;
/**
* Called by the Keeper to process events on the Perp order book
*/
consumeEvents(mangoGroup: MangoGroup, perpMarket: PerpMarket, mangoAccounts: PublicKey[], payer: Keypair, limit: BN): Promise;
/**
* Called by the Keeper to update funding on the perp markets
*/
updateFunding(mangoGroup: PublicKey, mangoCache: PublicKey, perpMarket: PublicKey, bids: PublicKey, asks: PublicKey, payer: Keypair): Promise;
/**
* Retrieve information about a perp market
*/
getPerpMarket(perpMarketPk: PublicKey, baseDecimal: number, quoteDecimal: number): Promise;
/**
* Place an order on a perp market
*
* @param clientOrderId An optional id that can be used to correlate events related to your order
* @param bookSideInfo Account info for asks if side === bid, bids if side === ask. If this is given, crank instruction is added
*/
placePerpOrder(mangoGroup: MangoGroup, mangoAccount: MangoAccount, mangoCache: PublicKey, // TODO - remove; already in MangoGroup
perpMarket: PerpMarket, owner: Payer, side: 'buy' | 'sell', price: number, quantity: number, orderType?: PerpOrderType, clientOrderId?: number, bookSideInfo?: AccountInfo, reduceOnly?: boolean, referrerMangoAccountPk?: PublicKey): Promise;
/**
* Place an order on a perp market
*
* @param clientOrderId An optional id that can be used to correlate events related to your order
* @param bookSideInfo Account info for asks if side === bid, bids if side === ask. If this is given, crank instruction is added
*/
placePerpOrder2(mangoGroup: MangoGroup, mangoAccount: MangoAccount, perpMarket: PerpMarket, owner: Payer, side: 'buy' | 'sell', price: number, quantity: number, options?: {
maxQuoteQuantity?: number;
limit?: number;
orderType?: PerpOrderType;
clientOrderId?: number;
bookSideInfo?: AccountInfo;
reduceOnly?: boolean;
referrerMangoAccountPk?: PublicKey;
expiryTimestamp?: number;
}): Promise;
/**
* Cancel an order on a perp market
*
* @param invalidIdOk Don't throw error if order is invalid
*/
cancelPerpOrder(mangoGroup: MangoGroup, mangoAccount: MangoAccount, owner: Payer, perpMarket: PerpMarket, order: PerpOrder, invalidIdOk?: boolean): Promise;
/**
* Cancel all perp orders across all markets
*/
cancelAllPerpOrders(group: MangoGroup, perpMarkets: PerpMarket[], mangoAccount: MangoAccount, owner: Payer, ownerIsSigner?: boolean): Promise;
/**
* Add a new oracle to a group
*/
addOracle(mangoGroup: MangoGroup, oracle: PublicKey, admin: Keypair): Promise;
/**
* Set the price of a 'stub' type oracle
*/
setOracle(mangoGroup: MangoGroup, oracle: PublicKey, admin: Keypair, price: I80F48): Promise;
addSpotMarket(mangoGroup: MangoGroup, oracle: PublicKey, spotMarket: PublicKey, mint: PublicKey, admin: Keypair, maintLeverage: number, initLeverage: number, liquidationFee: number, optimalUtil: number, optimalRate: number, maxRate: number): Promise;
/**
* Make sure mangoAccount has recent and valid inMarginBasket and spotOpenOrders
*/
placeSpotOrder(mangoGroup: MangoGroup, mangoAccount: MangoAccount, mangoCache: PublicKey, spotMarket: Market, owner: Payer, side: 'buy' | 'sell', price: number, size: number, orderType?: 'limit' | 'ioc' | 'postOnly', clientId?: BN): Promise;
/**
* Make sure mangoAccount has recent and valid inMarginBasket and spotOpenOrders
*/
placeSpotOrder2(mangoGroup: MangoGroup, mangoAccount: MangoAccount, spotMarket: Market, owner: Payer, side: 'buy' | 'sell', price: number, size: number, orderType?: 'limit' | 'ioc' | 'postOnly', clientOrderId?: BN, useMsrmVault?: boolean | undefined): Promise;
cancelSpotOrder(mangoGroup: MangoGroup, mangoAccount: MangoAccount, owner: Payer, spotMarket: Market, order: Order): Promise;
settleFunds(mangoGroup: MangoGroup, mangoAccount: MangoAccount, owner: Payer, spotMarket: Market): Promise;
/**
* Assumes spotMarkets contains all Markets in MangoGroup in order
*/
settleAll(mangoGroup: MangoGroup, mangoAccount: MangoAccount, spotMarkets: Market[], owner: Payer): Promise;
fetchTopPnlAccountsFromRPC(mangoGroup: MangoGroup, mangoCache: MangoCache, perpMarket: PerpMarket, price: I80F48, // should be the MangoCache price
sign: number, mangoAccounts?: MangoAccount[]): Promise;
fetchTopPnlAccountsFromDB(mangoGroup: MangoGroup, perpMarket: PerpMarket, sign: number): Promise;
/**
* Automatically fetch MangoAccounts for this PerpMarket
* Pick enough MangoAccounts that have opposite sign and send them in to get settled
*/
settlePnl(mangoGroup: MangoGroup, mangoCache: MangoCache, mangoAccount: MangoAccount, perpMarket: PerpMarket, quoteRootBank: RootBank, price: I80F48, // should be the MangoCache price
owner: Payer, mangoAccounts?: MangoAccount[]): Promise;
/**
* Settle all perp accounts with positive pnl
*/
settlePosPnl(mangoGroup: MangoGroup, mangoCache: MangoCache, mangoAccount: MangoAccount, perpMarkets: PerpMarket[], quoteRootBank: RootBank, owner: Payer, mangoAccounts?: MangoAccount[]): Promise;
/**
* Settle all perp accounts with any pnl
*/
settleAllPerpPnl(mangoGroup: MangoGroup, mangoCache: MangoCache, mangoAccount: MangoAccount, perpMarkets: PerpMarket[], quoteRootBank: RootBank, owner: Payer, mangoAccounts?: MangoAccount[]): Promise<(TransactionSignature | null)[]>;
getMangoAccountsForOwner(mangoGroup: MangoGroup, owner: PublicKey, includeOpenOrders?: boolean): Promise;
/**
* Get all MangoAccounts where `delegate` pubkey has authority
*/
getMangoAccountsForDelegate(mangoGroup: MangoGroup, delegate: PublicKey, includeOpenOrders?: boolean): Promise;
getAllMangoAccounts(mangoGroup: MangoGroup, filters?: any[], includeOpenOrders?: boolean): Promise;
addStubOracle(mangoGroupPk: PublicKey, admin: Keypair): Promise;
setStubOracle(mangoGroupPk: PublicKey, oraclePk: PublicKey, admin: Keypair, price: number): Promise;
addPerpMarket(mangoGroup: MangoGroup, oraclePk: PublicKey, mngoMintPk: PublicKey, admin: Keypair, maintLeverage: number, initLeverage: number, liquidationFee: number, makerFee: number, takerFee: number, baseLotSize: number, quoteLotSize: number, maxNumEvents: number, rate: number, // liquidity mining params; set rate == 0 if no liq mining
maxDepthBps: number, targetPeriodLength: number, mngoPerPeriod: number, exp: number): Promise;
createPerpMarket(mangoGroup: MangoGroup, oraclePk: PublicKey, mngoMintPk: PublicKey, admin: Payer, maintLeverage: number, initLeverage: number, liquidationFee: number, makerFee: number, takerFee: number, baseLotSize: number, quoteLotSize: number, maxNumEvents: number, rate: number, // liquidity mining params; set rate == 0 if no liq mining
maxDepthBps: number, targetPeriodLength: number, mngoPerPeriod: number, exp: number, version: number, lmSizeShift: number, baseDecimals: number): Promise;
forceCancelSpotOrders(mangoGroup: MangoGroup, liqeeMangoAccount: MangoAccount, spotMarket: Market, baseRootBank: RootBank, quoteRootBank: RootBank, payer: Keypair, limit: BN): Promise;
/**
* Send multiple instructions to cancel all perp orders in this market
*/
forceCancelAllPerpOrdersInMarket(mangoGroup: MangoGroup, liqee: MangoAccount, perpMarket: PerpMarket, payer: Payer, limitPerInstruction: number): Promise;
forceCancelPerpOrders(mangoGroup: MangoGroup, liqeeMangoAccount: MangoAccount, perpMarket: PerpMarket, payer: Keypair, limit: BN): Promise;
liquidateTokenAndToken(mangoGroup: MangoGroup, liqeeMangoAccount: MangoAccount, liqorMangoAccount: MangoAccount, assetRootBank: RootBank, liabRootBank: RootBank, payer: Keypair, maxLiabTransfer: I80F48): Promise;
liquidateTokenAndPerp(mangoGroup: MangoGroup, liqeeMangoAccount: MangoAccount, liqorMangoAccount: MangoAccount, rootBank: RootBank, payer: Keypair, assetType: AssetType, assetIndex: number, liabType: AssetType, liabIndex: number, maxLiabTransfer: I80F48): Promise;
liquidatePerpMarket(mangoGroup: MangoGroup, liqeeMangoAccount: MangoAccount, liqorMangoAccount: MangoAccount, perpMarket: PerpMarket, payer: Keypair, baseTransferRequest: BN): Promise;
settleFees(mangoGroup: MangoGroup, mangoAccount: MangoAccount, perpMarket: PerpMarket, rootBank: RootBank, payer: Keypair): Promise;
resolvePerpBankruptcy(mangoGroup: MangoGroup, liqeeMangoAccount: MangoAccount, liqorMangoAccount: MangoAccount, perpMarket: PerpMarket, rootBank: RootBank, payer: Keypair, liabIndex: number, maxLiabTransfer: I80F48): Promise;
resolveTokenBankruptcy(mangoGroup: MangoGroup, liqeeMangoAccount: MangoAccount, liqorMangoAccount: MangoAccount, quoteRootBank: RootBank, liabRootBank: RootBank, payer: Keypair, maxLiabTransfer: I80F48): Promise;
redeemMngo(mangoGroup: MangoGroup, mangoAccount: MangoAccount, perpMarket: PerpMarket, payer: Payer, mngoRootBank: PublicKey, mngoNodeBank: PublicKey, mngoVault: PublicKey): Promise;
redeemAllMngo(mangoGroup: MangoGroup, mangoAccount: MangoAccount, payer: Payer, mngoRootBank: PublicKey, mngoNodeBank: PublicKey, mngoVault: PublicKey): Promise;
addMangoAccountInfo(mangoGroup: MangoGroup, mangoAccount: MangoAccount, owner: Payer, info: string): Promise;
depositMsrm(mangoGroup: MangoGroup, mangoAccount: MangoAccount, owner: Payer, msrmAccount: PublicKey, quantity: number): Promise;
withdrawMsrm(mangoGroup: MangoGroup, mangoAccount: MangoAccount, owner: Payer, msrmAccount: PublicKey, quantity: number): Promise;
changePerpMarketParams(mangoGroup: MangoGroup, perpMarket: PerpMarket, admin: Payer, maintLeverage: number | undefined, initLeverage: number | undefined, liquidationFee: number | undefined, makerFee: number | undefined, takerFee: number | undefined, rate: number | undefined, maxDepthBps: number | undefined, targetPeriodLength: number | undefined, mngoPerPeriod: number | undefined, exp: number | undefined): Promise;
changePerpMarketParams2(mangoGroup: MangoGroup, perpMarket: PerpMarket, admin: Payer, maintLeverage: number | undefined, initLeverage: number | undefined, liquidationFee: number | undefined, makerFee: number | undefined, takerFee: number | undefined, rate: number | undefined, maxDepthBps: number | undefined, targetPeriodLength: number | undefined, mngoPerPeriod: number | undefined, exp: number | undefined, version: number | undefined, lmSizeShift: number | undefined): Promise;
setGroupAdmin(mangoGroup: MangoGroup, newAdmin: PublicKey, admin: Payer): Promise;
/**
* Add allowance for orders to be cancelled and replaced in a single transaction
*/
modifySpotOrder(mangoGroup: MangoGroup, mangoAccount: MangoAccount, mangoCache: PublicKey, spotMarket: Market, owner: Payer, order: Order, side: 'buy' | 'sell', price: number, size: number, orderType?: 'limit' | 'ioc' | 'postOnly'): Promise;
modifyPerpOrder(mangoGroup: MangoGroup, mangoAccount: MangoAccount, mangoCache: PublicKey, perpMarket: PerpMarket, owner: Payer, order: PerpOrder, side: 'buy' | 'sell', price: number, quantity: number, orderType?: PerpOrderType, clientOrderId?: number, bookSideInfo?: AccountInfo, // ask if side === bid, bids if side === ask; if this is given; crank instruction is added
invalidIdOk?: boolean, // Don't throw error if order is invalid
referrerMangoAccountPk?: PublicKey): Promise;
addPerpTriggerOrder(mangoGroup: MangoGroup, mangoAccount: MangoAccount, perpMarket: PerpMarket, owner: Payer, orderType: PerpOrderType, side: 'buy' | 'sell', price: number, quantity: number, triggerCondition: 'above' | 'below', triggerPrice: number, reduceOnly: boolean, clientOrderId?: number): Promise;
removeAdvancedOrder(mangoGroup: MangoGroup, mangoAccount: MangoAccount, owner: Payer, orderIndex: number): Promise;
executePerpTriggerOrder(mangoGroup: MangoGroup, mangoAccount: MangoAccount, mangoCache: MangoCache, perpMarket: PerpMarket, payer: Payer, orderIndex: number): Promise;
closeAdvancedOrders(mangoGroup: MangoGroup, mangoAccount: MangoAccount, payer: Payer): Promise;
closeSpotOpenOrders(mangoGroup: MangoGroup, mangoAccount: MangoAccount, payer: Payer, marketIndex: number, ownerIsSigner?: boolean): Promise;
closeMangoAccount(mangoGroup: MangoGroup, mangoAccount: MangoAccount, payer: Payer): Promise;
createDustAccount(mangoGroup: MangoGroup, payer: Payer): Promise;
resolveDust(mangoGroup: MangoGroup, mangoAccount: MangoAccount, rootBank: RootBank, mangoCache: MangoCache, payer: Payer): Promise;
updateMarginBasket(mangoGroup: MangoGroup, mangoAccount: MangoAccount, payer: Payer): Promise;
resolveAllDust(mangoGroup: MangoGroup, mangoAccount: MangoAccount, mangoCache: MangoCache, payer: Payer): Promise;
emptyAndCloseMangoAccount(mangoGroup: MangoGroup, mangoAccount: MangoAccount, mangoCache: MangoCache, mngoIndex: number, payer: Payer): Promise;
cancelPerpOrderSide(mangoGroup: MangoGroup, mangoAccount: MangoAccount, perpMarket: PerpMarket, payer: Payer, side: 'buy' | 'sell', limit: number): Promise;
setDelegate(mangoGroup: MangoGroup, mangoAccount: MangoAccount, payer: Payer, delegate: PublicKey): Promise;
changeSpotMarketParams(mangoGroup: MangoGroup, spotMarket: Market, rootBank: RootBank, admin: Payer, maintLeverage: number | undefined, initLeverage: number | undefined, liquidationFee: number | undefined, optimalUtil: number | undefined, optimalRate: number | undefined, maxRate: number | undefined, version: number | undefined): Promise;
/**
* Change the referral fee params
* @param mangoGroup
* @param admin
* @param refSurcharge normal units 0.0001 -> 1 basis point
* @param refShare
* @param refMngoRequired ui units -> 1 -> 1_000_000 MNGO
*/
changeReferralFeeParams(mangoGroup: MangoGroup, admin: Payer, refSurcharge: number, refShare: number, refMngoRequired: number): Promise;
setReferrerMemory(mangoGroup: MangoGroup, mangoAccount: MangoAccount, payer: Payer, // must be also owner of mangoAccount
referrerMangoAccountPk: PublicKey): Promise;
getReferrerPda(mangoGroup: MangoGroup, referrerId: string): Promise<{
referrerPda: PublicKey;
encodedReferrerId: Buffer;
}>;
registerReferrerId(mangoGroup: MangoGroup, referrerMangoAccount: MangoAccount, payer: Payer, // will also owner of referrerMangoAccount
referrerId: string): Promise;
getReferrerIdsForMangoAccount(mangoAccount: MangoAccount): Promise;
cancelAllSpotOrders(mangoGroup: MangoGroup, mangoAccount: MangoAccount, spotMarket: Market, owner: Payer, limit: number, ownerIsSigner?: boolean): Promise;
ensureOpenOrdersAccount(mangoAccount: MangoAccount, mangoGroup: MangoGroup, payer: Keypair, spotMarket: Market, spotMarketConfig: any): Promise;
}
export {};
//# sourceMappingURL=client.d.ts.map