import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, PopulatedTransaction, Signer, utils } from 'ethers';
import type { FunctionFragment, Result } from '@ethersproject/abi';
import type { Listener, Provider } from '@ethersproject/providers';
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common';
export declare namespace UnlockdProtocolDataProvider {
    type NftTokenDataStruct = {
        nftSymbol: PromiseOrValue<string>;
        nftAddress: PromiseOrValue<string>;
        uNftSymbol: PromiseOrValue<string>;
        uNftAddress: PromiseOrValue<string>;
    };
    type NftTokenDataStructOutput = [string, string, string, string] & {
        nftSymbol: string;
        nftAddress: string;
        uNftSymbol: string;
        uNftAddress: string;
    };
    type ReserveTokenDataStruct = {
        tokenSymbol: PromiseOrValue<string>;
        tokenAddress: PromiseOrValue<string>;
        uTokenSymbol: PromiseOrValue<string>;
        uTokenAddress: PromiseOrValue<string>;
        debtTokenSymbol: PromiseOrValue<string>;
        debtTokenAddress: PromiseOrValue<string>;
    };
    type ReserveTokenDataStructOutput = [string, string, string, string, string, string] & {
        tokenSymbol: string;
        tokenAddress: string;
        uTokenSymbol: string;
        uTokenAddress: string;
        debtTokenSymbol: string;
        debtTokenAddress: string;
    };
    type LoanDataStruct = {
        loanId: PromiseOrValue<BigNumberish>;
        state: PromiseOrValue<BigNumberish>;
        borrower: PromiseOrValue<string>;
        nftAsset: PromiseOrValue<string>;
        nftTokenId: PromiseOrValue<BigNumberish>;
        reserveAsset: PromiseOrValue<string>;
        scaledAmount: PromiseOrValue<BigNumberish>;
        currentAmount: PromiseOrValue<BigNumberish>;
        bidStartTimestamp: PromiseOrValue<BigNumberish>;
        bidderAddress: PromiseOrValue<string>;
        bidPrice: PromiseOrValue<BigNumberish>;
        bidBorrowAmount: PromiseOrValue<BigNumberish>;
    };
    type LoanDataStructOutput = [
        BigNumber,
        number,
        string,
        string,
        BigNumber,
        string,
        BigNumber,
        BigNumber,
        BigNumber,
        string,
        BigNumber,
        BigNumber
    ] & {
        loanId: BigNumber;
        state: number;
        borrower: string;
        nftAsset: string;
        nftTokenId: BigNumber;
        reserveAsset: string;
        scaledAmount: BigNumber;
        currentAmount: BigNumber;
        bidStartTimestamp: BigNumber;
        bidderAddress: string;
        bidPrice: BigNumber;
        bidBorrowAmount: BigNumber;
    };
    type NftConfigurationDataStruct = {
        ltv: PromiseOrValue<BigNumberish>;
        liquidationThreshold: PromiseOrValue<BigNumberish>;
        liquidationBonus: PromiseOrValue<BigNumberish>;
        redeemDuration: PromiseOrValue<BigNumberish>;
        auctionDuration: PromiseOrValue<BigNumberish>;
        redeemFine: PromiseOrValue<BigNumberish>;
        redeemThreshold: PromiseOrValue<BigNumberish>;
        minBidFine: PromiseOrValue<BigNumberish>;
        isActive: PromiseOrValue<boolean>;
        isFrozen: PromiseOrValue<boolean>;
        configTimestamp: PromiseOrValue<BigNumberish>;
    };
    type NftConfigurationDataStructOutput = [
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        boolean,
        boolean,
        BigNumber
    ] & {
        ltv: BigNumber;
        liquidationThreshold: BigNumber;
        liquidationBonus: BigNumber;
        redeemDuration: BigNumber;
        auctionDuration: BigNumber;
        redeemFine: BigNumber;
        redeemThreshold: BigNumber;
        minBidFine: BigNumber;
        isActive: boolean;
        isFrozen: boolean;
        configTimestamp: BigNumber;
    };
}
export interface UnlockdFinanceProtocolDataProviderInterface extends utils.Interface {
    functions: {
        'ADDRESSES_PROVIDER()': FunctionFragment;
        'getAllNftsTokenDatas()': FunctionFragment;
        'getAllReservesTokenDatas()': FunctionFragment;
        'getLoanDataByCollateral(address,uint256)': FunctionFragment;
        'getLoanDataByLoanId(uint256)': FunctionFragment;
        'getNFTXPrice(address,uint256,address)': FunctionFragment;
        'getNftConfigurationData(address)': FunctionFragment;
        'getNftConfigurationDataByTokenId(address,uint256)': FunctionFragment;
        'getNftTokenData(address)': FunctionFragment;
        'getReserveConfigurationData(address)': FunctionFragment;
        'getReserveData(address)': FunctionFragment;
        'getReserveTokenData(address)': FunctionFragment;
        'getUserReserveData(address,address)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'ADDRESSES_PROVIDER' | 'getAllNftsTokenDatas' | 'getAllReservesTokenDatas' | 'getLoanDataByCollateral' | 'getLoanDataByLoanId' | 'getNFTXPrice' | 'getNftConfigurationData' | 'getNftConfigurationDataByTokenId' | 'getNftTokenData' | 'getReserveConfigurationData' | 'getReserveData' | 'getReserveTokenData' | 'getUserReserveData'): FunctionFragment;
    encodeFunctionData(functionFragment: 'ADDRESSES_PROVIDER', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getAllNftsTokenDatas', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getAllReservesTokenDatas', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getLoanDataByCollateral', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getLoanDataByLoanId', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getNFTXPrice', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getNftConfigurationData', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getNftConfigurationDataByTokenId', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getNftTokenData', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getReserveConfigurationData', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getReserveData', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getReserveTokenData', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getUserReserveData', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: 'ADDRESSES_PROVIDER', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getAllNftsTokenDatas', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getAllReservesTokenDatas', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getLoanDataByCollateral', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getLoanDataByLoanId', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getNFTXPrice', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getNftConfigurationData', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getNftConfigurationDataByTokenId', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getNftTokenData', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getReserveConfigurationData', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getReserveData', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getReserveTokenData', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getUserReserveData', data: BytesLike): Result;
    events: {};
}
export interface UnlockdFinanceProtocolDataProvider extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: UnlockdFinanceProtocolDataProviderInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        ADDRESSES_PROVIDER(overrides?: CallOverrides): Promise<[string]>;
        getAllNftsTokenDatas(overrides?: CallOverrides): Promise<[UnlockdProtocolDataProvider.NftTokenDataStructOutput[]]>;
        getAllReservesTokenDatas(overrides?: CallOverrides): Promise<[UnlockdProtocolDataProvider.ReserveTokenDataStructOutput[]]>;
        getLoanDataByCollateral(nftAsset: PromiseOrValue<string>, nftTokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            UnlockdProtocolDataProvider.LoanDataStructOutput
        ] & {
            loanData: UnlockdProtocolDataProvider.LoanDataStructOutput;
        }>;
        getLoanDataByLoanId(loanId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            UnlockdProtocolDataProvider.LoanDataStructOutput
        ] & {
            loanData: UnlockdProtocolDataProvider.LoanDataStructOutput;
        }>;
        getNFTXPrice(asset: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, reserveAsset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getNftConfigurationData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            UnlockdProtocolDataProvider.NftConfigurationDataStructOutput
        ] & {
            configData: UnlockdProtocolDataProvider.NftConfigurationDataStructOutput;
        }>;
        getNftConfigurationDataByTokenId(asset: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            UnlockdProtocolDataProvider.NftConfigurationDataStructOutput
        ] & {
            configData: UnlockdProtocolDataProvider.NftConfigurationDataStructOutput;
        }>;
        getNftTokenData(nftAsset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[UnlockdProtocolDataProvider.NftTokenDataStructOutput]>;
        getReserveConfigurationData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            boolean,
            boolean,
            boolean
        ] & {
            decimals: BigNumber;
            reserveFactor: BigNumber;
            borrowingEnabled: boolean;
            isActive: boolean;
            isFrozen: boolean;
        }>;
        getReserveData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            number
        ] & {
            availableLiquidity: BigNumber;
            totalVariableDebt: BigNumber;
            liquidityRate: BigNumber;
            variableBorrowRate: BigNumber;
            liquidityIndex: BigNumber;
            variableBorrowIndex: BigNumber;
            lastUpdateTimestamp: number;
        }>;
        getReserveTokenData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[UnlockdProtocolDataProvider.ReserveTokenDataStructOutput]>;
        getUserReserveData(asset: PromiseOrValue<string>, user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            currentUTokenBalance: BigNumber;
            currentVariableDebt: BigNumber;
            scaledVariableDebt: BigNumber;
            liquidityRate: BigNumber;
        }>;
    };
    ADDRESSES_PROVIDER(overrides?: CallOverrides): Promise<string>;
    getAllNftsTokenDatas(overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.NftTokenDataStructOutput[]>;
    getAllReservesTokenDatas(overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.ReserveTokenDataStructOutput[]>;
    getLoanDataByCollateral(nftAsset: PromiseOrValue<string>, nftTokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.LoanDataStructOutput>;
    getLoanDataByLoanId(loanId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.LoanDataStructOutput>;
    getNFTXPrice(asset: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, reserveAsset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    getNftConfigurationData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.NftConfigurationDataStructOutput>;
    getNftConfigurationDataByTokenId(asset: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.NftConfigurationDataStructOutput>;
    getNftTokenData(nftAsset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.NftTokenDataStructOutput>;
    getReserveConfigurationData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        boolean,
        boolean,
        boolean
    ] & {
        decimals: BigNumber;
        reserveFactor: BigNumber;
        borrowingEnabled: boolean;
        isActive: boolean;
        isFrozen: boolean;
    }>;
    getReserveData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        number
    ] & {
        availableLiquidity: BigNumber;
        totalVariableDebt: BigNumber;
        liquidityRate: BigNumber;
        variableBorrowRate: BigNumber;
        liquidityIndex: BigNumber;
        variableBorrowIndex: BigNumber;
        lastUpdateTimestamp: number;
    }>;
    getReserveTokenData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.ReserveTokenDataStructOutput>;
    getUserReserveData(asset: PromiseOrValue<string>, user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        currentUTokenBalance: BigNumber;
        currentVariableDebt: BigNumber;
        scaledVariableDebt: BigNumber;
        liquidityRate: BigNumber;
    }>;
    callStatic: {
        ADDRESSES_PROVIDER(overrides?: CallOverrides): Promise<string>;
        getAllNftsTokenDatas(overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.NftTokenDataStructOutput[]>;
        getAllReservesTokenDatas(overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.ReserveTokenDataStructOutput[]>;
        getLoanDataByCollateral(nftAsset: PromiseOrValue<string>, nftTokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.LoanDataStructOutput>;
        getLoanDataByLoanId(loanId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.LoanDataStructOutput>;
        getNFTXPrice(asset: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, reserveAsset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getNftConfigurationData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.NftConfigurationDataStructOutput>;
        getNftConfigurationDataByTokenId(asset: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.NftConfigurationDataStructOutput>;
        getNftTokenData(nftAsset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.NftTokenDataStructOutput>;
        getReserveConfigurationData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            boolean,
            boolean,
            boolean
        ] & {
            decimals: BigNumber;
            reserveFactor: BigNumber;
            borrowingEnabled: boolean;
            isActive: boolean;
            isFrozen: boolean;
        }>;
        getReserveData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            number
        ] & {
            availableLiquidity: BigNumber;
            totalVariableDebt: BigNumber;
            liquidityRate: BigNumber;
            variableBorrowRate: BigNumber;
            liquidityIndex: BigNumber;
            variableBorrowIndex: BigNumber;
            lastUpdateTimestamp: number;
        }>;
        getReserveTokenData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<UnlockdProtocolDataProvider.ReserveTokenDataStructOutput>;
        getUserReserveData(asset: PromiseOrValue<string>, user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            currentUTokenBalance: BigNumber;
            currentVariableDebt: BigNumber;
            scaledVariableDebt: BigNumber;
            liquidityRate: BigNumber;
        }>;
    };
    filters: {};
    estimateGas: {
        ADDRESSES_PROVIDER(overrides?: CallOverrides): Promise<BigNumber>;
        getAllNftsTokenDatas(overrides?: CallOverrides): Promise<BigNumber>;
        getAllReservesTokenDatas(overrides?: CallOverrides): Promise<BigNumber>;
        getLoanDataByCollateral(nftAsset: PromiseOrValue<string>, nftTokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getLoanDataByLoanId(loanId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getNFTXPrice(asset: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, reserveAsset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getNftConfigurationData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getNftConfigurationDataByTokenId(asset: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getNftTokenData(nftAsset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getReserveConfigurationData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getReserveData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getReserveTokenData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getUserReserveData(asset: PromiseOrValue<string>, user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        ADDRESSES_PROVIDER(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAllNftsTokenDatas(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAllReservesTokenDatas(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getLoanDataByCollateral(nftAsset: PromiseOrValue<string>, nftTokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getLoanDataByLoanId(loanId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getNFTXPrice(asset: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, reserveAsset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getNftConfigurationData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getNftConfigurationDataByTokenId(asset: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getNftTokenData(nftAsset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getReserveConfigurationData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getReserveData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getReserveTokenData(asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getUserReserveData(asset: PromiseOrValue<string>, user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
