import { BigNumberish, Contract } from 'ethers';
import { ContractPosition } from '../../../position/position.interface';
import { ContractPositionTemplatePositionFetcher } from '../../../position/template/contract-position.template.position-fetcher';
import { DefaultContractPositionDefinition, GetDataPropsParams, GetDisplayPropsParams, GetTokenBalancesParams, GetTokenDefinitionsParams, UnderlyingTokenDefinition } from '../../../position/template/contract-position.template.types';
export declare type CompoundClaimablePositionDataProps = {
    lensAddress: string;
};
export declare abstract class CompoundClaimableContractPositionFetcher<R extends Contract, S extends Contract> extends ContractPositionTemplatePositionFetcher<R> {
    abstract lensAddress: string;
    abstract rewardTokenAddress: string;
    abstract comptrollerAddress: string;
    abstract getCompoundComptrollerContract(address: string): R;
    abstract getCompoundLensContract(address: string): S;
    abstract getClaimableBalance(address: string, opts: {
        contract: S;
        contractPosition: ContractPosition<CompoundClaimablePositionDataProps>;
    }): Promise<BigNumberish>;
    getContract(address: string): R;
    getDefinitions(): Promise<DefaultContractPositionDefinition[]>;
    getTokenDefinitions(_opts: GetTokenDefinitionsParams<R, DefaultContractPositionDefinition>): Promise<UnderlyingTokenDefinition[] | null>;
    getLabel({ contractPosition }: GetDisplayPropsParams<R>): Promise<string>;
    getDataProps(_params: GetDataPropsParams<R, CompoundClaimablePositionDataProps>): Promise<CompoundClaimablePositionDataProps>;
    getTokenBalancesPerPosition({ address, contractPosition, }: GetTokenBalancesParams<R, CompoundClaimablePositionDataProps>): Promise<BigNumberish[]>;
}
