import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { AppTokenTemplatePositionFetcher } from '../../../position/template/app-token.template.position-fetcher';
import { DefaultAppTokenDataProps, GetAddressesParams, GetDataPropsParams, GetUnderlyingTokensParams } from '../../../position/template/app-token.template.types';
import { SiloFinanceContractFactory, SiloMarketAsset } from '../contracts';
import { SiloFinanceDefinitionResolver } from './silo-finance.definition-resolver';
export declare type SpTokenDataProps = DefaultAppTokenDataProps & {
    siloAddress: string;
};
export declare type SpTokenDefinition = {
    address: string;
    siloAddress: string;
};
export declare abstract class SiloFinanceSpTokenTokenFetcher extends AppTokenTemplatePositionFetcher<SiloMarketAsset, SpTokenDataProps, SpTokenDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: SiloFinanceContractFactory;
    protected readonly siloDefinitionResolver: SiloFinanceDefinitionResolver;
    constructor(appToolkit: IAppToolkit, contractFactory: SiloFinanceContractFactory, siloDefinitionResolver: SiloFinanceDefinitionResolver);
    getContract(address: string): SiloMarketAsset;
    getDefinitions(): Promise<SpTokenDefinition[]>;
    getAddresses({ definitions }: GetAddressesParams<SpTokenDefinition>): Promise<string[]>;
    getUnderlyingTokenDefinitions({ contract }: GetUnderlyingTokensParams<SiloMarketAsset>): Promise<{
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getPricePerShare(): Promise<number[]>;
    getDataProps(params: GetDataPropsParams<SiloMarketAsset, SpTokenDataProps, SpTokenDefinition>): Promise<{
        siloAddress: string;
        liquidity: number;
        reserves: number[];
        apy: number;
        isDebt: boolean;
    }>;
}
