import { BigNumberish, Contract } from 'ethers';
import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { ContractPositionTemplatePositionFetcher } from '../../../position/template/contract-position.template.position-fetcher';
import { GetDataPropsParams, GetDefinitionsParams, GetDisplayPropsParams, GetTokenBalancesParams, GetTokenDefinitionsParams, UnderlyingTokenDefinition } from '../../../position/template/contract-position.template.types';
import { DopexContractFactory } from '../contracts';
export declare type DopexSsovDefinition = {
    address: string;
    depositTokenAddress: string;
    extraRewardTokenAddresses?: string[];
};
export declare type DopexSsovDataProps = {
    epoch: number;
    strike: number;
    positionKey: string;
};
export declare type DopexSsovEpochStrikeDefinition = {
    address: string;
    depositTokenAddress: string;
    extraRewardTokenAddresses?: string[];
    strike: number;
    epoch: number;
};
export declare abstract class DopexSsovContractPositionFetcher<T extends Contract> extends ContractPositionTemplatePositionFetcher<T, DopexSsovDataProps, DopexSsovEpochStrikeDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: DopexContractFactory;
    abstract getSsovDefinitions(): DopexSsovDefinition[];
    abstract getTotalEpochStrikeDepositBalance(params: GetTokenBalancesParams<T, DopexSsovDataProps>): Promise<BigNumberish>;
    abstract getTotalEpochStrikeRewardBalances(params: GetTokenBalancesParams<T, DopexSsovDataProps>): Promise<BigNumberish | BigNumberish[]>;
    constructor(appToolkit: IAppToolkit, contractFactory: DopexContractFactory);
    getDefinitions({ multicall }: GetDefinitionsParams): Promise<{
        address: string;
        depositTokenAddress: string;
        extraRewardTokenAddresses: string[] | undefined;
        epoch: number;
        strike: number;
    }[]>;
    getDataProps({ definition }: GetDataPropsParams<T, DopexSsovDataProps, DopexSsovEpochStrikeDefinition>): Promise<{
        epoch: number;
        strike: number;
        positionKey: string;
    }>;
    getLabel({ contractPosition }: GetDisplayPropsParams<T, DopexSsovDataProps>): Promise<string>;
    getImages({ contractPosition }: GetDisplayPropsParams<T, DopexSsovDataProps>): Promise<string[]>;
    getTokenDefinitions({ definition }: GetTokenDefinitionsParams<T, DopexSsovEpochStrikeDefinition>): Promise<UnderlyingTokenDefinition[]>;
    getDepositBalance(params: GetTokenBalancesParams<T, DopexSsovDataProps>): Promise<string>;
    getClaimableBalances(params: GetTokenBalancesParams<T, DopexSsovDataProps>): Promise<string[]>;
    getTokenBalancesPerPosition(params: GetTokenBalancesParams<T, DopexSsovDataProps>): Promise<string[]>;
}
