import { AgreementInstance } from '../templates'; import { BaseTemplate } from '../templates'; import { DDO } from '../../../ddo'; import { InstantiableConfig } from '../../../Instantiable.abstract'; import { Account } from '../../../nevermined'; import { AaveConfig } from '../../../models'; import { TxParameters } from '../ContractBase'; import { ServiceType, ValidationParams } from '../../../ddo'; import { ContractReceipt } from 'ethers'; import { AaveBorrowCondition, AaveCollateralDepositCondition, AaveCollateralWithdrawCondition, AaveRepayCondition, DistributeNFTCollateralCondition, NFT721LockCondition } from '../conditions'; import { ServiceAaveCredit } from './Service'; export interface AaveCreditTemplateParams { vaultAddress: string; assetToBorrow: string; amountToBorrow: string; interestRateMode: number; collateralAsset: string; collateralAmount: string; delegatedAsset: string; delegatedAmount: string; assetToRepay: string; amountToRepay: string; nftContractAddress: string; lockAddress: string; nftAmount: number; } export declare class AaveCreditTemplate extends BaseTemplate { paramsGen(_params: ValidationParams): Promise; name(): string; description(): string; aaveConfig: AaveConfig; static getInstance(config: InstantiableConfig): Promise; service(): ServiceType; params(vaultAddress: string, nftContractAddress: string, nftAmount: number, collateralAsset: string, collateralAmount: string, delegatedAsset: string, delegatedAmount: string, interestRateMode: number): AaveCreditTemplateParams; getServiceAgreementTemplate(): Promise; private _createAgreement; createAgreementAndDeployVault(agreementIdSeed: string, ddo: DDO, nftTokenContract: string, nftAmount: number, collateralToken: string, collateralAmount: number, delegatedToken: string, delegatedAmount: number, interestRateMode: number, borrower: string, lender: string, timeLocks: number[], timeOuts: number[], txParams?: TxParameters, from?: Account): Promise<[ContractReceipt, string, AgreementInstance]>; deployVault(lendingPool: string, dataProvider: string, weth: string, agreementFee: number, treasuryAddress: string, borrower: string, lender: string, from: string): Promise; instanceFromDDO(agreementIdSeed: string, ddo: DDO, creator: string, parameters: AaveCreditTemplateParams): Promise>; conditions(): [ NFT721LockCondition, AaveCollateralDepositCondition, AaveBorrowCondition, AaveRepayCondition, AaveCollateralWithdrawCondition, DistributeNFTCollateralCondition ]; getAgreementVaultAddress(agreementId: string, from: string): Promise; getAgreementDid(agreementId: string): Promise; }