import { PublicKey } from "@solana/web3.js"; import { I80F48Bits } from "../../../core/math/i80f48"; export declare enum BankOperationalState { Paused = 0, Operational = 1, ReduceOnly = 2, KilledByBankruptcy = 3 } export declare const INTEREST_CURVE_LEGACY = 0; export declare const INTEREST_CURVE_SEVEN_POINT = 1; export interface RatePoint { util: number; rate: number; } export interface InterestRateConfig { optimalUtilizationRate: I80F48Bits; plateauInterestRate: I80F48Bits; maxInterestRate: I80F48Bits; insuranceFeeFixedApr: I80F48Bits; insuranceIrFee: I80F48Bits; protocolFixedFeeApr: I80F48Bits; protocolIrFee: I80F48Bits; zeroUtilRate: number; hundredUtilRate: number; points: RatePoint[]; curveType: number; } export interface MarginfiState { mint: PublicKey; mintDecimals: number; assetShareValueBits: I80F48Bits; liabilityShareValueBits: I80F48Bits; liquidityVault: PublicKey; totalLiabilitySharesBits: I80F48Bits; totalAssetSharesBits: I80F48Bits; lastUpdate: bigint; depositLimit: bigint; operationalState: BankOperationalState; assetTag: number; cachedLendingRate: number; cachedUserAssetSharesBits: I80F48Bits; underlyingTokenProgram: PublicKey; oracleSetup: number; oracleKeys: PublicKey[]; interestRateConfig: InterestRateConfig; groupProgramFeesEnabled: boolean; groupProgramFeeFixed: I80F48Bits; groupProgramFeeRate: I80F48Bits; } export declare const MARGINFI_PD_OFF_UNDERLYING_TOKEN_KIND = 98; export declare const BANK_LEN = 1864; export declare const BANK_DISCRIMINATOR: Uint8Array; export declare function emptyMarginfiState(): MarginfiState; export declare function decodeMarginfiBank(data: Uint8Array): MarginfiState; export declare function remainingAccountsPerBank(oracleSetup: number): number; export declare const MARGINFI_ACCOUNT_DISCRIMINATOR: Uint8Array; export declare const MARGINFI_ACCOUNT_LEN = 2312; export declare function readAssetSharesForBank(data: Uint8Array, bankPk: PublicKey): bigint; export declare const MARGINFI_GROUP_LEN = 1064; export declare const MARGINFI_GROUP_DISCRIMINATOR: Uint8Array; export interface MarginfiGroupState { programFeesEnabled: boolean; programFeeFixed: I80F48Bits; programFeeRate: I80F48Bits; } export declare function decodeMarginfiGroup(data: Uint8Array): MarginfiGroupState;