import { StaticJsonRpcProvider } from '@ethersproject/providers';
import { BigNumber as BigNumberJS } from 'bignumber.js';
import { ethers } from 'ethers';
import { IContractFactory } from '../contract/contracts';
import { IMulticallWrapper } from '../multicall/multicall.interface';
import { DefaultDataProps } from '../position/display.interface';
import { AppTokenPosition, ContractPosition, NonFungibleToken } from '../position/position.interface';
import { AppGroupsDefinition } from '../position/position.service';
import { CreateTokenDependencySelectorOptions, TokenDependencySelector } from '../position/selectors/token-dependency-selector.interface';
import { BaseToken } from '../position/token.interface';
import { Network } from '../types/network.interface';
export declare const APP_TOOLKIT: unique symbol;
export interface IAppToolkit {
    get globalContracts(): IContractFactory;
    getNetworkProvider(network: Network): StaticJsonRpcProvider;
    getMulticall(network: Network): IMulticallWrapper;
    getBaseTokenPrices(network: Network): Promise<BaseToken[]>;
    getBaseTokenPrice(opts: {
        network: Network;
        address: string;
    }): Promise<BaseToken | null>;
    getTokenDependencySelector(opts?: CreateTokenDependencySelectorOptions): TokenDependencySelector;
    getAppTokenPositions<T = DefaultDataProps>(...appTokenDefinition: AppGroupsDefinition[]): Promise<AppTokenPosition<T>[]>;
    getAppTokenPositionsFromDatabase<T = DefaultDataProps>(...appTokenDefinition: AppGroupsDefinition[]): Promise<AppTokenPosition<T>[]>;
    getAppContractPositions<T = DefaultDataProps>(...appTokenDefinition: AppGroupsDefinition[]): Promise<ContractPosition<T>[]>;
    getPositionKey(position: ContractPosition | AppTokenPosition | BaseToken | NonFungibleToken): string;
    getFromCache<T = any>(key: string): Promise<T | undefined>;
    setManyToCache<T = any>(entries: [string, T][], ttl?: number): Promise<void>;
    getBigNumber(source: BigNumberJS.Value | ethers.BigNumber): BigNumberJS;
}
