import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { AaveV2LendingTokenDataProps, AaveV2ReserveApyData, AaveV2ReserveTokenAddressesData } from '../../../apps/aave-v2/common/aave-v2.lending.token-fetcher';
import { AppTokenTemplatePositionFetcher } from '../../../position/template/app-token.template.position-fetcher';
import { GetDataPropsParams, GetDisplayPropsParams, GetUnderlyingTokensParams } from '../../../position/template/app-token.template.types';
import { AaveAmmContractFactory } from '../contracts';
import { AaveAmmAToken } from '../contracts/ethers/AaveAmmAToken';
export declare abstract class AaveAmmLendingTemplateTokenFetcher extends AppTokenTemplatePositionFetcher<AaveAmmAToken, AaveV2LendingTokenDataProps> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: AaveAmmContractFactory;
    constructor(appToolkit: IAppToolkit, contractFactory: AaveAmmContractFactory);
    abstract providerAddress: string;
    abstract getTokenAddress(reserveTokenAddressesData: AaveV2ReserveTokenAddressesData): string;
    abstract getApyFromReserveData(reserveApyData: AaveV2ReserveApyData): number;
    getContract(address: string): AaveAmmAToken;
    getAddresses(): Promise<string[]>;
    getUnderlyingTokenDefinitions({ contract }: GetUnderlyingTokensParams<AaveAmmAToken>): Promise<{
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getPricePerShare(): Promise<number[]>;
    getReserveConfigDataProps({ appToken, multicall, }: GetDataPropsParams<AaveAmmAToken, AaveV2LendingTokenDataProps>): Promise<{
        liquidationThreshold: number;
        enabledAsCollateral: boolean;
    }>;
    getLiquidity({ appToken }: GetDataPropsParams<AaveAmmAToken>): Promise<number>;
    getReserves({ appToken }: GetDataPropsParams<AaveAmmAToken>): Promise<number[]>;
    getApy({ appToken, multicall, }: GetDataPropsParams<AaveAmmAToken, AaveV2LendingTokenDataProps>): Promise<number>;
    getDataProps(params: GetDataPropsParams<AaveAmmAToken, AaveV2LendingTokenDataProps>): Promise<{
        isActive: boolean;
        liquidationThreshold: number;
        enabledAsCollateral: boolean;
        liquidity: number;
        reserves: number[];
        apy: number;
    }>;
    getLabel({ appToken }: GetDisplayPropsParams<AaveAmmAToken, AaveV2LendingTokenDataProps>): Promise<string>;
    getLabelDetailed({ appToken, }: GetDisplayPropsParams<AaveAmmAToken, AaveV2LendingTokenDataProps>): Promise<string>;
}
