import { BondOfferV3, BondTradeTransactionV2, BondTradeTransactionV2State, BondTradeTransactionV3, BondingCurveType, FraktBond, LendingTokenType, PairState, RedeemResult, RepayDestination, UserVault } from '../../../types';
import { BN, web3 } from '@coral-xyz/anchor';
export declare const optimisticInitializeBondTradeTransaction: (args: {
    loanValue: BN;
    fraktBond: web3.PublicKey;
    assetReceiver: web3.PublicKey;
    borrower: web3.PublicKey;
    bondOffer: web3.PublicKey;
    bondTradeTransaction: web3.PublicKey;
    marketApr: BN;
    inputFee: boolean;
    isStakedBanx: boolean;
    isRefinance: boolean;
    isBorrower: boolean;
    redeemResult: RedeemResult;
    borrowerOriginalLent: BN;
    borrowerFullRepaidAmount: BN;
    lendingToken: LendingTokenType;
    previousDebt: BN;
    isSplCollateral: boolean;
    protocolInterestFee: BN;
    protocolInputFee: BN;
}) => BondTradeTransactionV3;
export declare const optimisticInitializeBondOffer: (args: {
    loanValue: BN;
    hadoMarket: web3.PublicKey;
    assetReceiver: web3.PublicKey;
    bondOffer: web3.PublicKey;
}) => BondOfferV3;
export declare const getRepayAmountOfBondTradeTransaction: (bondTradeTransaction: BondTradeTransactionV3) => BN;
export declare const nowInSeconds: () => number;
export declare const wadMul: (x: number, y: number) => number;
export declare const wadDiv: (x: number, y: number) => number;
export declare const wadMulBN: (x: BN, y: BN) => BN;
export declare const wadDivBN: (x: BN, y: BN) => BN;
export declare const basePointsToWadsBN: (basePoints: BN) => BN;
export declare const basePointsToWads: (basePoints: number) => number;
export declare const calculateCurrentInterestSolPure: ({ loanValue, startTime, currentTime, rateBasePoints, }: {
    loanValue: number;
    startTime: number;
    currentTime: number;
    rateBasePoints: number;
}) => number;
export declare const calculateCurrentInterestSolPureBN: ({ loanValue, startTime, currentTime, rateBasePoints, }: {
    loanValue: BN;
    startTime: BN;
    currentTime: BN;
    rateBasePoints: BN;
}) => BN;
export interface PerpetualLenderActivity {
    lent: BN;
    currentRemainingLentAmount: BN;
    isNewLoan: boolean;
    interest: BN;
    apr: BN;
    status: BondTradeTransactionV2State;
    duration: BN;
    received: BN;
    nftMint: web3.PublicKey;
    timestamp: BN;
    lender: web3.PublicKey;
    borrower: web3.PublicKey;
    publicKey: web3.PublicKey;
}
export declare const getPerpetualLenderActivityV3: (args: {
    fraktBond: FraktBond;
    bondTradeTransaction: BondTradeTransactionV3;
}) => PerpetualLenderActivity[];
export declare const getPerpetualLenderActivity: (args: {
    fraktBond: FraktBond;
    bondTradeTransaction: BondTradeTransactionV2;
}) => PerpetualLenderActivity[];
export interface PerpetualBorrowerActivity {
    borrowed: BN;
    currentLentAmount: BN;
    currentRemainingLentAmount: BN;
    interest: BN;
    apr: BN;
    status: BondTradeTransactionV2State;
    duration: BN;
    repaid: BN;
    nftMint: web3.PublicKey;
    borrower: web3.PublicKey;
    timestamp: BN;
    publicKey: web3.PublicKey;
    bondTradeTransaction: web3.PublicKey;
}
export declare const getPerpetualBorrowerActivityV3: (args: {
    fraktBond: FraktBond;
    bondTradeTransaction: BondTradeTransactionV3;
}) => PerpetualBorrowerActivity[];
export declare const getPerpetualBorrowerActivity: (args: {
    fraktBond: FraktBond;
    bondTradeTransaction: BondTradeTransactionV2;
}) => PerpetualBorrowerActivity[];
export declare const getPerpetualOfferSize: (bondOffer: BondOfferV3) => BN;
export declare const getPerpetualOfferSizeBonding: (bondOffer: BondOfferV3) => BN;
export declare const checkIsHadomarketSponsored: (hadoMarket: string) => string | undefined;
export declare const checkIsTestDev: (user: string) => boolean;
export declare const calculateAccruedInterestOfRepaidBondTradeTransaction: (bondTradeTransaction: BondTradeTransactionV2, repayFee: BN) => BN;
export declare const calculateDynamicApr: (loanToValue: number, turnDynamicAprOn: boolean) => number;
export declare const calculateLoanRepayValue: (bondTradeTransaction: BondTradeTransactionV2, repayFee: BN) => BN;
export declare const getRepaymentDestination: (pairState: PairState | undefined, shouldCompound: boolean) => RepayDestination;
export declare const calculatePartOfLoanBodyFromInterest: (args: {
    soldAt: number;
    rateBasePoints: number;
    iterestToPay: number;
}) => number;
export declare const calculateInputFeeWhenBorrow: (args: {
    amountToGet: BN;
    previousDebt: BN;
    inputFee: boolean;
    isRefinance: boolean;
    isBorrower: boolean;
    inputFeeBp: BN;
}) => BN;
export declare const getBondingCurveTypeFromLendingToken: (lendingToken: LendingTokenType) => BondingCurveType;
export declare const getFullLoanBodyFromBorrowerSendedAmount: (args: {
    borrowerSendedAmount: number;
    upfrontFeeBasePoints: number;
}) => number;
export declare const getTokenMintFromLendingTokenType: (lendingToken: LendingTokenType) => web3.PublicKey;
export declare const calculateCollateralPerTokens: (amountToGet: number, collateralPerToken: any, tokenDecimals: number) => number;
export declare const calculateBanxSolStakingRewards: (args: {
    userVault: UserVault;
    nowSlot: BN;
    currentEpochStartAt: BN;
}) => BN;
