import Big, { BigSource } from "big.js";
import BN from "bn.js";
import { Bitcoin, Currency, ExchangeRate, MonetaryAmount } from "@interlay/monetary-js";
import { InterbtcPrimitivesOracleKey } from "@polkadot/types/lookup";
import { GovernanceCurrency, CurrencyExt, ForeignAsset, CollateralCurrencyExt } from "../types/currency";
import { ApiPromise } from "@polkadot/api";
import { FeeEstimationType } from "../types/oracleTypes";
import { InterbtcPrimitivesCurrencyId, InterbtcPrimitivesTokenSymbol } from "../interfaces";
import { AssetRegistryAPI } from "../parachain/asset-registry";
export declare const MBTC_IN_SAT = 100000;
export declare const ATOMIC_UNIT = 0;
export declare function roundTwoDecimals(input: string): string;
export declare function satToMBTC(sat: string): string;
export declare function computeLazyDistribution(stake: Big, perToken: Big, tally: Big): Big;
export declare function roundLastNDigits(n: number, x: BN | Big | string): string;
export declare function atomicToBaseAmount(atomicAmount: BigSource, currency: Currency): Big;
export declare function newMonetaryAmount(amount: BigSource, currency: CurrencyExt, base?: boolean): MonetaryAmount<CurrencyExt>;
export declare function newCollateralBTCExchangeRate(rate: Big, counterCurrency: Currency, useBaseUnits?: boolean): ExchangeRate<Bitcoin, Currency>;
export declare function createInclusionOracleKey(api: ApiPromise, type: FeeEstimationType): InterbtcPrimitivesOracleKey;
export declare function createExchangeRateOracleKey(api: ApiPromise, collateralCurrency: CurrencyExt): InterbtcPrimitivesOracleKey;
export declare function toVoting(governanceCurrency: GovernanceCurrency): Currency;
export declare function getCorrespondingCollateralCurrencies(governanceCurrency: GovernanceCurrency): Array<CollateralCurrencyExt>;
export declare function isForeignAsset(currencyExt: CurrencyExt): currencyExt is ForeignAsset;
export declare function isCurrency(currencyExt: CurrencyExt): currencyExt is Currency;
export declare function isCurrencyEqual(currency: CurrencyExt, otherCurrency: CurrencyExt): boolean;
export declare function currencyIdToMonetaryCurrency(assetRegistryApi: AssetRegistryAPI, currencyId: InterbtcPrimitivesCurrencyId): Promise<CurrencyExt>;
/**
 * A method that will only try to find a hard-coded currencies.
 * Only for use when we are certain the currency is not a foreign asset.
 * @param tokenSymbol the InterbtcPrimitivesTokenSymbol to look up
 */
export declare function tokenSymbolToCurrency(tokenSymbol: InterbtcPrimitivesTokenSymbol): Currency;
