import { Currency, InterBtcAmount, MonetaryAmount } from "@interlay/monetary-js";
import { EscrowLockedBalance, EscrowPoint, OrmlTokensAccountData } from "@polkadot/types/lookup";
import { BigSource } from "big.js";
import BN from "bn.js";
export declare enum CurrencyIdLiteral {
    DOT = "DOT",
    INTERBTC = "IBTC",
    INTR = "INTR",
    KSM = "KSM",
    KBTC = "KBTC",
    KINT = "KINT"
}
export declare type WrappedIdLiteral = CurrencyIdLiteral.INTERBTC | CurrencyIdLiteral.KBTC;
export declare type GovernanceIdLiteral = CurrencyIdLiteral.INTR | CurrencyIdLiteral.KINT;
export declare type CollateralIdLiteral = CurrencyIdLiteral.DOT | CurrencyIdLiteral.KSM | CurrencyIdLiteral.KINT | CurrencyIdLiteral.INTR;
declare const CollateralCurrency: readonly [Currency, Currency, Currency, Currency];
declare type CollateralCurrency = typeof CollateralCurrency[number];
export declare type ForeignAsset = Currency & {
    id: number;
    coingeckoId: string;
};
export declare type CollateralCurrencyExt = CollateralCurrency | ForeignAsset;
export declare type CurrencyExt = Currency | ForeignAsset;
export declare const WrappedCurrency: Currency[];
export declare type WrappedCurrency = typeof WrappedCurrency[number];
export declare const WrappedAmount: (typeof InterBtcAmount)[];
export declare type WrappedAmount = typeof WrappedAmount[number];
export declare const GovernanceCurrency: Currency[];
export declare type GovernanceCurrency = typeof GovernanceCurrency[number];
export declare const VotingCurrency: Currency[];
export declare type VotingCurrency = typeof VotingCurrency[number];
export declare type StakedBalance = {
    amount: MonetaryAmount<GovernanceCurrency>;
    endBlock: number;
};
export declare type RWEscrowPoint = {
    bias: BN;
    slope: BN;
    ts: BN;
};
export declare function parseEscrowPoint(e: EscrowPoint): RWEscrowPoint;
export declare class ChainBalance {
    free: MonetaryAmount<CurrencyExt>;
    transferable: MonetaryAmount<CurrencyExt>;
    reserved: MonetaryAmount<CurrencyExt>;
    currency: CurrencyExt;
    constructor(currency: CurrencyExt, free?: BigSource, transferable?: BigSource, reserved?: BigSource);
    toString(): string;
}
export declare function parseOrmlTokensAccountData(data: OrmlTokensAccountData, currency: CurrencyExt): ChainBalance;
export declare function parseEscrowLockedBalance(governanceCurrency: GovernanceCurrency, escrowLockedBalance: EscrowLockedBalance): StakedBalance;
export {};
