import { Currency, InterBtcAmount, MonetaryAmount } from "@interlay/monetary-js";
import { EscrowLockedBalance, OrmlTokensAccountData } from "@polkadot/types/lookup";
import { BigSource } from "big.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 & {
    foreignAsset: {
        id: number;
        coingeckoId: string;
    };
};
export declare type LendToken = Currency & {
    lendToken: {
        id: number;
    };
};
export declare type CollateralCurrencyExt = CollateralCurrency | ForeignAsset | LendToken;
export declare type CurrencyExt = Currency | ForeignAsset | LendToken;
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;
};
declare type NativeCurrencyIdentifier = {
    token: string;
};
declare type ForeignAssetIdentifier = {
    foreignAsset: number;
};
declare type LendTokenIdentifier = {
    lendToken: number;
};
export declare type CurrencyIdentifier = NativeCurrencyIdentifier | ForeignAssetIdentifier | LendTokenIdentifier;
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 {};
