import { BigNumber, Contract } from 'ethers';
import { NetworkIdT3rn, OrderArbitrageStrategy } from './types';
import { AssetName } from './enums';
import { AssetAndAddress, AssetAndAddressWithT3 } from './assetAddresses';
import { Order } from '../order/types';
import { RedisClientType } from 'redis';
import { Prometheus } from '../prometheus';
export declare function ensureValidBigNumber(value: any): BigNumber | null;
export declare function isValidArbitrageStrategy(item: OrderArbitrageStrategy): OrderArbitrageStrategy;
export declare function validateBalances(balances: any, enabledNetworksIds: NetworkIdT3rn[]): boolean;
export declare function isValidAddress(value: string): value is string;
export declare function isSupportedAssetNumberT3rn(asset: number): asset is number;
export declare function isOrderIdValid(orderId: string): boolean;
export declare function canBeValidBigNumber(value: any): BigNumber;
export declare function checkAssetBalance(walletAddress: string, asset: number, networkId: NetworkIdT3rn, assetContract: Contract): Promise<BigNumber>;
/**
 * Fetches the list of assets (and their addresses) for the given network, from the map of
 * assets per network.
 *
 * @param {NetworkIdT3rn} networkId
 * @returns {AssetAndAddress[]}
 */
export declare function getAssetsForNetwork(networkId: NetworkIdT3rn): AssetAndAddress[];
/**
 * Fetches the list of assets (and their addresses) for the given network, from Moralis,
 * filtered by enabled assets defined in our contracts config.
 *
 * @param {NetworkIdT3rn} networkId
 * @returns {AssetAndAddressWithT3[]}
 */
export declare function getAssetsForNetworkMoralis(networkId: NetworkIdT3rn): AssetAndAddressWithT3[];
/**
 * Fetches the list of assets (and their addresses) for the given network, from the map of
 * Pyth assets per network.
 *
 * @param {NetworkIdT3rn} networkId
 * @returns {AssetAndAddress[]}
 */
export declare function getAssetsForNetworkPyth(networkId: NetworkIdT3rn): AssetAndAddressWithT3[];
/**
 * Fetches the asset address for the given network and number.
 *
 * @param {NetworkIdT3rn} networkId
 * @param {number}  assetNumber
 * @param dbgContext
 * @returns {string}
 */
export declare function getAssetAddressByNumber(networkId: NetworkIdT3rn, assetNumber: number, dbgContext?: string): string;
/**
 * Fetches the asset number for the given network and address.
 *
 * @param {NetworkIdT3rn} networkId
 * @param {number}  assetAddress
 * @returns {string}
 */
export declare function getAssetNumberByAddress(networkId: NetworkIdT3rn, assetAddress: string): number;
/**
 * Fetches the asset address for the given network and name.
 *
 * @param {NetworkIdT3rn} networkId
 * @param {AssetName}  assetName
 * @returns {string}
 */
export declare function getAssetAddressByName(networkId: NetworkIdT3rn, assetName: AssetName): string;
/**
 * Fetches the asset name for the given network and address.
 *
 * @param {NetworkIdT3rn} networkId
 * @param {string}  assetAddress
 * @returns {AssetName}
 */
export declare function getAssetNameByAddress(networkId: NetworkIdT3rn, assetAddress: string): AssetName;
export declare function getCachedOrders(redisClient: RedisClientType, cacheKey: string): Promise<Order[]>;
export declare function setCachedOrders(redisClient: RedisClientType, orders: Order[], cacheKey: string, expireSec: number): Promise<void>;
/**
 * Tries to fetch the price for an asset from the public Coinbase API.
 */
export declare function crawlPrice(asset: AssetName, prometheus: Prometheus): Promise<string>;
export declare function omit(obj: any, keys: string[]): any;
//# sourceMappingURL=helpers.d.ts.map