///
import { BorshAccountsCoder } from '@coral-xyz/anchor';
import { Market, Orderbook } from '@project-serum/serum';
import { AccountInfo, AddressLookupTableAccount, PublicKey } from '@solana/web3.js';
import BN from 'bn.js';
import { MangoClient } from '../client';
import { Id } from '../ids';
import { I80F48 } from '../numbers/I80F48';
import { PriceImpact } from '../risk';
import { Bank, MintInfo, TokenIndex } from './bank';
import { OracleProvider } from './oracle';
import { BookSide, PerpMarket, PerpMarketIndex } from './perp';
import { MarketIndex, Serum3Market } from './serum3';
export declare class Group {
publicKey: PublicKey;
creator: PublicKey;
groupNum: number;
admin: PublicKey;
fastListingAdmin: PublicKey;
mngoTokenIndex: TokenIndex;
insuranceMint: PublicKey;
insuranceVault: PublicKey;
testing: number;
version: number;
buybackFees: boolean;
buybackFeesMngoBonusFactor: number;
addressLookupTables: PublicKey[];
securityAdmin: PublicKey;
depositLimitQuote: any;
ixGate: BN;
buybackFeesSwapMangoAccount: PublicKey;
buybackFeesExpiryInterval: BN;
fastListingIntervalStart: BN;
fastListingsInInterval: number;
allowedFastListingsPerInterval: number;
addressLookupTablesList: AddressLookupTableAccount[];
banksMapByName: Map;
banksMapByMint: Map;
banksMapByTokenIndex: Map;
serum3MarketsMapByExternal: Map;
serum3MarketsMapByMarketIndex: Map;
serum3ExternalMarketsMap: Map;
perpMarketsMapByOracle: Map;
perpMarketsMapByMarketIndex: Map;
perpMarketsMapByName: Map;
mintInfosMapByTokenIndex: Map;
mintInfosMapByMint: Map;
vaultAmountsMap: Map;
pis: PriceImpact[];
static from(publicKey: PublicKey, obj: {
creator: PublicKey;
groupNum: number;
admin: PublicKey;
fastListingAdmin: PublicKey;
mngoTokenIndex: number;
insuranceMint: PublicKey;
insuranceVault: PublicKey;
testing: number;
version: number;
buybackFees: number;
buybackFeesMngoBonusFactor: number;
addressLookupTables: PublicKey[];
securityAdmin: PublicKey;
depositLimitQuote: BN;
ixGate: BN;
buybackFeesSwapMangoAccount: PublicKey;
buybackFeesExpiryInterval: BN;
fastListingIntervalStart: BN;
fastListingsInInterval: number;
allowedFastListingsPerInterval: number;
}): Group;
constructor(publicKey: PublicKey, creator: PublicKey, groupNum: number, admin: PublicKey, fastListingAdmin: PublicKey, mngoTokenIndex: TokenIndex, insuranceMint: PublicKey, insuranceVault: PublicKey, testing: number, version: number, buybackFees: boolean, buybackFeesMngoBonusFactor: number, addressLookupTables: PublicKey[], securityAdmin: PublicKey, depositLimitQuote: any, ixGate: BN, buybackFeesSwapMangoAccount: PublicKey, buybackFeesExpiryInterval: BN, fastListingIntervalStart: BN, fastListingsInInterval: number, allowedFastListingsPerInterval: number, addressLookupTablesList: AddressLookupTableAccount[], banksMapByName: Map, banksMapByMint: Map, banksMapByTokenIndex: Map, serum3MarketsMapByExternal: Map, serum3MarketsMapByMarketIndex: Map, serum3ExternalMarketsMap: Map, perpMarketsMapByOracle: Map, perpMarketsMapByMarketIndex: Map, perpMarketsMapByName: Map, mintInfosMapByTokenIndex: Map, mintInfosMapByMint: Map, vaultAmountsMap: Map, pis: PriceImpact[]);
reloadAll(client: MangoClient): Promise;
reloadPriceImpactData(): Promise;
reloadAlts(client: MangoClient): Promise;
reloadBanks(client: MangoClient, ids?: Id): Promise;
reloadMintInfos(client: MangoClient, ids?: Id): Promise;
reloadSerum3Markets(client: MangoClient, ids?: Id): Promise;
reloadSerum3ExternalMarkets(client: MangoClient, ids?: Id): Promise;
reloadPerpMarkets(client: MangoClient, ids?: Id): Promise;
reloadBankOraclePrices(client: MangoClient): Promise;
reloadPerpMarketOraclePrices(client: MangoClient): Promise;
decodePriceFromOracleAi(coder: BorshAccountsCoder, oracle: PublicKey, ai: AccountInfo, baseDecimals: number, client: MangoClient): Promise<{
price: I80F48;
uiPrice: number;
lastUpdatedSlot: number;
provider: OracleProvider;
deviation: I80F48;
}>;
reloadVaults(client: MangoClient): Promise;
getMintDecimals(mintPk: PublicKey): number;
getMintDecimalsByTokenIndex(tokenIndex: TokenIndex): number;
getInsuranceMintDecimals(): number;
getFirstBankByMint(mintPk: PublicKey): Bank;
getFirstBankByTokenIndex(tokenIndex: TokenIndex): Bank;
/**
* Returns a price impact in percentage, between 0 to 100 for a token,
* returns -1 if data is bad
*/
getPriceImpactByTokenIndex(tokenIndex: TokenIndex, usdcAmountUi: number): number;
getFirstBankForMngo(): Bank;
getFirstBankForPerpSettlement(): Bank;
getTokenVaultBalanceByMint(mintPk: PublicKey): BN;
/**
*
* @param mintPk
* @returns sum of ui balances of vaults for all banks for a token
*/
getTokenVaultBalanceByMintUi(mintPk: PublicKey): number;
getSerum3MarketByMarketIndex(marketIndex: MarketIndex): Serum3Market;
getSerum3MarketByName(name: string): Serum3Market;
getSerum3MarketByExternalMarket(externalMarketPk: PublicKey): Serum3Market;
getSerum3ExternalMarket(externalMarketPk: PublicKey): Market;
loadSerum3BidsForMarket(client: MangoClient, externalMarketPk: PublicKey): Promise;
loadSerum3AsksForMarket(client: MangoClient, externalMarketPk: PublicKey): Promise;
findPerpMarket(marketIndex: PerpMarketIndex): PerpMarket;
getPerpMarketByOracle(oracle: PublicKey): PerpMarket;
getPerpMarketByMarketIndex(marketIndex: PerpMarketIndex): PerpMarket;
getPerpMarketByName(perpMarketName: string): PerpMarket;
loadPerpBidsForMarket(client: MangoClient, perpMarketIndex: PerpMarketIndex): Promise;
loadPerpAsksForMarket(client: MangoClient, group: Group, perpMarketIndex: PerpMarketIndex): Promise;
consoleLogBanks(): void;
toUiPrice(price: I80F48 | number, baseDecimals: number): number;
toNativePrice(uiPrice: number, baseDecimals: number): I80F48;
toNativeDecimals(uiAmount: number, mintPk: PublicKey): BN;
toString(): string;
}
//# sourceMappingURL=group.d.ts.map