import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { MetaType } from '../../../position/position.interface';
import { AppTokenTemplatePositionFetcher } from '../../../position/template/app-token.template.position-fetcher';
import { DefaultAppTokenDataProps, GetAddressesParams, GetDisplayPropsParams, GetPricePerShareParams, GetUnderlyingTokensParams } from '../../../position/template/app-token.template.types';
import { GetTokenDefinitionsParams } from '../../../position/template/contract-position.template.types';
import { UnipilotContractFactory, UnipilotVault } from '../contracts';
import { UnipilotVaultDefinition } from '../utils/generalTypes';
import { UnipilotVaultDefinitionsResolver } from './unipilot.vault-definition-resolver';
export declare type UnipilotVaultTokenDataProps = DefaultAppTokenDataProps & {
    fee: number;
};
export declare abstract class UnipilotVaultTokenFetcher extends AppTokenTemplatePositionFetcher<UnipilotVault, UnipilotVaultTokenDataProps, UnipilotVaultDefinition> {
    protected readonly appToolkit: IAppToolkit;
    private readonly vaultDefinitionsResolver;
    private readonly contractFactory;
    constructor(appToolkit: IAppToolkit, vaultDefinitionsResolver: UnipilotVaultDefinitionsResolver, contractFactory: UnipilotContractFactory);
    getContract(address: string): UnipilotVault;
    getDefinitions(): Promise<UnipilotVaultDefinition[]>;
    getAddresses({ definitions }: GetAddressesParams<UnipilotVaultDefinition>): Promise<string[]>;
    getUnderlyingTokenDefinitions({ definition, }: GetUnderlyingTokensParams<UnipilotVault, UnipilotVaultDefinition>): Promise<{
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getTokenDefinitions({ definition }: GetTokenDefinitionsParams<UnipilotVault, UnipilotVaultDefinition>): Promise<{
        metaType: MetaType;
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getPricePerShare({ appToken, definition, }: GetPricePerShareParams<UnipilotVault, UnipilotVaultTokenDataProps, UnipilotVaultDefinition>): Promise<number[]>;
    getLabel({ appToken, definition, }: GetDisplayPropsParams<UnipilotVault, UnipilotVaultTokenDataProps, UnipilotVaultDefinition>): Promise<string>;
    getSecondaryLabel({ appToken, }: GetDisplayPropsParams<UnipilotVault, UnipilotVaultTokenDataProps, UnipilotVaultDefinition>): Promise<string>;
}
