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