import { ContractTransaction } from '@ethersproject/contracts';
import { AzraelVersion, PaymentToken } from '../../../core';
export interface AbstractAzraelFunctionInterface<LendFunction, RentFunction, ReturnItFunction, ClaimCollateralFunction, StopLendingFunction> {
    readonly lend: LendFunction;
    readonly rent: RentFunction;
    readonly returnIt: ReturnItFunction;
    readonly claimCollateral: ClaimCollateralFunction;
    readonly stopLending: StopLendingFunction;
}
export declare type AzraelV0LendFunction = (nftAddress: string[], tokenID: string[], amount: number[], maxRentDuration: number[], dailyRentPrice: number[], nftPrice: number[], paymentToken: PaymentToken[], options?: any) => Promise<ContractTransaction>;
export declare type AzraelV0RentFunction = (nftAddress: string[], tokenID: string[], lendingID: string[], rentDuration: number[], options?: any) => Promise<ContractTransaction>;
export declare type AzraelV0ReturnItFunction = (nftAddress: string[], tokenID: string[], lendingID: string[], options?: any) => Promise<ContractTransaction>;
export declare type AzraelV0ClaimCollateralFunction = (nftAddress: string[], tokenID: string[], lendingID: string[], options?: any) => Promise<ContractTransaction>;
export declare type AzraelV0StopLendingFunction = (nftAddress: string[], tokenID: string[], lendingID: string[], options?: any) => Promise<ContractTransaction>;
export declare type AzraelV0FunctionInterface = AbstractAzraelFunctionInterface<AzraelV0LendFunction, AzraelV0RentFunction, AzraelV0ReturnItFunction, AzraelV0ClaimCollateralFunction, AzraelV0StopLendingFunction>;
export declare type AzraelInterfaceVersions = {
    readonly [AzraelVersion.V0]: AzraelV0FunctionInterface;
};
