import { BigNumberish, Contract } from 'ethers';
import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { DefaultDataProps } from '../../../position/display.interface';
import { MetaType } from '../../../position/position.interface';
import { ContractPositionTemplatePositionFetcher } from '../../../position/template/contract-position.template.position-fetcher';
import { GetTokenDefinitionsParams, GetDisplayPropsParams, GetTokenBalancesParams, GetDefinitionsParams } from '../../../position/template/contract-position.template.types';
export declare type OlympusBondContractPositionDefinition = {
    address: string;
    mintedTokenAddress: string;
    bondedTokenAddress: string;
};
export declare abstract class OlympusBondContractPositionFetcher<T extends Contract, V extends DefaultDataProps = DefaultDataProps, R extends OlympusBondContractPositionDefinition = OlympusBondContractPositionDefinition> extends ContractPositionTemplatePositionFetcher<T, V, R> {
    protected readonly appToolkit: IAppToolkit;
    abstract resolveBondDefinitions(params: GetDefinitionsParams): Promise<R[]>;
    abstract resolveVestingBalance(params: GetTokenBalancesParams<T, V>): Promise<BigNumberish>;
    abstract resolveClaimableBalance(params: GetTokenBalancesParams<T, V>): Promise<BigNumberish>;
    constructor(appToolkit: IAppToolkit);
    getDefinitions(params: GetDefinitionsParams): Promise<R[]>;
    getTokenDefinitions({ definition }: GetTokenDefinitionsParams<T, R>): Promise<{
        metaType: MetaType;
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getLabel({ contractPosition }: GetDisplayPropsParams<T>): Promise<string>;
    getTokenBalancesPerPosition(params: GetTokenBalancesParams<T, V>): Promise<BigNumberish[]>;
}
