import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { AppTokenTemplatePositionFetcher } from '../../../position/template/app-token.template.position-fetcher';
import { DefaultAppTokenDataProps, GetDataPropsParams, GetDisplayPropsParams, GetUnderlyingTokensParams } from '../../../position/template/app-token.template.types';
import { AaveV2ContractFactory } from '../contracts';
import { AaveV2AToken } from '../contracts/ethers/AaveV2AToken';
export declare type AaveV2TokenDataProps = {
    apy: number;
    enabledAsCollateral: boolean;
    liquidity: number;
    liquidationThreshold: number;
    isActive: boolean;
};
export declare type AaveV2ReserveTokenAddressesData = {
    aTokenAddress: string;
    stableDebtTokenAddress: string;
    variableDebtTokenAddress: string;
};
export declare type AaveV2ReserveApyData = {
    supplyApy: number;
    stableBorrowApy: number;
    variableBorrowApy: number;
};
export declare type AaveV2ReserveConfigurationData = {
    enabledAsCollateral: boolean;
    liquidationThreshold: number;
};
export declare type AaveV2LendingTokenDataProps = DefaultAppTokenDataProps & {
    enabledAsCollateral: boolean;
    liquidationThreshold: number;
};
export declare abstract class AaveV2LendingTokenFetcher extends AppTokenTemplatePositionFetcher<AaveV2AToken, AaveV2LendingTokenDataProps> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: AaveV2ContractFactory;
    constructor(appToolkit: IAppToolkit, contractFactory: AaveV2ContractFactory);
    abstract providerAddress: string;
    abstract getTokenAddress(reserveTokenAddressesData: AaveV2ReserveTokenAddressesData): string;
    abstract getApyFromReserveData(reserveApyData: AaveV2ReserveApyData): number;
    getContract(address: string): AaveV2AToken;
    getAddresses(): Promise<string[]>;
    getUnderlyingTokenDefinitions({ contract }: GetUnderlyingTokensParams<AaveV2AToken>): Promise<{
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getPricePerShare(): Promise<number[]>;
    getReserveConfigDataProps({ appToken, multicall, }: GetDataPropsParams<AaveV2AToken, AaveV2TokenDataProps>): Promise<AaveV2ReserveConfigurationData>;
    getApy({ appToken, multicall, }: GetDataPropsParams<AaveV2AToken, AaveV2LendingTokenDataProps>): Promise<number>;
    getDataProps(params: GetDataPropsParams<AaveV2AToken, AaveV2LendingTokenDataProps>): Promise<{
        isActive: boolean;
        enabledAsCollateral: boolean;
        liquidationThreshold: number;
        liquidity: number;
        reserves: number[];
        apy: number;
        isDebt: boolean;
    }>;
    getLabel({ appToken }: GetDisplayPropsParams<AaveV2AToken, AaveV2LendingTokenDataProps>): Promise<string>;
    getLabelDetailed({ appToken, }: GetDisplayPropsParams<AaveV2AToken, AaveV2LendingTokenDataProps>): Promise<string>;
}
