import { Contract } from '@ethersproject/contracts';
import { IMulticallWrapper } from '../../multicall/multicall.interface';
import { DefaultDataProps } from '../../position/display.interface';
import { ContractPosition, MetaType } from '../../position/position.interface';
import { TokenDependencySelector } from '../../position/selectors/token-dependency-selector.interface';
import { Network } from '../../types';
export declare type DefaultContractPositionDefinition = {
    address: string;
};
export declare type UnderlyingTokenDefinition = {
    metaType: MetaType;
    address: string;
    network: Network;
    tokenId?: number;
};
export declare type GetDefinitionsParams = {
    multicall: IMulticallWrapper;
    tokenLoader: TokenDependencySelector;
};
export declare type ContractPositionBuilderContext<T, R = DefaultContractPositionDefinition> = {
    multicall: IMulticallWrapper;
    tokenLoader: TokenDependencySelector;
    address: string;
    definition: R;
    contract: T;
};
export declare type ContractPositionBuilderContextWithContractPosition<T, V = DefaultDataProps, R = DefaultContractPositionDefinition, K extends keyof ContractPosition = keyof ContractPosition> = ContractPositionBuilderContext<T, R> & {
    contractPosition: Omit<ContractPosition<V>, K>;
};
export declare type GetTokenDefinitionsParams<T, R = DefaultContractPositionDefinition> = ContractPositionBuilderContext<T, R>;
export declare type GetDataPropsParams<T, V extends DefaultDataProps = DefaultDataProps, R extends DefaultContractPositionDefinition = DefaultContractPositionDefinition> = ContractPositionBuilderContextWithContractPosition<T, V, R, 'dataProps' | 'displayProps'>;
export declare type GetDisplayPropsParams<T, V extends DefaultDataProps = DefaultDataProps, R extends DefaultContractPositionDefinition = DefaultContractPositionDefinition> = ContractPositionBuilderContextWithContractPosition<T, V, R, 'displayProps'>;
export declare type GetTokenBalancesParams<T extends Contract, V extends DefaultDataProps = DefaultDataProps> = {
    address: string;
    contractPosition: ContractPosition<V>;
    contract: T;
    multicall: IMulticallWrapper;
};
