import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { AppTokenPositionBalance, RawTokenBalance } from '../../../position/position-balance.interface';
import { AppTokenTemplatePositionFetcher } from '../../../position/template/app-token.template.position-fetcher';
import { 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 DTokenDataProps = {
    liquidity: number;
    reserves: number[];
    apy: number;
    siloAddress: string;
};
export declare type DTokenDefinition = {
    address: string;
    siloAddress: string;
};
export declare abstract class SiloFinanceDTokenTokenFetcher extends AppTokenTemplatePositionFetcher<SiloMarketAsset, DTokenDataProps, DTokenDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: SiloFinanceContractFactory;
    protected readonly siloDefinitionResolver: SiloFinanceDefinitionResolver;
    isExcludedFromBalances: boolean;
    isExcludedFromExplore: boolean;
    isExcludedFromTvl: boolean;
    isDebt: boolean;
    abstract siloLensAddress: string;
    constructor(appToolkit: IAppToolkit, contractFactory: SiloFinanceContractFactory, siloDefinitionResolver: SiloFinanceDefinitionResolver);
    getContract(address: string): SiloMarketAsset;
    getDefinitions(): Promise<DTokenDefinition[]>;
    getAddresses({ definitions }: GetAddressesParams<DTokenDefinition>): Promise<string[]>;
    getUnderlyingTokenDefinitions({ contract }: GetUnderlyingTokensParams<SiloMarketAsset>): Promise<{
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getPricePerShare(): Promise<number[]>;
    getDataProps(params: GetDataPropsParams<SiloMarketAsset, DTokenDataProps, DTokenDefinition>): Promise<{
        siloAddress: string;
        liquidity: number;
        reserves: number[];
        apy: number;
    }>;
    getRawBalances(address: string): Promise<RawTokenBalance[]>;
    drillRawBalances(balances: RawTokenBalance[]): Promise<AppTokenPositionBalance<DTokenDataProps>[]>;
}
