import { IMulticallWrapper } from '../../multicall/multicall.interface';
import { AppTokenPosition } from '../../position/position.interface';
import { TokenDependencySelector } from '../../position/selectors/token-dependency-selector.interface';
import { Network } from '../../types/network.interface';
export declare type DefaultAppTokenDefinition = {
    address: string;
};
export declare type DefaultAppTokenDataProps = {
    liquidity: number;
    reserves: number[];
    apy: number;
    isDebt: boolean;
};
export declare type UnderlyingTokenDefinition = {
    address: string;
    network: Network;
    tokenId?: number;
};
export declare type GetDefinitionsParams = {
    multicall: IMulticallWrapper;
    tokenLoader: TokenDependencySelector;
};
export declare type GetAddressesParams<R = DefaultAppTokenDefinition> = {
    definitions: R[];
    multicall: IMulticallWrapper;
};
declare type PositionBuilderContext<T, R = DefaultAppTokenDefinition> = {
    multicall: IMulticallWrapper;
    tokenLoader: TokenDependencySelector;
    address: string;
    definition: R;
    contract: T;
};
declare type PositionBuilderContextWithAppToken<T, V = DefaultAppTokenDataProps, R = DefaultAppTokenDefinition, K extends keyof AppTokenPosition = keyof AppTokenPosition> = PositionBuilderContext<T, R> & {
    appToken: Omit<AppTokenPosition<V>, K>;
};
export declare type GetUnderlyingTokensParams<T, R = DefaultAppTokenDefinition> = PositionBuilderContext<T, R>;
export declare type GetTokenPropsParams<T, V = DefaultAppTokenDataProps, R = DefaultAppTokenDefinition> = PositionBuilderContextWithAppToken<T, V, R, 'symbol' | 'decimals' | 'supply' | 'pricePerShare' | 'price' | 'dataProps' | 'displayProps'>;
export declare type GetPricePerShareParams<T, V = DefaultAppTokenDataProps, R = DefaultAppTokenDefinition> = PositionBuilderContextWithAppToken<T, V, R, 'pricePerShare' | 'price' | 'dataProps' | 'displayProps'>;
export declare type GetPriceParams<T, V = DefaultAppTokenDataProps, R = DefaultAppTokenDefinition> = PositionBuilderContextWithAppToken<T, V, R, 'price' | 'dataProps' | 'displayProps'>;
export declare type GetDataPropsParams<T, V = DefaultAppTokenDataProps, R = DefaultAppTokenDefinition> = PositionBuilderContextWithAppToken<T, V, R, 'dataProps' | 'displayProps'>;
export declare type GetDisplayPropsParams<T, V = DefaultAppTokenDataProps, R = DefaultAppTokenDefinition> = PositionBuilderContextWithAppToken<T, V, R, 'displayProps'>;
export {};
