import { BigNumberish } from 'ethers';
import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { SpoolContractFactory, SpoolVault } from '../../../apps/spool/contracts';
import { WithMetaType } from '../../../position/display.interface';
import { MetaType, Token } from '../../../position/position.interface';
import { ContractPositionTemplatePositionFetcher } from '../../../position/template/contract-position.template.position-fetcher';
import { GetDataPropsParams, GetDisplayPropsParams, GetTokenBalancesParams, GetTokenDefinitionsParams } from '../../../position/template/contract-position.template.types';
import { BaseToken } from '../../../position/token.interface';
import { Platform, RewardAnalytics, VaultDetails, StrategyAnalytics, VaultAnalytics } from './spool.types';
export declare type SpoolVaultDefinition = {
    address: string;
    name: string;
    riskModel: string;
    suppliedTokenAddress: string;
    rewardTokenAddresses: string[];
    strategyAddresses: string[];
    stats: {
        riskTolerance: number;
        adjustedApy: number;
        incentivizedApy: number;
        apy: number;
        tvr: number;
        fees: number;
    };
};
export declare type SpoolVaultDataProps = {
    totalValueRouted: number;
    apy: number;
    adjustedApy: number;
    incentivizedApy: number;
    fees: number;
    strategies: string[];
    riskScore: string;
    riskTolerance: number;
};
export declare class EthereumSpoolVaultContractPositionFetcher extends ContractPositionTemplatePositionFetcher<SpoolVault, SpoolVaultDataProps, SpoolVaultDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: SpoolContractFactory;
    groupLabel: string;
    constructor(appToolkit: IAppToolkit, contractFactory: SpoolContractFactory);
    getContract(address: string): SpoolVault;
    getDefinitions(): Promise<{
        address: string;
        name: string;
        riskModel: string;
        suppliedTokenAddress: string;
        rewardTokenAddresses: string[];
        strategyAddresses: string[];
        stats: {
            riskTolerance: number;
            tvr: number;
            fees: number;
            adjustedApy: number;
            incentivizedApy: number;
            apy: number;
        };
    }[]>;
    getTokenDefinitions({ definition }: GetTokenDefinitionsParams<SpoolVault, SpoolVaultDefinition>): Promise<{
        metaType: MetaType;
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getDataProps({ definition }: GetDataPropsParams<SpoolVault, any, SpoolVaultDefinition>): Promise<{
        totalValueRouted: number;
        apy: number;
        adjustedApy: number;
        incentivizedApy: number;
        fees: number;
        strategies: string[];
        riskScore: string;
        riskTolerance: number;
    }>;
    getLabel({ definition }: GetDisplayPropsParams<SpoolVault, SpoolVaultDataProps, SpoolVaultDefinition>): Promise<string>;
    getSecondaryLabel({ contractPosition, }: GetDisplayPropsParams<SpoolVault, SpoolVaultDataProps, SpoolVaultDefinition>): Promise<string>;
    getTertiaryLabel({ contractPosition }: GetDisplayPropsParams<SpoolVault, SpoolVaultDataProps>): Promise<string>;
    getStatsItems({ definition }: GetDisplayPropsParams<SpoolVault, SpoolVaultDataProps, SpoolVaultDefinition>): Promise<({
        label: string;
        value: import("../../../position/display.interface").PercentageDisplayItem;
    } | {
        label: string;
        value: import("../../../position/display.interface").DollarDisplayItem;
    } | {
        label: string;
        value: import("../../../position/display.interface").StringDisplayItem;
    })[]>;
    getTokenBalancesPerPosition({ address, contractPosition, contract, multicall, }: GetTokenBalancesParams<SpoolVault, SpoolVaultDataProps>): Promise<BigNumberish[]>;
    getRewardAnalytics(vaults: string[]): Promise<RewardAnalytics>;
    getStrategyAnalytics(strategies: string[]): Promise<StrategyAnalytics>;
    getVaultAnalytics(vaults: string[]): Promise<VaultAnalytics>;
    getVaultStats(vault: VaultDetails, strategyAnalytics: StrategyAnalytics, rewardAnalytics: RewardAnalytics, vaultAnalytics: VaultAnalytics, platformFees: Platform): {
        riskTolerance: number;
        tvr: number;
        fees: number;
        adjustedApy: number;
        incentivizedApy: number;
        apy: number;
    };
    getVaultTokens(vault: VaultDetails, tokens: Awaited<BaseToken | null>[]): WithMetaType<Token>[];
    getRiskScoreString(riskTolerance: number): "Risk Seeking" | "Risk Neutral" | "Risk Averse";
    mapRiskToRange(risk: number): number;
}
