import { ethers } from 'ethers';
import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { ContractPositionBalance } from '../../../position/position-balance.interface';
import { MetaType } from '../../../position/position.interface';
import { GetDefinitionsParams } from '../../../position/template/app-token.template.types';
import { GetTokenDefinitionsParams, GetDisplayPropsParams, GetDataPropsParams } from '../../../position/template/contract-position.template.types';
import { CustomContractPositionTemplatePositionFetcher } from '../../../position/template/custom-contract-position.template.position-fetcher';
import { YieldProtocolContractFactory, YieldProtocolLadle } from '../contracts';
export declare type YieldIlksRes = {
    assets: {
        id: string;
        assetId: string;
    }[];
};
export declare type YieldArtsRes = {
    seriesEntities: {
        baseAsset: {
            id: string;
            assetId: string;
        };
    }[];
};
export declare type YieldVaultContractPositionDataProps = {
    minCollateralizationRatio: string;
};
export declare const ilksQuery: string;
export declare const artsQuery: string;
export declare type YieldProtocolBorrowDefinition = {
    address: string;
    ilkId: string;
    artId: string;
    ilkAddress: string;
    artAddress: string;
};
export declare type YieldProtocolBorrowDataProps = {
    ilkId: string;
    artId: string;
    minCollateralizationRatio: number;
    collateralizationRatio?: number;
    liquidationPrice?: number;
};
export declare abstract class YieldProtocolBorrowContractPositionFetcher extends CustomContractPositionTemplatePositionFetcher<YieldProtocolLadle, YieldProtocolBorrowDataProps, YieldProtocolBorrowDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: YieldProtocolContractFactory;
    abstract subgraphUrl: string;
    abstract cauldronAddress: string;
    abstract ladleAddress: string;
    constructor(appToolkit: IAppToolkit, contractFactory: YieldProtocolContractFactory);
    getContract(address: string): YieldProtocolLadle;
    getDefinitions({ multicall }: GetDefinitionsParams): Promise<{
        address: string;
        ilkId: string;
        artId: any;
        ilkAddress: string;
        artAddress: any;
    }[]>;
    getTokenDefinitions({ definition, }: GetTokenDefinitionsParams<YieldProtocolLadle, YieldProtocolBorrowDefinition>): Promise<{
        metaType: MetaType;
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getDataProps(params: GetDataPropsParams<YieldProtocolLadle, YieldProtocolBorrowDataProps, YieldProtocolBorrowDefinition>): Promise<{
        artId: string;
        ilkId: string;
        minCollateralizationRatio: number;
        collateralizationRatio?: number | undefined;
        liquidationPrice?: number | undefined;
    }>;
    getLabel({ contractPosition }: GetDisplayPropsParams<YieldProtocolLadle>): Promise<string>;
    getTokenBalancesPerPosition(): Promise<ethers.BigNumberish[]>;
    getBalances(address: string): Promise<ContractPositionBalance<YieldProtocolBorrowDataProps>[]>;
}
