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