import { web3 } from '@coral-xyz/anchor';
import { BondOfferState, BondOfferStruct, BondOfferStructSerialized } from './BondOffer.types';
import { FetchBondOffersFilters } from './BondOffer.fetchers';
import { GetCreateOfferIxnsParams } from '../../../core/instructions/BondOffer/getCreateOfferIxns';
import { BanxMarket } from '../BanxMarket/BanxMarket';
import { GetUpdateOfferIxnsParams } from '../../../core/instructions/BondOffer/getUpdateOfferIxns';
import { GetBorrowIxnsParams } from '../../../core/instructions/BondOffer/getBorrowIxns';
import { AdjustBondOffersByMultipleVaultBalancesParams, AdjustBondOffersByVaultBalanceParams } from './BondOffer.utils';
export declare class BondOffer {
    readonly struct: Readonly<BondOfferStruct>;
    constructor(bondOffer: BondOfferStruct);
    static fromSerialized(bondOfferSerialized: BondOfferStructSerialized): BondOffer;
    serialize(): BondOfferStructSerialized;
    static fetch(connection: web3.Connection, publicKey: web3.PublicKey): Promise<BondOffer | null>;
    static fetchMultiple(connection: web3.Connection, publicKeys: web3.PublicKey[]): Promise<BondOffer[]>;
    static fetchAll(connection: web3.Connection, filters?: FetchBondOffersFilters): Promise<BondOffer[]>;
    getSize(): import("bn.js");
    getState(): BondOfferState;
    getMaxMultiplier(): void;
    getMaxCollateralToReceive(): void;
    static getCreateIxns(params: GetCreateOfferIxnsParams['args'] & {
        banxMarket: BanxMarket;
        walletPublicKey: web3.PublicKey;
    }, connection: web3.Connection): Promise<{
        mutatedAccounts: {
            bondOffer: web3.PublicKey;
        };
        instructions: web3.TransactionInstruction[];
        signers: web3.Signer[];
    }>;
    getRemoveIxns(params: {
        walletPublicKey: web3.PublicKey;
    }, connection: web3.Connection): Promise<{
        mutatedAccounts: {
            bondOffer: web3.PublicKey;
        };
        instructions: web3.TransactionInstruction[];
        signers: web3.Signer[];
    }>;
    getUpdateIxns(params: GetUpdateOfferIxnsParams['args'] & {
        walletPublicKey: web3.PublicKey;
        banxMarket: BanxMarket;
    }, connection: web3.Connection): Promise<{
        mutatedAccounts: {
            bondOffer: web3.PublicKey;
        };
        instructions: web3.TransactionInstruction[];
        signers: web3.Signer[];
    }>;
    getBorrowIxns(params: GetBorrowIxnsParams['args'] & {
        walletPublicKey: web3.PublicKey;
        banxMarket: BanxMarket;
    }, connection: web3.Connection): Promise<{
        mutatedAccounts: {
            bondOffer: web3.PublicKey;
            bondLoan: web3.PublicKey;
        };
        instructions: web3.TransactionInstruction[];
        signers: web3.Signer[];
    }>;
    static adjustOffersByVaultBalance({ bondOffers, userVault }: AdjustBondOffersByVaultBalanceParams): BondOffer[];
    static adjustOffersByMultipleVaultBalances({ bondOffers, userVaults, }: AdjustBondOffersByMultipleVaultBalancesParams): BondOffer[];
}
