import { Contract } from 'ethers';
import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { AppTokenTemplatePositionFetcher } from '../../../position/template/app-token.template.position-fetcher';
import { DefaultAppTokenDataProps, DefaultAppTokenDefinition, GetAddressesParams, GetUnderlyingTokensParams, GetDataPropsParams } from '../../../position/template/app-token.template.types';
import { PoolTogetherV3ContractFactory } from '../contracts';
export declare type PoolTogetherV3PrizePoolDefinition = DefaultAppTokenDefinition & {
    ticketAddress: string;
    sponsorshipAddress: string;
    underlyingTokenAddress: string;
    tokenFaucets: {
        tokenFaucetAddress: string;
        assetAddress: string;
        measureAddress: string;
    }[];
};
export declare type PoolTogetherV3PrizePoolDataProps = DefaultAppTokenDataProps & {
    faucetAddresses: string[];
};
export declare abstract class PoolTogetherV3PrizePoolTokenFetcher<T extends Contract> extends AppTokenTemplatePositionFetcher<T, PoolTogetherV3PrizePoolDataProps, PoolTogetherV3PrizePoolDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: PoolTogetherV3ContractFactory;
    constructor(appToolkit: IAppToolkit, contractFactory: PoolTogetherV3ContractFactory);
    getAddresses({ definitions }: GetAddressesParams<PoolTogetherV3PrizePoolDefinition>): Promise<string[]>;
    abstract getDefinitions(): Promise<PoolTogetherV3PrizePoolDefinition[]>;
    getUnderlyingTokenDefinitions({ definition }: GetUnderlyingTokensParams<T, PoolTogetherV3PrizePoolDefinition>): Promise<{
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getPricePerShare(): Promise<number[]>;
    getApy({ definition, multicall, tokenLoader, appToken, }: GetDataPropsParams<T, PoolTogetherV3PrizePoolDataProps, PoolTogetherV3PrizePoolDefinition>): Promise<number>;
    getDataProps(params: GetDataPropsParams<T, PoolTogetherV3PrizePoolDataProps, PoolTogetherV3PrizePoolDefinition>): Promise<{
        faucetAddresses: string[];
        liquidity: number;
        reserves: number[];
        apy: number;
    }>;
}
