import { BigNumberish, Contract } from 'ethers';
import { StatsItem } from '../../../position/display.interface';
import { MetaType } from '../../../position/position.interface';
import { ContractPositionTemplatePositionFetcher } from '../../../position/template/contract-position.template.position-fetcher';
import { DefaultContractPositionDefinition, GetDataPropsParams, GetDisplayPropsParams, GetTokenBalancesParams, GetTokenDefinitionsParams } from '../../../position/template/contract-position.template.types';
export declare type MorphoContractPositionDefinition = {
    address: string;
    marketAddress: string;
    supplyTokenAddress: string;
};
export declare type MorphoContractPositionDataProps = {
    marketAddress: string;
    supplyApy: number;
    borrowApy: number;
    liquidity: number;
    p2pDisabled: boolean;
    supply: number;
    supplyUSD: number;
    borrow: number;
    borrowUSD: number;
    matchedUSD: number;
};
export declare abstract class MorphoSupplyContractPositionFetcher<T extends Contract> extends ContractPositionTemplatePositionFetcher<T, MorphoContractPositionDataProps, MorphoContractPositionDefinition> {
    abstract getDataProps(params: GetDataPropsParams<T, MorphoContractPositionDataProps, MorphoContractPositionDefinition>): Promise<MorphoContractPositionDataProps>;
    abstract getContract(address: string): T;
    getLabel({ contractPosition }: GetDisplayPropsParams<T>): Promise<string>;
    getImages({ contractPosition }: GetDisplayPropsParams<T>): Promise<string[]>;
    getStatsItems({ contractPosition, }: GetDisplayPropsParams<T, MorphoContractPositionDataProps, DefaultContractPositionDefinition>): Promise<StatsItem[] | undefined>;
    abstract getTokenBalancesPerPosition(params: GetTokenBalancesParams<T, MorphoContractPositionDataProps>): Promise<BigNumberish[]>;
    getTokenDefinitions({ definition }: GetTokenDefinitionsParams<T, MorphoContractPositionDefinition>): Promise<{
        metaType: MetaType;
        address: string;
        network: import("../../../types").Network;
    }[]>;
}
