import { Address, Hash, Hex, PublicClient } from 'viem'; import { ExecutionDataV6, ExecutionDataV7, ExecutionDataV8, LoanV6, OfferV6, OfferV8, RenegotiationV6, SignableRepaymentDataV6 } from '../../blockchain'; import { Wallet } from '../../clients/contracts'; import { multiSourceLoanAbi as multiSourceLoanAbiV6 } from '../../generated/blockchain/v6'; import { multiSourceLoanAbi as multiSourceLoanAbiV7 } from '../../generated/blockchain/v7'; import { multiSourceLoanAbi as multiSourceLoanAbiV8 } from '../../generated/blockchain/v8'; import { EmitLoanArgs } from '../../gondi'; import { LoanDelegation } from '../../utils/delegation'; import { LoanToMslLoanType } from '../../utils/loan'; import { BaseContract } from './BaseContract'; type RepayArgs = { loan: LoanV6; signableRepaymentData: SignableRepaymentDataV6; }; declare const MSL_V6_ABI_BY_VERSION: { readonly '3': readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "loanLiquidator"; readonly type: "address"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "recipient"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "fraction"; readonly type: "uint256"; }]; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly name: "protocolFee"; readonly type: "tuple"; }, { readonly internalType: "address"; readonly name: "currencyManager"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "collectionManager"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "maxTranches"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "minLockPeriod"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "delegateRegistry"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "loanManagerRegistry"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "flashActionContract"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "minWaitTime"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly inputs: readonly []; readonly name: "DOMAIN_SEPARATOR"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "FEE_UPDATE_NOTICE"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "INITIAL_DOMAIN_SEPARATOR"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "MAX_AUCTION_DURATION"; readonly outputs: readonly [{ readonly internalType: "uint48"; readonly name: ""; readonly type: "uint48"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "MIN_AUCTION_DURATION"; readonly outputs: readonly [{ readonly internalType: "uint48"; readonly name: ""; readonly type: "uint48"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "MIN_BID_LIQUIDATION"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "MIN_WAIT_TIME"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "VERSION"; readonly outputs: readonly [{ readonly internalType: "bytes"; readonly name: ""; readonly type: "bytes"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "renegotiationId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }, { readonly internalType: "uint256[]"; readonly name: "trancheIndex"; readonly type: "uint256[]"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "expirationTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.RenegotiationOffer"; readonly name: "_renegotiationOffer"; readonly type: "tuple"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: "_loan"; readonly type: "tuple"; }, { readonly internalType: "bytes"; readonly name: "_renegotiationOfferSignature"; readonly type: "bytes"; }]; readonly name: "addNewTranche"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: ""; readonly type: "tuple"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_contract"; readonly type: "address"; }]; readonly name: "addWhitelistedCallbackContract"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_minOfferId"; readonly type: "uint256"; }]; readonly name: "cancelAllOffers"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_offerId"; readonly type: "uint256"; }]; readonly name: "cancelOffer"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_renegotiationId"; readonly type: "uint256"; }]; readonly name: "cancelRenegotiationOffer"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_loanId"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: "loan"; readonly type: "tuple"; }, { readonly internalType: "address"; readonly name: "_delegate"; readonly type: "address"; }, { readonly internalType: "bytes32"; readonly name: "_rights"; readonly type: "bytes32"; }, { readonly internalType: "bool"; readonly name: "_value"; readonly type: "bool"; }]; readonly name: "delegate"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly components: readonly [{ readonly components: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "offerId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "capacity"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "expirationTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxSeniorRepayment"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "validator"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "arguments"; readonly type: "bytes"; }]; readonly internalType: "struct IBaseLoan.OfferValidator[]"; readonly name: "validators"; readonly type: "tuple[]"; }]; readonly internalType: "struct IMultiSourceLoan.LoanOffer"; readonly name: "offer"; readonly type: "tuple"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "bytes"; readonly name: "lenderOfferSignature"; readonly type: "bytes"; }]; readonly internalType: "struct IMultiSourceLoan.OfferExecution[]"; readonly name: "offerExecution"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "expirationTime"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "principalReceiver"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "callbackData"; readonly type: "bytes"; }]; readonly internalType: "struct IMultiSourceLoan.ExecutionData"; readonly name: "executionData"; readonly type: "tuple"; }, { readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "borrowerOfferSignature"; readonly type: "bytes"; }]; readonly internalType: "struct IMultiSourceLoan.LoanExecutionData"; readonly name: "_loanExecutionData"; readonly type: "tuple"; }]; readonly name: "emitLoan"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: ""; readonly type: "tuple"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_loanId"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: "_loan"; readonly type: "tuple"; }, { readonly internalType: "address"; readonly name: "_target"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "_data"; readonly type: "bytes"; }]; readonly name: "executeFlashAction"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getCollectionManager"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getCurrencyManager"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getDelegateRegistry"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getFlashActionContract"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getLiquidationAuctionDuration"; readonly outputs: readonly [{ readonly internalType: "uint48"; readonly name: ""; readonly type: "uint48"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getLiquidator"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_loanId"; readonly type: "uint256"; }]; readonly name: "getLoanHash"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getLoanManagerRegistry"; readonly outputs: readonly [{ readonly internalType: "contract ILoanManagerRegistry"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getMaxTranches"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getMinImprovementApr"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getMinLockPeriod"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getPendingProtocolFee"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "recipient"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "fraction"; readonly type: "uint256"; }]; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly name: ""; readonly type: "tuple"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getPendingProtocolFeeSetTime"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getProtocolFee"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "recipient"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "fraction"; readonly type: "uint256"; }]; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly name: ""; readonly type: "tuple"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getTotalLoansIssued"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "_offerId"; readonly type: "uint256"; }]; readonly name: "getUsedCapacity"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "user"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "offerId"; readonly type: "uint256"; }]; readonly name: "isOfferCancelled"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: "notActive"; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "user"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "renegotiationIf"; readonly type: "uint256"; }]; readonly name: "isRenegotiationOfferCancelled"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: "notActive"; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_contract"; readonly type: "address"; }]; readonly name: "isWhitelistedCallbackContract"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_loanId"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: "_loan"; readonly type: "tuple"; }]; readonly name: "liquidateLoan"; readonly outputs: readonly [{ readonly internalType: "bytes"; readonly name: ""; readonly type: "bytes"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_loanId"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: "_loan"; readonly type: "tuple"; }]; readonly name: "loanLiquidated"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "user"; readonly type: "address"; }]; readonly name: "minOfferId"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "minOfferId"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes[]"; readonly name: "data"; readonly type: "bytes[]"; }]; readonly name: "multicall"; readonly outputs: readonly [{ readonly internalType: "bytes[]"; readonly name: "results"; readonly type: "bytes[]"; }]; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "name"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "bytes"; readonly name: ""; readonly type: "bytes"; }]; readonly name: "onERC721Received"; readonly outputs: readonly [{ readonly internalType: "bytes4"; readonly name: ""; readonly type: "bytes4"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "owner"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pendingOwner"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pendingOwnerTime"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_loanId"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: "_loan"; readonly type: "tuple"; }, { readonly components: readonly [{ readonly components: readonly [{ readonly components: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "offerId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "capacity"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "expirationTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxSeniorRepayment"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "validator"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "arguments"; readonly type: "bytes"; }]; readonly internalType: "struct IBaseLoan.OfferValidator[]"; readonly name: "validators"; readonly type: "tuple[]"; }]; readonly internalType: "struct IMultiSourceLoan.LoanOffer"; readonly name: "offer"; readonly type: "tuple"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "bytes"; readonly name: "lenderOfferSignature"; readonly type: "bytes"; }]; readonly internalType: "struct IMultiSourceLoan.OfferExecution[]"; readonly name: "offerExecution"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "expirationTime"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "principalReceiver"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "callbackData"; readonly type: "bytes"; }]; readonly internalType: "struct IMultiSourceLoan.ExecutionData"; readonly name: "executionData"; readonly type: "tuple"; }, { readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "borrowerOfferSignature"; readonly type: "bytes"; }]; readonly internalType: "struct IMultiSourceLoan.LoanExecutionData"; readonly name: "_loanExecutionData"; readonly type: "tuple"; }]; readonly name: "refinanceFromLoanExecutionData"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: ""; readonly type: "tuple"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "renegotiationId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }, { readonly internalType: "uint256[]"; readonly name: "trancheIndex"; readonly type: "uint256[]"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "expirationTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.RenegotiationOffer"; readonly name: "_renegotiationOffer"; readonly type: "tuple"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: "_loan"; readonly type: "tuple"; }, { readonly internalType: "bytes"; readonly name: "_renegotiationOfferSignature"; readonly type: "bytes"; }]; readonly name: "refinanceFull"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: ""; readonly type: "tuple"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "renegotiationId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }, { readonly internalType: "uint256[]"; readonly name: "trancheIndex"; readonly type: "uint256[]"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "expirationTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.RenegotiationOffer"; readonly name: "_renegotiationOffer"; readonly type: "tuple"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: "_loan"; readonly type: "tuple"; }]; readonly name: "refinancePartial"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: ""; readonly type: "tuple"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_contract"; readonly type: "address"; }]; readonly name: "removeWhitelistedCallbackContract"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "bytes"; readonly name: "callbackData"; readonly type: "bytes"; }, { readonly internalType: "bool"; readonly name: "shouldDelegate"; readonly type: "bool"; }]; readonly internalType: "struct IMultiSourceLoan.SignableRepaymentData"; readonly name: "data"; readonly type: "tuple"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: "loan"; readonly type: "tuple"; }, { readonly internalType: "bytes"; readonly name: "borrowerSignature"; readonly type: "bytes"; }]; readonly internalType: "struct IMultiSourceLoan.LoanRepaymentData"; readonly name: "_repaymentData"; readonly type: "tuple"; }]; readonly name: "repayLoan"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_newOwner"; readonly type: "address"; }]; readonly name: "requestTransferOwner"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_delegate"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "_collection"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "_tokenId"; readonly type: "uint256"; }, { readonly internalType: "bytes32"; readonly name: "_rights"; readonly type: "bytes32"; }]; readonly name: "revokeDelegate"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_newFlashActionContract"; readonly type: "address"; }]; readonly name: "setFlashActionContract"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "__minLockPeriod"; readonly type: "uint256"; }]; readonly name: "setMinLockPeriod"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "setProtocolFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "transferOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "transferOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint48"; readonly name: "_newDuration"; readonly type: "uint48"; }]; readonly name: "updateLiquidationAuctionDuration"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "__loanLiquidator"; readonly type: "address"; }]; readonly name: "updateLiquidationContract"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_newMinimum"; readonly type: "uint256"; }]; readonly name: "updateMinImprovementApr"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "recipient"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "fraction"; readonly type: "uint256"; }]; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly name: "_newProtocolFee"; readonly type: "tuple"; }]; readonly name: "updateProtocolFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "minOfferId"; readonly type: "uint256"; }]; readonly name: "AllOffersCancelled"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "delegate"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "bytes32"; readonly name: "_rights"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "bool"; readonly name: "value"; readonly type: "bool"; }]; readonly name: "Delegated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "newFlashActionContract"; readonly type: "address"; }]; readonly name: "FlashActionContractUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "target"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "FlashActionExecuted"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "newDuration"; readonly type: "uint256"; }]; readonly name: "LiquidationAuctionDurationUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "liquidator"; readonly type: "address"; }]; readonly name: "LiquidationContractUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256[]"; readonly name: "offerId"; readonly type: "uint256[]"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly indexed: false; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: "loan"; readonly type: "tuple"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }]; readonly name: "LoanEmitted"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }]; readonly name: "LoanForeclosed"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }]; readonly name: "LoanLiquidated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "renegotiationId"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "oldLoanId"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "newLoanId"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly indexed: false; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: "loan"; readonly type: "tuple"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }]; readonly name: "LoanRefinanced"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "newLoanId"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "borrower"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "nftCollateralTokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "nftCollateralAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "principalAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "duration"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "floor"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "accruedInterest"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "startTime"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "aprBps"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly name: "tranche"; readonly type: "tuple[]"; }, { readonly internalType: "uint256"; readonly name: "protocolFee"; readonly type: "uint256"; }]; readonly indexed: false; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly name: "loan"; readonly type: "tuple"; }, { readonly indexed: false; readonly internalType: "uint256[]"; readonly name: "offerIds"; readonly type: "uint256[]"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "totalFee"; readonly type: "uint256"; }]; readonly name: "LoanRefinancedFromNewOffers"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "totalRepayment"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }]; readonly name: "LoanRepaid"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "loanId"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "liquidator"; readonly type: "address"; }]; readonly name: "LoanSentToLiquidator"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "_minimum"; readonly type: "uint256"; }]; readonly name: "MinAprImprovementUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "newMinBid"; readonly type: "uint256"; }]; readonly name: "MinBidLiquidationUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "minLockPeriod"; readonly type: "uint256"; }]; readonly name: "MinLockPeriodUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "offerId"; readonly type: "uint256"; }]; readonly name: "OfferCancelled"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "user"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferred"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "recipient"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "fraction"; readonly type: "uint256"; }]; readonly indexed: false; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly name: "fee"; readonly type: "tuple"; }]; readonly name: "ProtocolFeePendingUpdate"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "recipient"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "fraction"; readonly type: "uint256"; }]; readonly indexed: false; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly name: "fee"; readonly type: "tuple"; }]; readonly name: "ProtocolFeeUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "lender"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "renegotiationId"; readonly type: "uint256"; }]; readonly name: "RenegotiationOfferCancelled"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "delegate"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "collection"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "bytes32"; readonly name: "_rights"; readonly type: "bytes32"; }]; readonly name: "RevokeDelegate"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "TransferOwnerRequested"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "contractAdded"; readonly type: "address"; }]; readonly name: "WhitelistedCallbackContractAdded"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "contractRemoved"; readonly type: "address"; }]; readonly name: "WhitelistedCallbackContractRemoved"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "AddressZeroError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "_offerId"; readonly type: "uint256"; }]; readonly name: "CancelledOrExecutedOfferError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "CollectionNotWhitelistedError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "CurrencyNotWhitelistedError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ECDSAInvalidSignature"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "length"; readonly type: "uint256"; }]; readonly name: "ECDSAInvalidSignatureLength"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "s"; readonly type: "bytes32"; }]; readonly name: "ECDSAInvalidSignatureS"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_expirationTime"; readonly type: "uint256"; }]; readonly name: "ExpiredOfferError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidAddressesError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_amount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "_principalAmount"; readonly type: "uint256"; }]; readonly name: "InvalidAmountError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidCallbackError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidCallerError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidCollateralIdError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidDurationError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidInputError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_loanId"; readonly type: "uint256"; }]; readonly name: "InvalidLoanError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidMethodError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidParametersError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidRenegotiationOfferError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidSignatureError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidTrancheError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_liquidator"; readonly type: "address"; }]; readonly name: "LiquidatorOnlyError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "LoanExpiredError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "LoanLockedError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_expirationTime"; readonly type: "uint256"; }]; readonly name: "LoanNotDueError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "_newMinOfferId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "_minOfferId"; readonly type: "uint256"; }]; readonly name: "LowOfferIdError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_lender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "_newMinRenegotiationOfferId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "_minOfferId"; readonly type: "uint256"; }]; readonly name: "LowRenegotiationOfferIdError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "MaxCapacityExceededError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "MismatchError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "i"; readonly type: "uint256"; }, { readonly internalType: "bytes"; readonly name: "returndata"; readonly type: "bytes"; }]; readonly name: "MulticallFailed"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NFTNotReturnedError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NotStrictlyImprovedError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_pendingProtocolFeeSetTime"; readonly type: "uint256"; }]; readonly name: "TooEarlyError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "TooManyTranchesError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "TooSoonError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "minTimestamp"; readonly type: "uint256"; }]; readonly name: "TrancheCannotBeRefinancedError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ZeroInterestError"; readonly type: "error"; }]; readonly '3.1': readonly [{ readonly type: "constructor"; readonly inputs: readonly [{ readonly name: "loanLiquidator"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "protocolFee"; readonly type: "tuple"; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly components: readonly [{ readonly name: "recipient"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fraction"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "currencyManager"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "collectionManager"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "maxTranches"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "minLockPeriod"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "delegateRegistry"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "loanManagerRegistry"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "flashActionContract"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "minWaitTime"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "DOMAIN_SEPARATOR"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "FEE_UPDATE_NOTICE"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "INITIAL_DOMAIN_SEPARATOR"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "MAX_AUCTION_DURATION"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint48"; readonly internalType: "uint48"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "MIN_AUCTION_DURATION"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint48"; readonly internalType: "uint48"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "MIN_BID_LIQUIDATION"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "MIN_WAIT_TIME"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "VERSION"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes"; readonly internalType: "bytes"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "addNewTranche"; readonly inputs: readonly [{ readonly name: "_renegotiationOffer"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.RenegotiationOffer"; readonly components: readonly [{ readonly name: "renegotiationId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "trancheIndex"; readonly type: "uint256[]"; readonly internalType: "uint256[]"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "_loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "_renegotiationOfferSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "addWhitelistedCallbackContract"; readonly inputs: readonly [{ readonly name: "_contract"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "cancelOffer"; readonly inputs: readonly [{ readonly name: "_offerId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "cancelRenegotiationOffer"; readonly inputs: readonly [{ readonly name: "_renegotiationId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "delegate"; readonly inputs: readonly [{ readonly name: "_loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "_delegate"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_rights"; readonly type: "bytes32"; readonly internalType: "bytes32"; }, { readonly name: "_value"; readonly type: "bool"; readonly internalType: "bool"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "emitLoan"; readonly inputs: readonly [{ readonly name: "_loanExecutionData"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.LoanExecutionData"; readonly components: readonly [{ readonly name: "executionData"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.ExecutionData"; readonly components: readonly [{ readonly name: "offerExecution"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.OfferExecution[]"; readonly components: readonly [{ readonly name: "offer"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.LoanOffer"; readonly components: readonly [{ readonly name: "offerId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "capacity"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "maxSeniorRepayment"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "validators"; readonly type: "tuple[]"; readonly internalType: "struct IBaseLoan.OfferValidator[]"; readonly components: readonly [{ readonly name: "validator"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "arguments"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; }, { readonly name: "amount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderOfferSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }, { readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "tokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalReceiver"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "callbackData"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }, { readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "borrowerOfferSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "executeFlashAction"; readonly inputs: readonly [{ readonly name: "_loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "_loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "_target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_data"; readonly type: "bytes"; readonly internalType: "bytes"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "getCollectionManager"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getCurrencyManager"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getDelegateRegistry"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getFlashActionContract"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getLiquidationAuctionDuration"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint48"; readonly internalType: "uint48"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getLiquidator"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getLoanHash"; readonly inputs: readonly [{ readonly name: "_loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getLoanManagerRegistry"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "contract ILoanManagerRegistry"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getMaxTranches"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getMinImprovementApr"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getMinLockPeriod"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getPendingProtocolFee"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "tuple"; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly components: readonly [{ readonly name: "recipient"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fraction"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getPendingProtocolFeeSetTime"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getProtocolFee"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "tuple"; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly components: readonly [{ readonly name: "recipient"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fraction"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getTotalLoansIssued"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getUsedCapacity"; readonly inputs: readonly [{ readonly name: "_lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_offerId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "isOfferCancelled"; readonly inputs: readonly [{ readonly name: "user"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "offerId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: "notActive"; readonly type: "bool"; readonly internalType: "bool"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "isRenegotiationOfferCancelled"; readonly inputs: readonly [{ readonly name: "user"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "renegotiationIf"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: "notActive"; readonly type: "bool"; readonly internalType: "bool"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "isWhitelistedCallbackContract"; readonly inputs: readonly [{ readonly name: "_contract"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; readonly internalType: "bool"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "liquidateLoan"; readonly inputs: readonly [{ readonly name: "_loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "_loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes"; readonly internalType: "bytes"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "loanLiquidated"; readonly inputs: readonly [{ readonly name: "_loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "_loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "multicall"; readonly inputs: readonly [{ readonly name: "data"; readonly type: "bytes[]"; readonly internalType: "bytes[]"; }]; readonly outputs: readonly [{ readonly name: "results"; readonly type: "bytes[]"; readonly internalType: "bytes[]"; }]; readonly stateMutability: "payable"; }, { readonly type: "function"; readonly name: "name"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "string"; readonly internalType: "string"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "onERC721Received"; readonly inputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }, { readonly name: ""; readonly type: "address"; readonly internalType: "address"; }, { readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "bytes"; readonly internalType: "bytes"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes4"; readonly internalType: "bytes4"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "owner"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "pendingOwner"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "pendingOwnerTime"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "refinanceFromLoanExecutionData"; readonly inputs: readonly [{ readonly name: "_loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "_loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "_loanExecutionData"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.LoanExecutionData"; readonly components: readonly [{ readonly name: "executionData"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.ExecutionData"; readonly components: readonly [{ readonly name: "offerExecution"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.OfferExecution[]"; readonly components: readonly [{ readonly name: "offer"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.LoanOffer"; readonly components: readonly [{ readonly name: "offerId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "capacity"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "maxSeniorRepayment"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "validators"; readonly type: "tuple[]"; readonly internalType: "struct IBaseLoan.OfferValidator[]"; readonly components: readonly [{ readonly name: "validator"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "arguments"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; }, { readonly name: "amount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderOfferSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }, { readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "tokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalReceiver"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "callbackData"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }, { readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "borrowerOfferSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "refinanceFull"; readonly inputs: readonly [{ readonly name: "_renegotiationOffer"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.RenegotiationOffer"; readonly components: readonly [{ readonly name: "renegotiationId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "trancheIndex"; readonly type: "uint256[]"; readonly internalType: "uint256[]"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "_loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "_renegotiationOfferSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "refinancePartial"; readonly inputs: readonly [{ readonly name: "_renegotiationOffer"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.RenegotiationOffer"; readonly components: readonly [{ readonly name: "renegotiationId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "trancheIndex"; readonly type: "uint256[]"; readonly internalType: "uint256[]"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "_loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "removeWhitelistedCallbackContract"; readonly inputs: readonly [{ readonly name: "_contract"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "repayLoan"; readonly inputs: readonly [{ readonly name: "_repaymentData"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.LoanRepaymentData"; readonly components: readonly [{ readonly name: "data"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.SignableRepaymentData"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "callbackData"; readonly type: "bytes"; readonly internalType: "bytes"; }, { readonly name: "shouldDelegate"; readonly type: "bool"; readonly internalType: "bool"; }]; }, { readonly name: "loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "borrowerSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "requestTransferOwner"; readonly inputs: readonly [{ readonly name: "_newOwner"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "revokeDelegate"; readonly inputs: readonly [{ readonly name: "_delegate"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_collection"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_tokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "_rights"; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "setFlashActionContract"; readonly inputs: readonly [{ readonly name: "_newFlashActionContract"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "setMinLockPeriod"; readonly inputs: readonly [{ readonly name: "__minLockPeriod"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "setProtocolFee"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "transferOwnership"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "transferOwnership"; readonly inputs: readonly [{ readonly name: "newOwner"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateLiquidationAuctionDuration"; readonly inputs: readonly [{ readonly name: "_newDuration"; readonly type: "uint48"; readonly internalType: "uint48"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateLiquidationContract"; readonly inputs: readonly [{ readonly name: "__loanLiquidator"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateMinImprovementApr"; readonly inputs: readonly [{ readonly name: "_newMinimum"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateProtocolFee"; readonly inputs: readonly [{ readonly name: "_newProtocolFee"; readonly type: "tuple"; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly components: readonly [{ readonly name: "recipient"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fraction"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "event"; readonly name: "Delegated"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "delegate"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "_rights"; readonly type: "bytes32"; readonly indexed: false; readonly internalType: "bytes32"; }, { readonly name: "value"; readonly type: "bool"; readonly indexed: false; readonly internalType: "bool"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "FlashActionContractUpdated"; readonly inputs: readonly [{ readonly name: "newFlashActionContract"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "FlashActionExecuted"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "target"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "data"; readonly type: "bytes"; readonly indexed: false; readonly internalType: "bytes"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LiquidationAuctionDurationUpdated"; readonly inputs: readonly [{ readonly name: "newDuration"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LiquidationContractUpdated"; readonly inputs: readonly [{ readonly name: "liquidator"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanEmitted"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "offerId"; readonly type: "uint256[]"; readonly indexed: false; readonly internalType: "uint256[]"; }, { readonly name: "loan"; readonly type: "tuple"; readonly indexed: false; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "fee"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanForeclosed"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanLiquidated"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanRefinanced"; readonly inputs: readonly [{ readonly name: "renegotiationId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "oldLoanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "newLoanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "loan"; readonly type: "tuple"; readonly indexed: false; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "fee"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanRefinancedFromNewOffers"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "newLoanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "loan"; readonly type: "tuple"; readonly indexed: false; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "offerIds"; readonly type: "uint256[]"; readonly indexed: false; readonly internalType: "uint256[]"; }, { readonly name: "totalFee"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanRepaid"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "totalRepayment"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "fee"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanSentToLiquidator"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "liquidator"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "MinAprImprovementUpdated"; readonly inputs: readonly [{ readonly name: "_minimum"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "MinBidLiquidationUpdated"; readonly inputs: readonly [{ readonly name: "newMinBid"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "MinLockPeriodUpdated"; readonly inputs: readonly [{ readonly name: "minLockPeriod"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OfferCancelled"; readonly inputs: readonly [{ readonly name: "lender"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "offerId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OwnershipTransferred"; readonly inputs: readonly [{ readonly name: "user"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "newOwner"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "ProtocolFeePendingUpdate"; readonly inputs: readonly [{ readonly name: "fee"; readonly type: "tuple"; readonly indexed: false; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly components: readonly [{ readonly name: "recipient"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fraction"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "ProtocolFeeUpdated"; readonly inputs: readonly [{ readonly name: "fee"; readonly type: "tuple"; readonly indexed: false; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly components: readonly [{ readonly name: "recipient"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fraction"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "RenegotiationOfferCancelled"; readonly inputs: readonly [{ readonly name: "lender"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "renegotiationId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "RevokeDelegate"; readonly inputs: readonly [{ readonly name: "delegate"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "collection"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "tokenId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "_rights"; readonly type: "bytes32"; readonly indexed: false; readonly internalType: "bytes32"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "TransferOwnerRequested"; readonly inputs: readonly [{ readonly name: "newOwner"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "WhitelistedCallbackContractAdded"; readonly inputs: readonly [{ readonly name: "contractAdded"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "WhitelistedCallbackContractRemoved"; readonly inputs: readonly [{ readonly name: "contractRemoved"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "error"; readonly name: "AddressZeroError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "CancelledOrExecutedOfferError"; readonly inputs: readonly [{ readonly name: "_lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_offerId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "CollectionNotWhitelistedError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "CurrencyNotWhitelistedError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "ECDSAInvalidSignature"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "ECDSAInvalidSignatureLength"; readonly inputs: readonly [{ readonly name: "length"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "ECDSAInvalidSignatureS"; readonly inputs: readonly [{ readonly name: "s"; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; }, { readonly type: "error"; readonly name: "ExpiredOfferError"; readonly inputs: readonly [{ readonly name: "_expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "InvalidAddressesError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidAmountError"; readonly inputs: readonly [{ readonly name: "_amount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "_principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "InvalidCallbackError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidCallerError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidCollateralError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidCollateralIdError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidDurationError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidInputError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidLoanError"; readonly inputs: readonly [{ readonly name: "_loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "InvalidMethodError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidParametersError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidRenegotiationOfferError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidSignatureError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidTrancheError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "LiquidatorOnlyError"; readonly inputs: readonly [{ readonly name: "_liquidator"; readonly type: "address"; readonly internalType: "address"; }]; }, { readonly type: "error"; readonly name: "LoanExpiredError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "LoanLockedError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "LoanNotDueError"; readonly inputs: readonly [{ readonly name: "_expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "MaxCapacityExceededError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "MismatchError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "MulticallFailed"; readonly inputs: readonly [{ readonly name: "i"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "returndata"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }, { readonly type: "error"; readonly name: "NFTNotReturnedError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "NotStrictlyImprovedError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "TooEarlyError"; readonly inputs: readonly [{ readonly name: "_pendingProtocolFeeSetTime"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "TooManyTranchesError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "TooSoonError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "TrancheCannotBeRefinancedError"; readonly inputs: readonly [{ readonly name: "minTimestamp"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "ZeroInterestError"; readonly inputs: readonly []; }]; readonly '3.2': readonly [{ readonly type: "constructor"; readonly inputs: readonly [{ readonly name: "loanLiquidator"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "protocolFee"; readonly type: "tuple"; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly components: readonly [{ readonly name: "recipient"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fraction"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "currencyManager"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "collectionManager"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "maxTranches"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "minLockPeriod"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "delegateRegistry"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "loanManagerRegistry"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "flashActionContract"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "minWaitTime"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "DOMAIN_SEPARATOR"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "FEE_UPDATE_NOTICE"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "INITIAL_DOMAIN_SEPARATOR"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "MAX_AUCTION_DURATION"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint48"; readonly internalType: "uint48"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "MIN_AUCTION_DURATION"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint48"; readonly internalType: "uint48"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "MIN_BID_LIQUIDATION"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "MIN_WAIT_TIME"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "VERSION"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes"; readonly internalType: "bytes"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "addNewTranche"; readonly inputs: readonly [{ readonly name: "_renegotiationOffer"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.RenegotiationOffer"; readonly components: readonly [{ readonly name: "renegotiationId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "trancheIndex"; readonly type: "uint256[]"; readonly internalType: "uint256[]"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "_loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }, { readonly name: "_renegotiationOfferSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "addWhitelistedCallbackContract"; readonly inputs: readonly [{ readonly name: "_contract"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "cancelOffer"; readonly inputs: readonly [{ readonly name: "_offerId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "cancelRenegotiationOffer"; readonly inputs: readonly [{ readonly name: "_renegotiationId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "delegate"; readonly inputs: readonly [{ readonly name: "_loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }, { readonly name: "_delegate"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_rights"; readonly type: "bytes32"; readonly internalType: "bytes32"; }, { readonly name: "_value"; readonly type: "bool"; readonly internalType: "bool"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "emitLoan"; readonly inputs: readonly [{ readonly name: "_loanExecutionData"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.LoanExecutionData"; readonly components: readonly [{ readonly name: "executionData"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.ExecutionData"; readonly components: readonly [{ readonly name: "offerExecution"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.OfferExecution[]"; readonly components: readonly [{ readonly name: "offer"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.LoanOffer"; readonly components: readonly [{ readonly name: "offerId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "capacity"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "maxSeniorRepayment"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "validators"; readonly type: "tuple[]"; readonly internalType: "struct IBaseLoan.OfferValidator[]"; readonly components: readonly [{ readonly name: "validator"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "arguments"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }, { readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }]; }, { readonly name: "amount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderOfferSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }, { readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "tokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalReceiver"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "callbackData"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }, { readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "borrowerOfferSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "executeFlashAction"; readonly inputs: readonly [{ readonly name: "_loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "_loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }, { readonly name: "_target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_data"; readonly type: "bytes"; readonly internalType: "bytes"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "getCollectionManager"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getCurrencyManager"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getDelegateRegistry"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getFlashActionContract"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getLiquidationAuctionDuration"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint48"; readonly internalType: "uint48"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getLiquidator"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getLoanHash"; readonly inputs: readonly [{ readonly name: "_loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getLoanManagerRegistry"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "contract ILoanManagerRegistry"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getMaxTranches"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getMinImprovementApr"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getMinLockPeriod"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getPendingProtocolFee"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "tuple"; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly components: readonly [{ readonly name: "recipient"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fraction"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getPendingProtocolFeeSetTime"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getProtocolFee"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "tuple"; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly components: readonly [{ readonly name: "recipient"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fraction"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getTotalLoansIssued"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getUsedCapacity"; readonly inputs: readonly [{ readonly name: "_lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_offerId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "isOfferCancelled"; readonly inputs: readonly [{ readonly name: "user"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "offerId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: "notActive"; readonly type: "bool"; readonly internalType: "bool"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "isRenegotiationOfferCancelled"; readonly inputs: readonly [{ readonly name: "user"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "renegotiationIf"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: "notActive"; readonly type: "bool"; readonly internalType: "bool"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "isWhitelistedCallbackContract"; readonly inputs: readonly [{ readonly name: "_contract"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; readonly internalType: "bool"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "liquidateLoan"; readonly inputs: readonly [{ readonly name: "_loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "_loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes"; readonly internalType: "bytes"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "multicall"; readonly inputs: readonly [{ readonly name: "data"; readonly type: "bytes[]"; readonly internalType: "bytes[]"; }]; readonly outputs: readonly [{ readonly name: "results"; readonly type: "bytes[]"; readonly internalType: "bytes[]"; }]; readonly stateMutability: "payable"; }, { readonly type: "function"; readonly name: "name"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "string"; readonly internalType: "string"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "onERC721Received"; readonly inputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }, { readonly name: ""; readonly type: "address"; readonly internalType: "address"; }, { readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "bytes"; readonly internalType: "bytes"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes4"; readonly internalType: "bytes4"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "owner"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "pendingOwner"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "pendingOwnerTime"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "refinanceFromLoanExecutionData"; readonly inputs: readonly [{ readonly name: "_loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "_loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }, { readonly name: "_loanExecutionData"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.LoanExecutionData"; readonly components: readonly [{ readonly name: "executionData"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.ExecutionData"; readonly components: readonly [{ readonly name: "offerExecution"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.OfferExecution[]"; readonly components: readonly [{ readonly name: "offer"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.LoanOffer"; readonly components: readonly [{ readonly name: "offerId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "capacity"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "maxSeniorRepayment"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "validators"; readonly type: "tuple[]"; readonly internalType: "struct IBaseLoan.OfferValidator[]"; readonly components: readonly [{ readonly name: "validator"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "arguments"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }, { readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }]; }, { readonly name: "amount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderOfferSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }, { readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "tokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalReceiver"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "callbackData"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }, { readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "borrowerOfferSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "refinanceFull"; readonly inputs: readonly [{ readonly name: "_renegotiationOffer"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.RenegotiationOffer"; readonly components: readonly [{ readonly name: "renegotiationId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "trancheIndex"; readonly type: "uint256[]"; readonly internalType: "uint256[]"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "_loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }, { readonly name: "_renegotiationOfferSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "refinancePartial"; readonly inputs: readonly [{ readonly name: "_renegotiationOffer"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.RenegotiationOffer"; readonly components: readonly [{ readonly name: "renegotiationId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "trancheIndex"; readonly type: "uint256[]"; readonly internalType: "uint256[]"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "_loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "removeWhitelistedCallbackContract"; readonly inputs: readonly [{ readonly name: "_contract"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "repayLoan"; readonly inputs: readonly [{ readonly name: "_repaymentData"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.LoanRepaymentData"; readonly components: readonly [{ readonly name: "data"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.SignableRepaymentData"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "callbackData"; readonly type: "bytes"; readonly internalType: "bytes"; }, { readonly name: "shouldDelegate"; readonly type: "bool"; readonly internalType: "bool"; }]; }, { readonly name: "loan"; readonly type: "tuple"; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }, { readonly name: "borrowerSignature"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "requestTransferOwner"; readonly inputs: readonly [{ readonly name: "_newOwner"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "revokeDelegate"; readonly inputs: readonly [{ readonly name: "_delegate"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_collection"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_tokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "_rights"; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "setFlashActionContract"; readonly inputs: readonly [{ readonly name: "_newFlashActionContract"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "setMinLockPeriod"; readonly inputs: readonly [{ readonly name: "__minLockPeriod"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "setProtocolFee"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "transferOwnership"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateLiquidationAuctionDuration"; readonly inputs: readonly [{ readonly name: "_newDuration"; readonly type: "uint48"; readonly internalType: "uint48"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateLiquidationContract"; readonly inputs: readonly [{ readonly name: "__loanLiquidator"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateMinImprovementApr"; readonly inputs: readonly [{ readonly name: "_newMinimum"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateProtocolFee"; readonly inputs: readonly [{ readonly name: "_newProtocolFee"; readonly type: "tuple"; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly components: readonly [{ readonly name: "recipient"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fraction"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "event"; readonly name: "Delegated"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "delegate"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "_rights"; readonly type: "bytes32"; readonly indexed: false; readonly internalType: "bytes32"; }, { readonly name: "value"; readonly type: "bool"; readonly indexed: false; readonly internalType: "bool"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "FlashActionContractUpdated"; readonly inputs: readonly [{ readonly name: "newFlashActionContract"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "FlashActionExecuted"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "target"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "data"; readonly type: "bytes"; readonly indexed: false; readonly internalType: "bytes"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LiquidationAuctionDurationUpdated"; readonly inputs: readonly [{ readonly name: "newDuration"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LiquidationContractUpdated"; readonly inputs: readonly [{ readonly name: "liquidator"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanEmitted"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "offerId"; readonly type: "uint256[]"; readonly indexed: false; readonly internalType: "uint256[]"; }, { readonly name: "loan"; readonly type: "tuple"; readonly indexed: false; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }, { readonly name: "fee"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanForeclosed"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanLiquidated"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "foreclosed"; readonly type: "bool"; readonly indexed: false; readonly internalType: "bool"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanRefinanced"; readonly inputs: readonly [{ readonly name: "renegotiationId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "oldLoanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "newLoanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "loan"; readonly type: "tuple"; readonly indexed: false; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }, { readonly name: "fee"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanRefinancedFromNewOffers"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "newLoanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "loan"; readonly type: "tuple"; readonly indexed: false; readonly internalType: "struct IMultiSourceLoan.Loan"; readonly components: readonly [{ readonly name: "borrower"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "nftCollateralTokenId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "nftCollateralAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "duration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tranche"; readonly type: "tuple[]"; readonly internalType: "struct IMultiSourceLoan.Tranche[]"; readonly components: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "floor"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accruedInterest"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "startTime"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "aprBps"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "protocolFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lenderRefinanceDisabled"; readonly type: "bool"; readonly internalType: "bool"; }]; }, { readonly name: "offerIds"; readonly type: "uint256[]"; readonly indexed: false; readonly internalType: "uint256[]"; }, { readonly name: "totalFee"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanRepaid"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "totalRepayment"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "fee"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "LoanSentToLiquidator"; readonly inputs: readonly [{ readonly name: "loanId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "liquidator"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "MinAprImprovementUpdated"; readonly inputs: readonly [{ readonly name: "_minimum"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "MinBidLiquidationUpdated"; readonly inputs: readonly [{ readonly name: "newMinBid"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "MinLockPeriodUpdated"; readonly inputs: readonly [{ readonly name: "minLockPeriod"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OfferCancelled"; readonly inputs: readonly [{ readonly name: "lender"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "offerId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OwnershipTransferred"; readonly inputs: readonly [{ readonly name: "user"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "newOwner"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "ProtocolFeePendingUpdate"; readonly inputs: readonly [{ readonly name: "fee"; readonly type: "tuple"; readonly indexed: false; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly components: readonly [{ readonly name: "recipient"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fraction"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "ProtocolFeeUpdated"; readonly inputs: readonly [{ readonly name: "fee"; readonly type: "tuple"; readonly indexed: false; readonly internalType: "struct WithProtocolFee.ProtocolFee"; readonly components: readonly [{ readonly name: "recipient"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "fraction"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "RenegotiationOfferCancelled"; readonly inputs: readonly [{ readonly name: "lender"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "renegotiationId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "RevokeDelegate"; readonly inputs: readonly [{ readonly name: "delegate"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "collection"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "tokenId"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "_rights"; readonly type: "bytes32"; readonly indexed: false; readonly internalType: "bytes32"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "TransferOwnerRequested"; readonly inputs: readonly [{ readonly name: "newOwner"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "WhitelistedCallbackContractAdded"; readonly inputs: readonly [{ readonly name: "contractAdded"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "WhitelistedCallbackContractRemoved"; readonly inputs: readonly [{ readonly name: "contractRemoved"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "error"; readonly name: "AddressZeroError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "CancelledOrExecutedOfferError"; readonly inputs: readonly [{ readonly name: "_lender"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_offerId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "CollectionNotWhitelistedError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "CurrencyNotWhitelistedError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "ECDSAInvalidSignature"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "ECDSAInvalidSignatureLength"; readonly inputs: readonly [{ readonly name: "length"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "ECDSAInvalidSignatureS"; readonly inputs: readonly [{ readonly name: "s"; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; }, { readonly type: "error"; readonly name: "ExpiredOfferError"; readonly inputs: readonly [{ readonly name: "_expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "InvalidAddressesError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidAmountError"; readonly inputs: readonly [{ readonly name: "_amount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "_principalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "InvalidBorrowerError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidCallbackError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidCallerError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidCollateralError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidCollateralIdError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidDurationError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidInputError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidLoanError"; readonly inputs: readonly [{ readonly name: "_loanId"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "InvalidLockPeriodError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidMethodError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidRenegotiationOfferError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidSignatureError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidTrancheError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "LenderRefinanceDisabledError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "LoanExpiredError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "LoanLockedError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "LoanNotDueError"; readonly inputs: readonly [{ readonly name: "_expirationTime"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "MaxCapacityExceededError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "MulticallFailed"; readonly inputs: readonly [{ readonly name: "i"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "returndata"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }, { readonly type: "error"; readonly name: "NFTNotReturnedError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "NotStrictlyImprovedError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "TooEarlyError"; readonly inputs: readonly [{ readonly name: "_pendingProtocolFeeSetTime"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "TooManyTranchesError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "TooSoonError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "TrancheCannotBeRefinancedError"; readonly inputs: readonly [{ readonly name: "minTimestamp"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "ZeroInterestError"; readonly inputs: readonly []; }]; }; export type MslV6Version = keyof typeof MSL_V6_ABI_BY_VERSION; export declare class MslV6 extends BaseContract { version: MslV6Version; constructor({ walletClient, address, version, publicClient, }: { walletClient: Wallet; address: Address; version: MslV6Version; publicClient?: PublicClient; }); private getDomain; private loanOfferType; private executionDataType; signOffer({ structToSign }: { structToSign: OfferV6 | OfferV8; }): Promise<`0x${string}`>; signRenegotiationOffer({ structToSign }: { structToSign: RenegotiationV6; }): Promise<`0x${string}`>; signRepaymentData({ structToSign }: { structToSign: SignableRepaymentDataV6; }): Promise<`0x${string}`>; /** Builds the canonical authorization without requesting a wallet signature. */ getExecutionTypedData(structToSign: T): { readonly domain: { name: string; version: "3" | "3.1" | "3.2"; chainId: number; verifyingContract: `0x${string}`; }; readonly primaryType: "ExecutionData"; readonly types: { readonly ExecutionData: { name: string; type: string; }[]; readonly OfferExecution: readonly [{ readonly name: "offer"; readonly type: "LoanOffer"; }, { readonly name: "amount"; readonly type: "uint256"; }, { readonly name: "lenderOfferSignature"; readonly type: "bytes"; }]; readonly LoanOffer: { name: string; type: string; }[]; readonly OfferValidator: readonly [{ readonly name: "validator"; readonly type: "address"; }, { readonly name: "arguments"; readonly type: "bytes"; }]; }; readonly message: T; }; signExecutionData({ structToSign, }: { structToSign: T; }): Promise<`0x${string}`>; cancelOffer({ id }: { id: bigint; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; lender: `0x${string}`; offerId: bigint; } | { blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; lender: `0x${string}`; offerId: bigint; } | { blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; lender: `0x${string}`; offerId: bigint; }>; }>; cancelOffers({ ids }: { ids: bigint[]; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; events: ({ lender: `0x${string}`; offerId: bigint; } | { lender: `0x${string}`; offerId: bigint; } | { lender: `0x${string}`; offerId: bigint; })[]; }>; }>; cancelAllOffers({ minId }: { minId: bigint; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; lender: `0x${string}`; minOfferId: bigint; }>; }>; cancelRefinanceOffer({ id }: { id: bigint; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; lender: `0x${string}`; renegotiationId: bigint; } | { blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; lender: `0x${string}`; renegotiationId: bigint; } | { blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; lender: `0x${string}`; renegotiationId: bigint; }>; }>; cancelAllRenegotiations(_: { minId: bigint; }): Promise; /** * Maps SDK emit arguments to the contract's `LoanExecutionData`. * * @remarks * Without an `expirationTime` the execution data expires `lifetime` seconds from now: a day for * a loan the borrower sends, `BORROWER_SIGNATURE_LIFETIME` when the borrower signs it. */ private mapEmitLoanToMslEmitLoanArgs; /** * Shapes a `LoanEmitted` event as `emitLoan` returns it: the loan under its SDK id * (`.`) with its contract address, its on-chain id, and the SDK ids * (`..`) of the offers its execution data spent. */ private toEmittedLoan; emitLoan(emitArgs: EmitLoanArgs): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loan: { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; lenderRefinanceDisabled: boolean; id: string; }; loanId: bigint; offerIds: string[]; }>; }>; /** * Emits one loan per item of `emitArgs` in a single transaction, as one `emitLoan` call each * inside the contract's `multicall`, which reverts every loan when one of them fails. * * @remarks * `waitTxInBlock` resolves to `loans`, in the order of `emitArgs`, each shaped as `emitLoan` * returns it. Each item is paired with the `LoanEmitted` event of its collateral * (`nftCollateralAddress`, `tokenId`) rather than by position, so a result can never * describe another item's loan; two items with the same collateral, which cannot both be * emitted, would take their events in order. It throws when the transaction emitted a * different number of loans than it was sent, or none for an item's collateral. */ emitLoans(emitArgs: EmitLoanArgs[]): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loans: { loan: { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; lenderRefinanceDisabled: boolean; id: string; }; loanId: bigint; offerIds: string[]; }[]; }>; }>; revokeDelegationsAndEmitLoan({ delegations, emit, }: { delegations: readonly LoanDelegation[]; emit: EmitLoanArgs; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ results: ({ loanId: bigint; offerId: readonly bigint[]; loan: { borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; }; fee: bigint; } | { delegate: `0x${string}`; collection: `0x${string}`; tokenId: bigint; _rights: `0x${string}`; })[]; blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loan: { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; lenderRefinanceDisabled: boolean; id: string; }; loanId: bigint; }>; }>; repayLoan({ loan, loanId }: { loan: LoanV6; loanId: bigint; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loanId: bigint; totalRepayment: bigint; fee: bigint; } | { blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loanId: bigint; totalRepayment: bigint; fee: bigint; } | { blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loanId: bigint; totalRepayment: bigint; fee: bigint; }>; }>; getRemainingLockupSeconds({ loan }: { loan: LoanV6; }): Promise; isEndLockedUp({ loan, }: { loan: LoanToMslLoanType & { durationFromRenegotiationOrStart: bigint; }; }): Promise; refinanceBatch({ renegotiationId, refinancings, }: { renegotiationId: bigint; refinancings: { loan: LoanV6; newAprBps: bigint; sources: { source: LoanV6['tranche'][number] & { loanIndex: number; }; refinancingPrincipal: bigint; }[]; }[]; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; results: ({ renegotiationId: bigint; oldLoanId: bigint; newLoanId: bigint; loan: { borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; }; fee: bigint; } | { renegotiationId: bigint; oldLoanId: bigint; newLoanId: bigint; loan: { borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; }; fee: bigint; } | { renegotiationId: bigint; oldLoanId: bigint; newLoanId: bigint; loan: { borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; lenderRefinanceDisabled: boolean; }; fee: bigint; })[]; }>; }>; refinanceFullLoan({ offer, signature, loan, }: { offer: RenegotiationV6; signature: Hash; loan: LoanV6; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loan: { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; lenderRefinanceDisabled: boolean; id: string; }; loanId: bigint; renegotiationId: string; }>; }>; refinancePartialLoan({ offer, loan }: { offer: RenegotiationV6; loan: LoanV6; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loan: { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; lenderRefinanceDisabled: boolean; id: string; }; loanId: bigint; renegotiationId: string; }>; }>; addTranche({ offer, signature, loan, }: { offer: RenegotiationV6; signature: Hash; loan: LoanV6; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loan: { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; lenderRefinanceDisabled: boolean; id: string; }; loanId: bigint; renegotiationId: string; }>; }>; refinanceFromOffers({ loan, loanId, executionData, }: { loan: LoanV6; loanId: bigint; executionData: EmitLoanArgs; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loan: { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; id: string; } | { contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; lenderRefinanceDisabled: boolean; id: string; }; loanId: bigint; offerIds: string[]; }>; }>; private executeRenegotiation; delegateMulticall(delegations: Parameters[0][]): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ results: ({ loanId: bigint; delegate: `0x${string}`; _rights: `0x${string}`; value: boolean; } | { loanId: bigint; delegate: `0x${string}`; _rights: `0x${string}`; value: boolean; } | { loanId: bigint; delegate: `0x${string}`; _rights: `0x${string}`; value: boolean; })[]; blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; }>; }>; delegate({ loan, loanId, to, rights, enable, }: { loan: LoanV6; loanId: bigint; to: Address; rights?: Hash; enable: boolean; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loan: { loanId: bigint; contractAddress: `0x${string}`; borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint | (bigint & Date); duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; contractStartTime: Date | bigint; }; value: boolean; }>; }>; revokeDelegate({ to, collection, tokenId, }: { to: Address; collection: Address; tokenId: bigint; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; delegate: `0x${string}`; collection: `0x${string}`; tokenId: bigint; _rights: `0x${string}`; } | { blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; delegate: `0x${string}`; collection: `0x${string}`; tokenId: bigint; _rights: `0x${string}`; } | { blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; delegate: `0x${string}`; collection: `0x${string}`; tokenId: bigint; _rights: `0x${string}`; }>; }>; liquidateLoan({ loan, loanId }: { loan: LoanV6; loanId: bigint; }): Promise<{ txHash: `0x${string}`; waitTxInBlock: () => Promise<{ blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loanId: bigint; } | { blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loanId: bigint; } | { blobGasPrice?: bigint | undefined; blobGasUsed?: bigint | undefined; blockHash: Hash; blockNumber: bigint; blockTimestamp?: bigint | undefined; contractAddress: Address | null | undefined; cumulativeGasUsed: bigint; effectiveGasPrice: bigint; from: Address; gasUsed: bigint; logs: import("viem").Log[]; logsBloom: Hex; root?: Hash | undefined; status: "success" | "reverted"; to: Address | null; transactionHash: Hash; transactionIndex: number; type: import("viem").TransactionType; loanId: bigint; }>; }>; decodeRepaymentCalldata(calldata: Hex): { data: { loanId: bigint; callbackData: `0x${string}`; shouldDelegate: boolean; }; loan: { borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; }; borrowerSignature: `0x${string}`; } | { data: { loanId: bigint; callbackData: `0x${string}`; shouldDelegate: boolean; }; loan: { borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; }; borrowerSignature: `0x${string}`; } | { data: { loanId: bigint; callbackData: `0x${string}`; shouldDelegate: boolean; }; loan: { borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; lenderRefinanceDisabled: boolean; }; borrowerSignature: `0x${string}`; }; getProtocolFee(): Promise<{ recipient: `0x${string}`; fraction: bigint; } | { recipient: `0x${string}`; fraction: bigint; } | { recipient: `0x${string}`; fraction: bigint; }>; encodeRepayLoan({ repayArgs, withSignature, }: { repayArgs: RepayArgs; withSignature: boolean; }): Promise<`0x${string}`>; encodeEmitLoan({ emitArgs, withSignature, }: { emitArgs: EmitLoanArgs; withSignature: boolean; }): Promise<`0x${string}`>; } export {};