Properties
version
version: "3" | "3.1"
abi
abi: readonly [{
inputs: readonly [{
internalType: "address";
name: "loanLiquidator";
type: "address";
}, {
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "protocolFee";
type: "tuple";
}, {
internalType: "address";
name: "currencyManager";
type: "address";
}, {
internalType: "address";
name: "collectionManager";
type: "address";
}, {
internalType: "uint256";
name: "maxTranches";
type: "uint256";
}, {
internalType: "uint256";
name: "minLockPeriod";
type: "uint256";
}, {
internalType: "address";
name: "delegateRegistry";
type: "address";
}, {
internalType: "address";
name: "loanManagerRegistry";
type: "address";
}, {
internalType: "address";
name: "flashActionContract";
type: "address";
}, {
internalType: "uint256";
name: "minWaitTime";
type: "uint256";
}];
stateMutability: "nonpayable";
type: "constructor";
}, {
inputs: readonly [];
name: "DOMAIN_SEPARATOR";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "FEE_UPDATE_NOTICE";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "INITIAL_DOMAIN_SEPARATOR";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MAX_AUCTION_DURATION";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_AUCTION_DURATION";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_BID_LIQUIDATION";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_WAIT_TIME";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "VERSION";
outputs: readonly [{
internalType: "bytes";
name: "";
type: "bytes";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "bytes";
name: "_renegotiationOfferSignature";
type: "bytes";
}];
name: "addNewTranche";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "addWhitelistedCallbackContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "cancelAllOffers";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "cancelOffer";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_renegotiationId";
type: "uint256";
}];
name: "cancelRenegotiationOffer";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
internalType: "address";
name: "_delegate";
type: "address";
}, {
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}, {
internalType: "bool";
name: "_value";
type: "bool";
}];
name: "delegate";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "offerId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256";
name: "capacity";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "maxSeniorRepayment";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "validator";
type: "address";
}, {
internalType: "bytes";
name: "arguments";
type: "bytes";
}];
internalType: "struct IBaseLoan.OfferValidator[]";
name: "validators";
type: "tuple[]";
}];
internalType: "struct IMultiSourceLoan.LoanOffer";
name: "offer";
type: "tuple";
}, {
internalType: "uint256";
name: "amount";
type: "uint256";
}, {
internalType: "bytes";
name: "lenderOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.OfferExecution[]";
name: "offerExecution";
type: "tuple[]";
}, {
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "address";
name: "principalReceiver";
type: "address";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.ExecutionData";
name: "executionData";
type: "tuple";
}, {
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "bytes";
name: "borrowerOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanExecutionData";
name: "_loanExecutionData";
type: "tuple";
}];
name: "emitLoan";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "address";
name: "_target";
type: "address";
}, {
internalType: "bytes";
name: "_data";
type: "bytes";
}];
name: "executeFlashAction";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "getCollectionManager";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getCurrencyManager";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getDelegateRegistry";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getFlashActionContract";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLiquidationAuctionDuration";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLiquidator";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}];
name: "getLoanHash";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLoanManagerRegistry";
outputs: readonly [{
internalType: "contract ILoanManagerRegistry";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMaxTranches";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMinImprovementApr";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMinLockPeriod";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getPendingProtocolFee";
outputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "";
type: "tuple";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getPendingProtocolFeeSetTime";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getProtocolFee";
outputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "";
type: "tuple";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getTotalLoansIssued";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "getUsedCapacity";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}, {
internalType: "uint256";
name: "offerId";
type: "uint256";
}];
name: "isOfferCancelled";
outputs: readonly [{
internalType: "bool";
name: "notActive";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}, {
internalType: "uint256";
name: "renegotiationIf";
type: "uint256";
}];
name: "isRenegotiationOfferCancelled";
outputs: readonly [{
internalType: "bool";
name: "notActive";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "isWhitelistedCallbackContract";
outputs: readonly [{
internalType: "bool";
name: "";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "liquidateLoan";
outputs: readonly [{
internalType: "bytes";
name: "";
type: "bytes";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "loanLiquidated";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}];
name: "minOfferId";
outputs: readonly [{
internalType: "uint256";
name: "minOfferId";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "bytes[]";
name: "data";
type: "bytes[]";
}];
name: "multicall";
outputs: readonly [{
internalType: "bytes[]";
name: "results";
type: "bytes[]";
}];
stateMutability: "payable";
type: "function";
}, {
inputs: readonly [];
name: "name";
outputs: readonly [{
internalType: "string";
name: "";
type: "string";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "";
type: "address";
}, {
internalType: "address";
name: "";
type: "address";
}, {
internalType: "uint256";
name: "";
type: "uint256";
}, {
internalType: "bytes";
name: "";
type: "bytes";
}];
name: "onERC721Received";
outputs: readonly [{
internalType: "bytes4";
name: "";
type: "bytes4";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "owner";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "pendingOwner";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "pendingOwnerTime";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
components: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "offerId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256";
name: "capacity";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "maxSeniorRepayment";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "validator";
type: "address";
}, {
internalType: "bytes";
name: "arguments";
type: "bytes";
}];
internalType: "struct IBaseLoan.OfferValidator[]";
name: "validators";
type: "tuple[]";
}];
internalType: "struct IMultiSourceLoan.LoanOffer";
name: "offer";
type: "tuple";
}, {
internalType: "uint256";
name: "amount";
type: "uint256";
}, {
internalType: "bytes";
name: "lenderOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.OfferExecution[]";
name: "offerExecution";
type: "tuple[]";
}, {
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "address";
name: "principalReceiver";
type: "address";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.ExecutionData";
name: "executionData";
type: "tuple";
}, {
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "bytes";
name: "borrowerOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanExecutionData";
name: "_loanExecutionData";
type: "tuple";
}];
name: "refinanceFromLoanExecutionData";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "bytes";
name: "_renegotiationOfferSignature";
type: "bytes";
}];
name: "refinanceFull";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "refinancePartial";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "removeWhitelistedCallbackContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}, {
internalType: "bool";
name: "shouldDelegate";
type: "bool";
}];
internalType: "struct IMultiSourceLoan.SignableRepaymentData";
name: "data";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
internalType: "bytes";
name: "borrowerSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanRepaymentData";
name: "_repaymentData";
type: "tuple";
}];
name: "repayLoan";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_newOwner";
type: "address";
}];
name: "requestTransferOwner";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_delegate";
type: "address";
}, {
internalType: "address";
name: "_collection";
type: "address";
}, {
internalType: "uint256";
name: "_tokenId";
type: "uint256";
}, {
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}];
name: "revokeDelegate";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_newFlashActionContract";
type: "address";
}];
name: "setFlashActionContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "__minLockPeriod";
type: "uint256";
}];
name: "setMinLockPeriod";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "setProtocolFee";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "transferOwnership";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "transferOwnership";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint48";
name: "_newDuration";
type: "uint48";
}];
name: "updateLiquidationAuctionDuration";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "__loanLiquidator";
type: "address";
}];
name: "updateLiquidationContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_newMinimum";
type: "uint256";
}];
name: "updateMinImprovementApr";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "_newProtocolFee";
type: "tuple";
}];
name: "updateProtocolFee";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "minOfferId";
type: "uint256";
}];
name: "AllOffersCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "delegate";
type: "address";
}, {
indexed: false;
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}, {
indexed: false;
internalType: "bool";
name: "value";
type: "bool";
}];
name: "Delegated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "newFlashActionContract";
type: "address";
}];
name: "FlashActionContractUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "target";
type: "address";
}, {
indexed: false;
internalType: "bytes";
name: "data";
type: "bytes";
}];
name: "FlashActionExecuted";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "newDuration";
type: "uint256";
}];
name: "LiquidationAuctionDurationUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "liquidator";
type: "address";
}];
name: "LiquidationContractUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256[]";
name: "offerId";
type: "uint256[]";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanEmitted";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}];
name: "LoanForeclosed";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}];
name: "LoanLiquidated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "oldLoanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "newLoanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanRefinanced";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "newLoanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256[]";
name: "offerIds";
type: "uint256[]";
}, {
indexed: false;
internalType: "uint256";
name: "totalFee";
type: "uint256";
}];
name: "LoanRefinancedFromNewOffers";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "totalRepayment";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanRepaid";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "liquidator";
type: "address";
}];
name: "LoanSentToLiquidator";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "_minimum";
type: "uint256";
}];
name: "MinAprImprovementUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "newMinBid";
type: "uint256";
}];
name: "MinBidLiquidationUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "minLockPeriod";
type: "uint256";
}];
name: "MinLockPeriodUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "offerId";
type: "uint256";
}];
name: "OfferCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: true;
internalType: "address";
name: "user";
type: "address";
}, {
indexed: true;
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "OwnershipTransferred";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
name: "fee";
type: "tuple";
}];
name: "ProtocolFeePendingUpdate";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
name: "fee";
type: "tuple";
}];
name: "ProtocolFeeUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}];
name: "RenegotiationOfferCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "delegate";
type: "address";
}, {
indexed: false;
internalType: "address";
name: "collection";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
indexed: false;
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}];
name: "RevokeDelegate";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "TransferOwnerRequested";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "contractAdded";
type: "address";
}];
name: "WhitelistedCallbackContractAdded";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "contractRemoved";
type: "address";
}];
name: "WhitelistedCallbackContractRemoved";
type: "event";
}, {
inputs: readonly [];
name: "AddressZeroError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "CancelledOrExecutedOfferError";
type: "error";
}, {
inputs: readonly [];
name: "CollectionNotWhitelistedError";
type: "error";
}, {
inputs: readonly [];
name: "CurrencyNotWhitelistedError";
type: "error";
}, {
inputs: readonly [];
name: "ECDSAInvalidSignature";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "length";
type: "uint256";
}];
name: "ECDSAInvalidSignatureLength";
type: "error";
}, {
inputs: readonly [{
internalType: "bytes32";
name: "s";
type: "bytes32";
}];
name: "ECDSAInvalidSignatureS";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_expirationTime";
type: "uint256";
}];
name: "ExpiredOfferError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidAddressesError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_amount";
type: "uint256";
}, {
internalType: "uint256";
name: "_principalAmount";
type: "uint256";
}];
name: "InvalidAmountError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCallbackError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCallerError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCollateralIdError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidDurationError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidInputError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}];
name: "InvalidLoanError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidMethodError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidParametersError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidRenegotiationOfferError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidSignatureError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidTrancheError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_liquidator";
type: "address";
}];
name: "LiquidatorOnlyError";
type: "error";
}, {
inputs: readonly [];
name: "LoanExpiredError";
type: "error";
}, {
inputs: readonly [];
name: "LoanLockedError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_expirationTime";
type: "uint256";
}];
name: "LoanNotDueError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_newMinOfferId";
type: "uint256";
}, {
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "LowOfferIdError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_newMinRenegotiationOfferId";
type: "uint256";
}, {
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "LowRenegotiationOfferIdError";
type: "error";
}, {
inputs: readonly [];
name: "MaxCapacityExceededError";
type: "error";
}, {
inputs: readonly [];
name: "MismatchError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "i";
type: "uint256";
}, {
internalType: "bytes";
name: "returndata";
type: "bytes";
}];
name: "MulticallFailed";
type: "error";
}, {
inputs: readonly [];
name: "NFTNotReturnedError";
type: "error";
}, {
inputs: readonly [];
name: "NotStrictlyImprovedError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_pendingProtocolFeeSetTime";
type: "uint256";
}];
name: "TooEarlyError";
type: "error";
}, {
inputs: readonly [];
name: "TooManyTranchesError";
type: "error";
}, {
inputs: readonly [];
name: "TooSoonError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "minTimestamp";
type: "uint256";
}];
name: "TrancheCannotBeRefinancedError";
type: "error";
}, {
inputs: readonly [];
name: "ZeroInterestError";
type: "error";
}] | readonly [{
type: "constructor";
inputs: readonly [{
name: "loanLiquidator";
type: "address";
internalType: "address";
}, {
name: "protocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "currencyManager";
type: "address";
internalType: "address";
}, {
name: "collectionManager";
type: "address";
internalType: "address";
}, {
name: "maxTranches";
type: "uint256";
internalType: "uint256";
}, {
name: "minLockPeriod";
type: "uint256";
internalType: "uint256";
}, {
name: "delegateRegistry";
type: "address";
internalType: "address";
}, {
name: "loanManagerRegistry";
type: "address";
internalType: "address";
}, {
name: "flashActionContract";
type: "address";
internalType: "address";
}, {
name: "minWaitTime";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "DOMAIN_SEPARATOR";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "FEE_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "INITIAL_DOMAIN_SEPARATOR";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "MAX_AUCTION_DURATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_AUCTION_DURATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_BID_LIQUIDATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_WAIT_TIME";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "VERSION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes";
internalType: "bytes";
}];
stateMutability: "view";
}, {
type: "function";
name: "addNewTranche";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_renegotiationOfferSignature";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "addWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "cancelOffer";
inputs: readonly [{
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "cancelRenegotiationOffer";
inputs: readonly [{
name: "_renegotiationId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "delegate";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_delegate";
type: "address";
internalType: "address";
}, {
name: "_rights";
type: "bytes32";
internalType: "bytes32";
}, {
name: "_value";
type: "bool";
internalType: "bool";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "emitLoan";
inputs: readonly [{
name: "_loanExecutionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanExecutionData";
components: readonly [{
name: "executionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.ExecutionData";
components: readonly [{
name: "offerExecution";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.OfferExecution[]";
components: readonly [{
name: "offer";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanOffer";
components: readonly [{
name: "offerId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "capacity";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "maxSeniorRepayment";
type: "uint256";
internalType: "uint256";
}, {
name: "validators";
type: "tuple[]";
internalType: "struct IBaseLoan.OfferValidator[]";
components: readonly [{
name: "validator";
type: "address";
internalType: "address";
}, {
name: "arguments";
type: "bytes";
internalType: "bytes";
}];
}];
}, {
name: "amount";
type: "uint256";
internalType: "uint256";
}, {
name: "lenderOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "principalReceiver";
type: "address";
internalType: "address";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "borrowerOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "executeFlashAction";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_target";
type: "address";
internalType: "address";
}, {
name: "_data";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "getCollectionManager";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getCurrencyManager";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getDelegateRegistry";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getFlashActionContract";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLiquidationAuctionDuration";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLiquidator";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLoanHash";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLoanManagerRegistry";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "contract ILoanManagerRegistry";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMaxTranches";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMinImprovementApr";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMinLockPeriod";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFeeSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getTotalLoansIssued";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getUsedCapacity";
inputs: readonly [{
name: "_lender";
type: "address";
internalType: "address";
}, {
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "isOfferCancelled";
inputs: readonly [{
name: "user";
type: "address";
internalType: "address";
}, {
name: "offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "notActive";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "isRenegotiationOfferCancelled";
inputs: readonly [{
name: "user";
type: "address";
internalType: "address";
}, {
name: "renegotiationIf";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "notActive";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "isWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [{
name: "";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "liquidateLoan";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [{
name: "";
type: "bytes";
internalType: "bytes";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "loanLiquidated";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "multicall";
inputs: readonly [{
name: "data";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [{
name: "results";
type: "bytes[]";
internalType: "bytes[]";
}];
stateMutability: "payable";
}, {
type: "function";
name: "name";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "string";
internalType: "string";
}];
stateMutability: "view";
}, {
type: "function";
name: "onERC721Received";
inputs: readonly [{
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "owner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwnerTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "refinanceFromLoanExecutionData";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loanExecutionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanExecutionData";
components: readonly [{
name: "executionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.ExecutionData";
components: readonly [{
name: "offerExecution";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.OfferExecution[]";
components: readonly [{
name: "offer";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanOffer";
components: readonly [{
name: "offerId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "capacity";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "maxSeniorRepayment";
type: "uint256";
internalType: "uint256";
}, {
name: "validators";
type: "tuple[]";
internalType: "struct IBaseLoan.OfferValidator[]";
components: readonly [{
name: "validator";
type: "address";
internalType: "address";
}, {
name: "arguments";
type: "bytes";
internalType: "bytes";
}];
}];
}, {
name: "amount";
type: "uint256";
internalType: "uint256";
}, {
name: "lenderOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "principalReceiver";
type: "address";
internalType: "address";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "borrowerOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "refinanceFull";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_renegotiationOfferSignature";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "refinancePartial";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "removeWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "repayLoan";
inputs: readonly [{
name: "_repaymentData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanRepaymentData";
components: readonly [{
name: "data";
type: "tuple";
internalType: "struct IMultiSourceLoan.SignableRepaymentData";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}, {
name: "shouldDelegate";
type: "bool";
internalType: "bool";
}];
}, {
name: "loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "borrowerSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "requestTransferOwner";
inputs: readonly [{
name: "_newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "revokeDelegate";
inputs: readonly [{
name: "_delegate";
type: "address";
internalType: "address";
}, {
name: "_collection";
type: "address";
internalType: "address";
}, {
name: "_tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "_rights";
type: "bytes32";
internalType: "bytes32";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setFlashActionContract";
inputs: readonly [{
name: "_newFlashActionContract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setMinLockPeriod";
inputs: readonly [{
name: "__minLockPeriod";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setProtocolFee";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [{
name: "newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateLiquidationAuctionDuration";
inputs: readonly [{
name: "_newDuration";
type: "uint48";
internalType: "uint48";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateLiquidationContract";
inputs: readonly [{
name: "__loanLiquidator";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateMinImprovementApr";
inputs: readonly [{
name: "_newMinimum";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateProtocolFee";
inputs: readonly [{
name: "_newProtocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "event";
name: "Delegated";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "delegate";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "_rights";
type: "bytes32";
indexed: false;
internalType: "bytes32";
}, {
name: "value";
type: "bool";
indexed: false;
internalType: "bool";
}];
anonymous: false;
}, {
type: "event";
name: "FlashActionContractUpdated";
inputs: readonly [{
name: "newFlashActionContract";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "FlashActionExecuted";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "target";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "data";
type: "bytes";
indexed: false;
internalType: "bytes";
}];
anonymous: false;
}, {
type: "event";
name: "LiquidationAuctionDurationUpdated";
inputs: readonly [{
name: "newDuration";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LiquidationContractUpdated";
inputs: readonly [{
name: "liquidator";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "LoanEmitted";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "offerId";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanForeclosed";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanLiquidated";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRefinanced";
inputs: readonly [{
name: "renegotiationId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "oldLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "newLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRefinancedFromNewOffers";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "newLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "offerIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}, {
name: "totalFee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRepaid";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "totalRepayment";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanSentToLiquidator";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "liquidator";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "MinAprImprovementUpdated";
inputs: readonly [{
name: "_minimum";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "MinBidLiquidationUpdated";
inputs: readonly [{
name: "newMinBid";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "MinLockPeriodUpdated";
inputs: readonly [{
name: "minLockPeriod";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "OfferCancelled";
inputs: readonly [{
name: "lender";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "offerId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "OwnershipTransferred";
inputs: readonly [{
name: "user";
type: "address";
indexed: true;
internalType: "address";
}, {
name: "newOwner";
type: "address";
indexed: true;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeePendingUpdate";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeeUpdated";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "RenegotiationOfferCancelled";
inputs: readonly [{
name: "lender";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "renegotiationId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "RevokeDelegate";
inputs: readonly [{
name: "delegate";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "collection";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "_rights";
type: "bytes32";
indexed: false;
internalType: "bytes32";
}];
anonymous: false;
}, {
type: "event";
name: "TransferOwnerRequested";
inputs: readonly [{
name: "newOwner";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "WhitelistedCallbackContractAdded";
inputs: readonly [{
name: "contractAdded";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "WhitelistedCallbackContractRemoved";
inputs: readonly [{
name: "contractRemoved";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "error";
name: "AddressZeroError";
inputs: readonly [];
}, {
type: "error";
name: "CancelledOrExecutedOfferError";
inputs: readonly [{
name: "_lender";
type: "address";
internalType: "address";
}, {
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "CollectionNotWhitelistedError";
inputs: readonly [];
}, {
type: "error";
name: "CurrencyNotWhitelistedError";
inputs: readonly [];
}, {
type: "error";
name: "ECDSAInvalidSignature";
inputs: readonly [];
}, {
type: "error";
name: "ECDSAInvalidSignatureLength";
inputs: readonly [{
name: "length";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "ECDSAInvalidSignatureS";
inputs: readonly [{
name: "s";
type: "bytes32";
internalType: "bytes32";
}];
}, {
type: "error";
name: "ExpiredOfferError";
inputs: readonly [{
name: "_expirationTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidAddressesError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidAmountError";
inputs: readonly [{
name: "_amount";
type: "uint256";
internalType: "uint256";
}, {
name: "_principalAmount";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidCallbackError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCallerError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCollateralError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCollateralIdError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidDurationError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidInputError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidLoanError";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidMethodError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidParametersError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidRenegotiationOfferError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidSignatureError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidTrancheError";
inputs: readonly [];
}, {
type: "error";
name: "LiquidatorOnlyError";
inputs: readonly [{
name: "_liquidator";
type: "address";
internalType: "address";
}];
}, {
type: "error";
name: "LoanExpiredError";
inputs: readonly [];
}, {
type: "error";
name: "LoanLockedError";
inputs: readonly [];
}, {
type: "error";
name: "LoanNotDueError";
inputs: readonly [{
name: "_expirationTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "MaxCapacityExceededError";
inputs: readonly [];
}, {
type: "error";
name: "MismatchError";
inputs: readonly [];
}, {
type: "error";
name: "MulticallFailed";
inputs: readonly [{
name: "i";
type: "uint256";
internalType: "uint256";
}, {
name: "returndata";
type: "bytes";
internalType: "bytes";
}];
}, {
type: "error";
name: "NFTNotReturnedError";
inputs: readonly [];
}, {
type: "error";
name: "NotStrictlyImprovedError";
inputs: readonly [];
}, {
type: "error";
name: "TooEarlyError";
inputs: readonly [{
name: "_pendingProtocolFeeSetTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "TooManyTranchesError";
inputs: readonly [];
}, {
type: "error";
name: "TooSoonError";
inputs: readonly [];
}, {
type: "error";
name: "TrancheCannotBeRefinancedError";
inputs: readonly [{
name: "minTimestamp";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "ZeroInterestError";
inputs: readonly [];
}]
address
address: `0x${string}`
contract
contract: GetContractReturnType<readonly [{
inputs: readonly [{
internalType: "address";
name: "loanLiquidator";
type: "address";
}, {
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "protocolFee";
type: "tuple";
}, {
internalType: "address";
name: "currencyManager";
type: "address";
}, {
internalType: "address";
name: "collectionManager";
type: "address";
}, {
internalType: "uint256";
name: "maxTranches";
type: "uint256";
}, {
internalType: "uint256";
name: "minLockPeriod";
type: "uint256";
}, {
internalType: "address";
name: "delegateRegistry";
type: "address";
}, {
internalType: "address";
name: "loanManagerRegistry";
type: "address";
}, {
internalType: "address";
name: "flashActionContract";
type: "address";
}, {
internalType: "uint256";
name: "minWaitTime";
type: "uint256";
}];
stateMutability: "nonpayable";
type: "constructor";
}, {
inputs: readonly [];
name: "DOMAIN_SEPARATOR";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "FEE_UPDATE_NOTICE";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "INITIAL_DOMAIN_SEPARATOR";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MAX_AUCTION_DURATION";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_AUCTION_DURATION";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_BID_LIQUIDATION";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_WAIT_TIME";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "VERSION";
outputs: readonly [{
internalType: "bytes";
name: "";
type: "bytes";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "bytes";
name: "_renegotiationOfferSignature";
type: "bytes";
}];
name: "addNewTranche";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "addWhitelistedCallbackContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "cancelAllOffers";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "cancelOffer";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_renegotiationId";
type: "uint256";
}];
name: "cancelRenegotiationOffer";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
internalType: "address";
name: "_delegate";
type: "address";
}, {
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}, {
internalType: "bool";
name: "_value";
type: "bool";
}];
name: "delegate";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "offerId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256";
name: "capacity";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "maxSeniorRepayment";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "validator";
type: "address";
}, {
internalType: "bytes";
name: "arguments";
type: "bytes";
}];
internalType: "struct IBaseLoan.OfferValidator[]";
name: "validators";
type: "tuple[]";
}];
internalType: "struct IMultiSourceLoan.LoanOffer";
name: "offer";
type: "tuple";
}, {
internalType: "uint256";
name: "amount";
type: "uint256";
}, {
internalType: "bytes";
name: "lenderOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.OfferExecution[]";
name: "offerExecution";
type: "tuple[]";
}, {
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "address";
name: "principalReceiver";
type: "address";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.ExecutionData";
name: "executionData";
type: "tuple";
}, {
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "bytes";
name: "borrowerOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanExecutionData";
name: "_loanExecutionData";
type: "tuple";
}];
name: "emitLoan";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "address";
name: "_target";
type: "address";
}, {
internalType: "bytes";
name: "_data";
type: "bytes";
}];
name: "executeFlashAction";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "getCollectionManager";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getCurrencyManager";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getDelegateRegistry";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getFlashActionContract";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLiquidationAuctionDuration";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLiquidator";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}];
name: "getLoanHash";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLoanManagerRegistry";
outputs: readonly [{
internalType: "contract ILoanManagerRegistry";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMaxTranches";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMinImprovementApr";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMinLockPeriod";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getPendingProtocolFee";
outputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "";
type: "tuple";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getPendingProtocolFeeSetTime";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getProtocolFee";
outputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "";
type: "tuple";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getTotalLoansIssued";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "getUsedCapacity";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}, {
internalType: "uint256";
name: "offerId";
type: "uint256";
}];
name: "isOfferCancelled";
outputs: readonly [{
internalType: "bool";
name: "notActive";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}, {
internalType: "uint256";
name: "renegotiationIf";
type: "uint256";
}];
name: "isRenegotiationOfferCancelled";
outputs: readonly [{
internalType: "bool";
name: "notActive";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "isWhitelistedCallbackContract";
outputs: readonly [{
internalType: "bool";
name: "";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "liquidateLoan";
outputs: readonly [{
internalType: "bytes";
name: "";
type: "bytes";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "loanLiquidated";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}];
name: "minOfferId";
outputs: readonly [{
internalType: "uint256";
name: "minOfferId";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "bytes[]";
name: "data";
type: "bytes[]";
}];
name: "multicall";
outputs: readonly [{
internalType: "bytes[]";
name: "results";
type: "bytes[]";
}];
stateMutability: "payable";
type: "function";
}, {
inputs: readonly [];
name: "name";
outputs: readonly [{
internalType: "string";
name: "";
type: "string";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "";
type: "address";
}, {
internalType: "address";
name: "";
type: "address";
}, {
internalType: "uint256";
name: "";
type: "uint256";
}, {
internalType: "bytes";
name: "";
type: "bytes";
}];
name: "onERC721Received";
outputs: readonly [{
internalType: "bytes4";
name: "";
type: "bytes4";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "owner";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "pendingOwner";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "pendingOwnerTime";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
components: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "offerId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256";
name: "capacity";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "maxSeniorRepayment";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "validator";
type: "address";
}, {
internalType: "bytes";
name: "arguments";
type: "bytes";
}];
internalType: "struct IBaseLoan.OfferValidator[]";
name: "validators";
type: "tuple[]";
}];
internalType: "struct IMultiSourceLoan.LoanOffer";
name: "offer";
type: "tuple";
}, {
internalType: "uint256";
name: "amount";
type: "uint256";
}, {
internalType: "bytes";
name: "lenderOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.OfferExecution[]";
name: "offerExecution";
type: "tuple[]";
}, {
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "address";
name: "principalReceiver";
type: "address";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.ExecutionData";
name: "executionData";
type: "tuple";
}, {
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "bytes";
name: "borrowerOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanExecutionData";
name: "_loanExecutionData";
type: "tuple";
}];
name: "refinanceFromLoanExecutionData";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "bytes";
name: "_renegotiationOfferSignature";
type: "bytes";
}];
name: "refinanceFull";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "refinancePartial";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "removeWhitelistedCallbackContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}, {
internalType: "bool";
name: "shouldDelegate";
type: "bool";
}];
internalType: "struct IMultiSourceLoan.SignableRepaymentData";
name: "data";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
internalType: "bytes";
name: "borrowerSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanRepaymentData";
name: "_repaymentData";
type: "tuple";
}];
name: "repayLoan";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_newOwner";
type: "address";
}];
name: "requestTransferOwner";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_delegate";
type: "address";
}, {
internalType: "address";
name: "_collection";
type: "address";
}, {
internalType: "uint256";
name: "_tokenId";
type: "uint256";
}, {
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}];
name: "revokeDelegate";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_newFlashActionContract";
type: "address";
}];
name: "setFlashActionContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "__minLockPeriod";
type: "uint256";
}];
name: "setMinLockPeriod";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "setProtocolFee";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "transferOwnership";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "transferOwnership";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint48";
name: "_newDuration";
type: "uint48";
}];
name: "updateLiquidationAuctionDuration";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "__loanLiquidator";
type: "address";
}];
name: "updateLiquidationContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_newMinimum";
type: "uint256";
}];
name: "updateMinImprovementApr";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "_newProtocolFee";
type: "tuple";
}];
name: "updateProtocolFee";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "minOfferId";
type: "uint256";
}];
name: "AllOffersCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "delegate";
type: "address";
}, {
indexed: false;
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}, {
indexed: false;
internalType: "bool";
name: "value";
type: "bool";
}];
name: "Delegated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "newFlashActionContract";
type: "address";
}];
name: "FlashActionContractUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "target";
type: "address";
}, {
indexed: false;
internalType: "bytes";
name: "data";
type: "bytes";
}];
name: "FlashActionExecuted";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "newDuration";
type: "uint256";
}];
name: "LiquidationAuctionDurationUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "liquidator";
type: "address";
}];
name: "LiquidationContractUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256[]";
name: "offerId";
type: "uint256[]";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanEmitted";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}];
name: "LoanForeclosed";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}];
name: "LoanLiquidated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "oldLoanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "newLoanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanRefinanced";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "newLoanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256[]";
name: "offerIds";
type: "uint256[]";
}, {
indexed: false;
internalType: "uint256";
name: "totalFee";
type: "uint256";
}];
name: "LoanRefinancedFromNewOffers";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "totalRepayment";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanRepaid";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "liquidator";
type: "address";
}];
name: "LoanSentToLiquidator";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "_minimum";
type: "uint256";
}];
name: "MinAprImprovementUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "newMinBid";
type: "uint256";
}];
name: "MinBidLiquidationUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "minLockPeriod";
type: "uint256";
}];
name: "MinLockPeriodUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "offerId";
type: "uint256";
}];
name: "OfferCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: true;
internalType: "address";
name: "user";
type: "address";
}, {
indexed: true;
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "OwnershipTransferred";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
name: "fee";
type: "tuple";
}];
name: "ProtocolFeePendingUpdate";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
name: "fee";
type: "tuple";
}];
name: "ProtocolFeeUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}];
name: "RenegotiationOfferCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "delegate";
type: "address";
}, {
indexed: false;
internalType: "address";
name: "collection";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
indexed: false;
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}];
name: "RevokeDelegate";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "TransferOwnerRequested";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "contractAdded";
type: "address";
}];
name: "WhitelistedCallbackContractAdded";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "contractRemoved";
type: "address";
}];
name: "WhitelistedCallbackContractRemoved";
type: "event";
}, {
inputs: readonly [];
name: "AddressZeroError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "CancelledOrExecutedOfferError";
type: "error";
}, {
inputs: readonly [];
name: "CollectionNotWhitelistedError";
type: "error";
}, {
inputs: readonly [];
name: "CurrencyNotWhitelistedError";
type: "error";
}, {
inputs: readonly [];
name: "ECDSAInvalidSignature";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "length";
type: "uint256";
}];
name: "ECDSAInvalidSignatureLength";
type: "error";
}, {
inputs: readonly [{
internalType: "bytes32";
name: "s";
type: "bytes32";
}];
name: "ECDSAInvalidSignatureS";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_expirationTime";
type: "uint256";
}];
name: "ExpiredOfferError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidAddressesError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_amount";
type: "uint256";
}, {
internalType: "uint256";
name: "_principalAmount";
type: "uint256";
}];
name: "InvalidAmountError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCallbackError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCallerError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCollateralIdError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidDurationError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidInputError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}];
name: "InvalidLoanError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidMethodError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidParametersError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidRenegotiationOfferError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidSignatureError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidTrancheError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_liquidator";
type: "address";
}];
name: "LiquidatorOnlyError";
type: "error";
}, {
inputs: readonly [];
name: "LoanExpiredError";
type: "error";
}, {
inputs: readonly [];
name: "LoanLockedError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_expirationTime";
type: "uint256";
}];
name: "LoanNotDueError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_newMinOfferId";
type: "uint256";
}, {
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "LowOfferIdError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_newMinRenegotiationOfferId";
type: "uint256";
}, {
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "LowRenegotiationOfferIdError";
type: "error";
}, {
inputs: readonly [];
name: "MaxCapacityExceededError";
type: "error";
}, {
inputs: readonly [];
name: "MismatchError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "i";
type: "uint256";
}, {
internalType: "bytes";
name: "returndata";
type: "bytes";
}];
name: "MulticallFailed";
type: "error";
}, {
inputs: readonly [];
name: "NFTNotReturnedError";
type: "error";
}, {
inputs: readonly [];
name: "NotStrictlyImprovedError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_pendingProtocolFeeSetTime";
type: "uint256";
}];
name: "TooEarlyError";
type: "error";
}, {
inputs: readonly [];
name: "TooManyTranchesError";
type: "error";
}, {
inputs: readonly [];
name: "TooSoonError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "minTimestamp";
type: "uint256";
}];
name: "TrancheCannotBeRefinancedError";
type: "error";
}, {
inputs: readonly [];
name: "ZeroInterestError";
type: "error";
}] | readonly [{
type: "constructor";
inputs: readonly [{
name: "loanLiquidator";
type: "address";
internalType: "address";
}, {
name: "protocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "currencyManager";
type: "address";
internalType: "address";
}, {
name: "collectionManager";
type: "address";
internalType: "address";
}, {
name: "maxTranches";
type: "uint256";
internalType: "uint256";
}, {
name: "minLockPeriod";
type: "uint256";
internalType: "uint256";
}, {
name: "delegateRegistry";
type: "address";
internalType: "address";
}, {
name: "loanManagerRegistry";
type: "address";
internalType: "address";
}, {
name: "flashActionContract";
type: "address";
internalType: "address";
}, {
name: "minWaitTime";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "DOMAIN_SEPARATOR";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "FEE_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "INITIAL_DOMAIN_SEPARATOR";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "MAX_AUCTION_DURATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_AUCTION_DURATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_BID_LIQUIDATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_WAIT_TIME";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "VERSION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes";
internalType: "bytes";
}];
stateMutability: "view";
}, {
type: "function";
name: "addNewTranche";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_renegotiationOfferSignature";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "addWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "cancelOffer";
inputs: readonly [{
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "cancelRenegotiationOffer";
inputs: readonly [{
name: "_renegotiationId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "delegate";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_delegate";
type: "address";
internalType: "address";
}, {
name: "_rights";
type: "bytes32";
internalType: "bytes32";
}, {
name: "_value";
type: "bool";
internalType: "bool";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "emitLoan";
inputs: readonly [{
name: "_loanExecutionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanExecutionData";
components: readonly [{
name: "executionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.ExecutionData";
components: readonly [{
name: "offerExecution";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.OfferExecution[]";
components: readonly [{
name: "offer";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanOffer";
components: readonly [{
name: "offerId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "capacity";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "maxSeniorRepayment";
type: "uint256";
internalType: "uint256";
}, {
name: "validators";
type: "tuple[]";
internalType: "struct IBaseLoan.OfferValidator[]";
components: readonly [{
name: "validator";
type: "address";
internalType: "address";
}, {
name: "arguments";
type: "bytes";
internalType: "bytes";
}];
}];
}, {
name: "amount";
type: "uint256";
internalType: "uint256";
}, {
name: "lenderOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "principalReceiver";
type: "address";
internalType: "address";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "borrowerOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "executeFlashAction";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_target";
type: "address";
internalType: "address";
}, {
name: "_data";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "getCollectionManager";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getCurrencyManager";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getDelegateRegistry";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getFlashActionContract";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLiquidationAuctionDuration";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLiquidator";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLoanHash";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLoanManagerRegistry";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "contract ILoanManagerRegistry";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMaxTranches";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMinImprovementApr";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMinLockPeriod";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFeeSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getTotalLoansIssued";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getUsedCapacity";
inputs: readonly [{
name: "_lender";
type: "address";
internalType: "address";
}, {
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "isOfferCancelled";
inputs: readonly [{
name: "user";
type: "address";
internalType: "address";
}, {
name: "offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "notActive";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "isRenegotiationOfferCancelled";
inputs: readonly [{
name: "user";
type: "address";
internalType: "address";
}, {
name: "renegotiationIf";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "notActive";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "isWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [{
name: "";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "liquidateLoan";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [{
name: "";
type: "bytes";
internalType: "bytes";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "loanLiquidated";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "multicall";
inputs: readonly [{
name: "data";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [{
name: "results";
type: "bytes[]";
internalType: "bytes[]";
}];
stateMutability: "payable";
}, {
type: "function";
name: "name";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "string";
internalType: "string";
}];
stateMutability: "view";
}, {
type: "function";
name: "onERC721Received";
inputs: readonly [{
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "owner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwnerTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "refinanceFromLoanExecutionData";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loanExecutionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanExecutionData";
components: readonly [{
name: "executionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.ExecutionData";
components: readonly [{
name: "offerExecution";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.OfferExecution[]";
components: readonly [{
name: "offer";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanOffer";
components: readonly [{
name: "offerId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "capacity";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "maxSeniorRepayment";
type: "uint256";
internalType: "uint256";
}, {
name: "validators";
type: "tuple[]";
internalType: "struct IBaseLoan.OfferValidator[]";
components: readonly [{
name: "validator";
type: "address";
internalType: "address";
}, {
name: "arguments";
type: "bytes";
internalType: "bytes";
}];
}];
}, {
name: "amount";
type: "uint256";
internalType: "uint256";
}, {
name: "lenderOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "principalReceiver";
type: "address";
internalType: "address";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "borrowerOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "refinanceFull";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_renegotiationOfferSignature";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "refinancePartial";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "removeWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "repayLoan";
inputs: readonly [{
name: "_repaymentData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanRepaymentData";
components: readonly [{
name: "data";
type: "tuple";
internalType: "struct IMultiSourceLoan.SignableRepaymentData";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}, {
name: "shouldDelegate";
type: "bool";
internalType: "bool";
}];
}, {
name: "loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "borrowerSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "requestTransferOwner";
inputs: readonly [{
name: "_newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "revokeDelegate";
inputs: readonly [{
name: "_delegate";
type: "address";
internalType: "address";
}, {
name: "_collection";
type: "address";
internalType: "address";
}, {
name: "_tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "_rights";
type: "bytes32";
internalType: "bytes32";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setFlashActionContract";
inputs: readonly [{
name: "_newFlashActionContract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setMinLockPeriod";
inputs: readonly [{
name: "__minLockPeriod";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setProtocolFee";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [{
name: "newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateLiquidationAuctionDuration";
inputs: readonly [{
name: "_newDuration";
type: "uint48";
internalType: "uint48";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateLiquidationContract";
inputs: readonly [{
name: "__loanLiquidator";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateMinImprovementApr";
inputs: readonly [{
name: "_newMinimum";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateProtocolFee";
inputs: readonly [{
name: "_newProtocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "event";
name: "Delegated";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "delegate";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "_rights";
type: "bytes32";
indexed: false;
internalType: "bytes32";
}, {
name: "value";
type: "bool";
indexed: false;
internalType: "bool";
}];
anonymous: false;
}, {
type: "event";
name: "FlashActionContractUpdated";
inputs: readonly [{
name: "newFlashActionContract";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "FlashActionExecuted";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "target";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "data";
type: "bytes";
indexed: false;
internalType: "bytes";
}];
anonymous: false;
}, {
type: "event";
name: "LiquidationAuctionDurationUpdated";
inputs: readonly [{
name: "newDuration";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LiquidationContractUpdated";
inputs: readonly [{
name: "liquidator";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "LoanEmitted";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "offerId";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanForeclosed";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanLiquidated";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRefinanced";
inputs: readonly [{
name: "renegotiationId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "oldLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "newLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRefinancedFromNewOffers";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "newLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "offerIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}, {
name: "totalFee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRepaid";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "totalRepayment";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanSentToLiquidator";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "liquidator";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "MinAprImprovementUpdated";
inputs: readonly [{
name: "_minimum";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "MinBidLiquidationUpdated";
inputs: readonly [{
name: "newMinBid";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "MinLockPeriodUpdated";
inputs: readonly [{
name: "minLockPeriod";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "OfferCancelled";
inputs: readonly [{
name: "lender";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "offerId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "OwnershipTransferred";
inputs: readonly [{
name: "user";
type: "address";
indexed: true;
internalType: "address";
}, {
name: "newOwner";
type: "address";
indexed: true;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeePendingUpdate";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeeUpdated";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "RenegotiationOfferCancelled";
inputs: readonly [{
name: "lender";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "renegotiationId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "RevokeDelegate";
inputs: readonly [{
name: "delegate";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "collection";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "_rights";
type: "bytes32";
indexed: false;
internalType: "bytes32";
}];
anonymous: false;
}, {
type: "event";
name: "TransferOwnerRequested";
inputs: readonly [{
name: "newOwner";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "WhitelistedCallbackContractAdded";
inputs: readonly [{
name: "contractAdded";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "WhitelistedCallbackContractRemoved";
inputs: readonly [{
name: "contractRemoved";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "error";
name: "AddressZeroError";
inputs: readonly [];
}, {
type: "error";
name: "CancelledOrExecutedOfferError";
inputs: readonly [{
name: "_lender";
type: "address";
internalType: "address";
}, {
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "CollectionNotWhitelistedError";
inputs: readonly [];
}, {
type: "error";
name: "CurrencyNotWhitelistedError";
inputs: readonly [];
}, {
type: "error";
name: "ECDSAInvalidSignature";
inputs: readonly [];
}, {
type: "error";
name: "ECDSAInvalidSignatureLength";
inputs: readonly [{
name: "length";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "ECDSAInvalidSignatureS";
inputs: readonly [{
name: "s";
type: "bytes32";
internalType: "bytes32";
}];
}, {
type: "error";
name: "ExpiredOfferError";
inputs: readonly [{
name: "_expirationTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidAddressesError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidAmountError";
inputs: readonly [{
name: "_amount";
type: "uint256";
internalType: "uint256";
}, {
name: "_principalAmount";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidCallbackError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCallerError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCollateralError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCollateralIdError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidDurationError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidInputError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidLoanError";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidMethodError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidParametersError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidRenegotiationOfferError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidSignatureError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidTrancheError";
inputs: readonly [];
}, {
type: "error";
name: "LiquidatorOnlyError";
inputs: readonly [{
name: "_liquidator";
type: "address";
internalType: "address";
}];
}, {
type: "error";
name: "LoanExpiredError";
inputs: readonly [];
}, {
type: "error";
name: "LoanLockedError";
inputs: readonly [];
}, {
type: "error";
name: "LoanNotDueError";
inputs: readonly [{
name: "_expirationTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "MaxCapacityExceededError";
inputs: readonly [];
}, {
type: "error";
name: "MismatchError";
inputs: readonly [];
}, {
type: "error";
name: "MulticallFailed";
inputs: readonly [{
name: "i";
type: "uint256";
internalType: "uint256";
}, {
name: "returndata";
type: "bytes";
internalType: "bytes";
}];
}, {
type: "error";
name: "NFTNotReturnedError";
inputs: readonly [];
}, {
type: "error";
name: "NotStrictlyImprovedError";
inputs: readonly [];
}, {
type: "error";
name: "TooEarlyError";
inputs: readonly [{
name: "_pendingProtocolFeeSetTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "TooManyTranchesError";
inputs: readonly [];
}, {
type: "error";
name: "TooSoonError";
inputs: readonly [];
}, {
type: "error";
name: "TrancheCannotBeRefinancedError";
inputs: readonly [{
name: "minTimestamp";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "ZeroInterestError";
inputs: readonly [];
}], {} | {}>
safeContractWrite
safeContractWrite: {
transferOwnership: ((args, options?) => Promise<`0x${string}`>);
liquidateLoan: ((args, options?) => Promise<`0x${string}`>);
onERC721Received: ((args, options?) => Promise<`0x${string}`>);
addWhitelistedCallbackContract: ((args, options?) => Promise<`0x${string}`>);
cancelAllOffers: ((args, options?) => Promise<`0x${string}`>);
cancelOffer: ((args, options?) => Promise<`0x${string}`>);
cancelRenegotiationOffer: ((args, options?) => Promise<`0x${string}`>);
loanLiquidated: ((args, options?) => Promise<`0x${string}`>);
removeWhitelistedCallbackContract: ((args, options?) => Promise<`0x${string}`>);
setProtocolFee: ((args, options?) => Promise<`0x${string}`>);
updateLiquidationAuctionDuration: ((args, options?) => Promise<`0x${string}`>);
updateLiquidationContract: ((args, options?) => Promise<`0x${string}`>);
updateProtocolFee: ((args, options?) => Promise<`0x${string}`>);
emitLoan: ((args, options?) => Promise<`0x${string}`>);
refinanceFull: ((args, options?) => Promise<`0x${string}`>);
refinancePartial: ((args, options?) => Promise<`0x${string}`>);
repayLoan: ((args, options?) => Promise<`0x${string}`>);
multicall: ((args, options?) => Promise<`0x${string}`>);
delegate: ((args, options?) => Promise<`0x${string}`>);
revokeDelegate: ((args, options?) => Promise<`0x${string}`>);
executeFlashAction: ((args, options?) => Promise<`0x${string}`>);
setFlashActionContract: ((args, options?) => Promise<`0x${string}`>);
setMinLockPeriod: ((args, options?) => Promise<`0x${string}`>);
requestTransferOwner: ((args, options?) => Promise<`0x${string}`>);
updateMinImprovementApr: ((args, options?) => Promise<`0x${string}`>);
addNewTranche: ((args, options?) => Promise<`0x${string}`>);
refinanceFromLoanExecutionData: ((args, options?) => Promise<`0x${string}`>);
}
Type declaration
-
transferOwnership: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: undefined | readonly [] | readonly [`0x${string}`]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
liquidateLoan: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: Object
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
onERC721Received: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [`0x${string}`, `0x${string}`, bigint, `0x${string}`]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
addWhitelistedCallbackContract: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [`0x${string}`]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
cancelAllOffers: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [bigint]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
cancelOffer: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [bigint]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
cancelRenegotiationOffer: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [bigint]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
loanLiquidated: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: Object
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
removeWhitelistedCallbackContract: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [`0x${string}`]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
setProtocolFee: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: undefined | readonly []
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
updateLiquidationAuctionDuration: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [number]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
updateLiquidationContract: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [`0x${string}`]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
updateProtocolFee: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: Object
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
emitLoan: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: Object
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
refinanceFull: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: Object
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
refinancePartial: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: Object
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
repayLoan: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: Object
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
multicall: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [readonly `0x${string}`[]] | readonly [readonly `0x${string}`[]] & readonly [readonly `0x${string}`[]] | readonly [readonly `0x${string}`[]] & readonly [readonly `0x${string}`[]]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
delegate: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: Object
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
revokeDelegate: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [`0x${string}`, `0x${string}`, bigint, `0x${string}`]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
executeFlashAction: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: Object
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
setFlashActionContract: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [`0x${string}`]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
setMinLockPeriod: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [bigint]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
requestTransferOwner: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [`0x${string}`]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
updateMinImprovementApr: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [bigint]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
addNewTranche: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: Object
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
refinanceFromLoanExecutionData: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: Object
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
parseEventLogs
parseEventLogs: (<TFunctionName>(eventName, logs) => ParseEventLogsReturnType<readonly [{
inputs: readonly [{
internalType: "address";
name: "loanLiquidator";
type: "address";
}, {
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "protocolFee";
type: "tuple";
}, {
internalType: "address";
name: "currencyManager";
type: "address";
}, {
internalType: "address";
name: "collectionManager";
type: "address";
}, {
internalType: "uint256";
name: "maxTranches";
type: "uint256";
}, {
internalType: "uint256";
name: "minLockPeriod";
type: "uint256";
}, {
internalType: "address";
name: "delegateRegistry";
type: "address";
}, {
internalType: "address";
name: "loanManagerRegistry";
type: "address";
}, {
internalType: "address";
name: "flashActionContract";
type: "address";
}, {
internalType: "uint256";
name: "minWaitTime";
type: "uint256";
}];
stateMutability: "nonpayable";
type: "constructor";
}, {
inputs: readonly [];
name: "DOMAIN_SEPARATOR";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "FEE_UPDATE_NOTICE";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "INITIAL_DOMAIN_SEPARATOR";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MAX_AUCTION_DURATION";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_AUCTION_DURATION";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_BID_LIQUIDATION";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_WAIT_TIME";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "VERSION";
outputs: readonly [{
internalType: "bytes";
name: "";
type: "bytes";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "bytes";
name: "_renegotiationOfferSignature";
type: "bytes";
}];
name: "addNewTranche";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "addWhitelistedCallbackContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "cancelAllOffers";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "cancelOffer";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_renegotiationId";
type: "uint256";
}];
name: "cancelRenegotiationOffer";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
internalType: "address";
name: "_delegate";
type: "address";
}, {
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}, {
internalType: "bool";
name: "_value";
type: "bool";
}];
name: "delegate";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "offerId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256";
name: "capacity";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "maxSeniorRepayment";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "validator";
type: "address";
}, {
internalType: "bytes";
name: "arguments";
type: "bytes";
}];
internalType: "struct IBaseLoan.OfferValidator[]";
name: "validators";
type: "tuple[]";
}];
internalType: "struct IMultiSourceLoan.LoanOffer";
name: "offer";
type: "tuple";
}, {
internalType: "uint256";
name: "amount";
type: "uint256";
}, {
internalType: "bytes";
name: "lenderOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.OfferExecution[]";
name: "offerExecution";
type: "tuple[]";
}, {
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "address";
name: "principalReceiver";
type: "address";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.ExecutionData";
name: "executionData";
type: "tuple";
}, {
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "bytes";
name: "borrowerOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanExecutionData";
name: "_loanExecutionData";
type: "tuple";
}];
name: "emitLoan";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "address";
name: "_target";
type: "address";
}, {
internalType: "bytes";
name: "_data";
type: "bytes";
}];
name: "executeFlashAction";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "getCollectionManager";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getCurrencyManager";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getDelegateRegistry";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getFlashActionContract";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLiquidationAuctionDuration";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLiquidator";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}];
name: "getLoanHash";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLoanManagerRegistry";
outputs: readonly [{
internalType: "contract ILoanManagerRegistry";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMaxTranches";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMinImprovementApr";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMinLockPeriod";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getPendingProtocolFee";
outputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "";
type: "tuple";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getPendingProtocolFeeSetTime";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getProtocolFee";
outputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "";
type: "tuple";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getTotalLoansIssued";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "getUsedCapacity";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}, {
internalType: "uint256";
name: "offerId";
type: "uint256";
}];
name: "isOfferCancelled";
outputs: readonly [{
internalType: "bool";
name: "notActive";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}, {
internalType: "uint256";
name: "renegotiationIf";
type: "uint256";
}];
name: "isRenegotiationOfferCancelled";
outputs: readonly [{
internalType: "bool";
name: "notActive";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "isWhitelistedCallbackContract";
outputs: readonly [{
internalType: "bool";
name: "";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "liquidateLoan";
outputs: readonly [{
internalType: "bytes";
name: "";
type: "bytes";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "loanLiquidated";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}];
name: "minOfferId";
outputs: readonly [{
internalType: "uint256";
name: "minOfferId";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "bytes[]";
name: "data";
type: "bytes[]";
}];
name: "multicall";
outputs: readonly [{
internalType: "bytes[]";
name: "results";
type: "bytes[]";
}];
stateMutability: "payable";
type: "function";
}, {
inputs: readonly [];
name: "name";
outputs: readonly [{
internalType: "string";
name: "";
type: "string";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "";
type: "address";
}, {
internalType: "address";
name: "";
type: "address";
}, {
internalType: "uint256";
name: "";
type: "uint256";
}, {
internalType: "bytes";
name: "";
type: "bytes";
}];
name: "onERC721Received";
outputs: readonly [{
internalType: "bytes4";
name: "";
type: "bytes4";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "owner";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "pendingOwner";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "pendingOwnerTime";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
components: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "offerId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256";
name: "capacity";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "maxSeniorRepayment";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "validator";
type: "address";
}, {
internalType: "bytes";
name: "arguments";
type: "bytes";
}];
internalType: "struct IBaseLoan.OfferValidator[]";
name: "validators";
type: "tuple[]";
}];
internalType: "struct IMultiSourceLoan.LoanOffer";
name: "offer";
type: "tuple";
}, {
internalType: "uint256";
name: "amount";
type: "uint256";
}, {
internalType: "bytes";
name: "lenderOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.OfferExecution[]";
name: "offerExecution";
type: "tuple[]";
}, {
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "address";
name: "principalReceiver";
type: "address";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.ExecutionData";
name: "executionData";
type: "tuple";
}, {
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "bytes";
name: "borrowerOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanExecutionData";
name: "_loanExecutionData";
type: "tuple";
}];
name: "refinanceFromLoanExecutionData";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "bytes";
name: "_renegotiationOfferSignature";
type: "bytes";
}];
name: "refinanceFull";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "refinancePartial";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "removeWhitelistedCallbackContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}, {
internalType: "bool";
name: "shouldDelegate";
type: "bool";
}];
internalType: "struct IMultiSourceLoan.SignableRepaymentData";
name: "data";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
internalType: "bytes";
name: "borrowerSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanRepaymentData";
name: "_repaymentData";
type: "tuple";
}];
name: "repayLoan";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_newOwner";
type: "address";
}];
name: "requestTransferOwner";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_delegate";
type: "address";
}, {
internalType: "address";
name: "_collection";
type: "address";
}, {
internalType: "uint256";
name: "_tokenId";
type: "uint256";
}, {
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}];
name: "revokeDelegate";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_newFlashActionContract";
type: "address";
}];
name: "setFlashActionContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "__minLockPeriod";
type: "uint256";
}];
name: "setMinLockPeriod";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "setProtocolFee";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "transferOwnership";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "transferOwnership";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint48";
name: "_newDuration";
type: "uint48";
}];
name: "updateLiquidationAuctionDuration";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "__loanLiquidator";
type: "address";
}];
name: "updateLiquidationContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_newMinimum";
type: "uint256";
}];
name: "updateMinImprovementApr";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "_newProtocolFee";
type: "tuple";
}];
name: "updateProtocolFee";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "minOfferId";
type: "uint256";
}];
name: "AllOffersCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "delegate";
type: "address";
}, {
indexed: false;
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}, {
indexed: false;
internalType: "bool";
name: "value";
type: "bool";
}];
name: "Delegated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "newFlashActionContract";
type: "address";
}];
name: "FlashActionContractUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "target";
type: "address";
}, {
indexed: false;
internalType: "bytes";
name: "data";
type: "bytes";
}];
name: "FlashActionExecuted";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "newDuration";
type: "uint256";
}];
name: "LiquidationAuctionDurationUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "liquidator";
type: "address";
}];
name: "LiquidationContractUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256[]";
name: "offerId";
type: "uint256[]";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanEmitted";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}];
name: "LoanForeclosed";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}];
name: "LoanLiquidated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "oldLoanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "newLoanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanRefinanced";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "newLoanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256[]";
name: "offerIds";
type: "uint256[]";
}, {
indexed: false;
internalType: "uint256";
name: "totalFee";
type: "uint256";
}];
name: "LoanRefinancedFromNewOffers";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "totalRepayment";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanRepaid";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "liquidator";
type: "address";
}];
name: "LoanSentToLiquidator";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "_minimum";
type: "uint256";
}];
name: "MinAprImprovementUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "newMinBid";
type: "uint256";
}];
name: "MinBidLiquidationUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "minLockPeriod";
type: "uint256";
}];
name: "MinLockPeriodUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "offerId";
type: "uint256";
}];
name: "OfferCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: true;
internalType: "address";
name: "user";
type: "address";
}, {
indexed: true;
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "OwnershipTransferred";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
name: "fee";
type: "tuple";
}];
name: "ProtocolFeePendingUpdate";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
name: "fee";
type: "tuple";
}];
name: "ProtocolFeeUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}];
name: "RenegotiationOfferCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "delegate";
type: "address";
}, {
indexed: false;
internalType: "address";
name: "collection";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
indexed: false;
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}];
name: "RevokeDelegate";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "TransferOwnerRequested";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "contractAdded";
type: "address";
}];
name: "WhitelistedCallbackContractAdded";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "contractRemoved";
type: "address";
}];
name: "WhitelistedCallbackContractRemoved";
type: "event";
}, {
inputs: readonly [];
name: "AddressZeroError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "CancelledOrExecutedOfferError";
type: "error";
}, {
inputs: readonly [];
name: "CollectionNotWhitelistedError";
type: "error";
}, {
inputs: readonly [];
name: "CurrencyNotWhitelistedError";
type: "error";
}, {
inputs: readonly [];
name: "ECDSAInvalidSignature";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "length";
type: "uint256";
}];
name: "ECDSAInvalidSignatureLength";
type: "error";
}, {
inputs: readonly [{
internalType: "bytes32";
name: "s";
type: "bytes32";
}];
name: "ECDSAInvalidSignatureS";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_expirationTime";
type: "uint256";
}];
name: "ExpiredOfferError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidAddressesError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_amount";
type: "uint256";
}, {
internalType: "uint256";
name: "_principalAmount";
type: "uint256";
}];
name: "InvalidAmountError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCallbackError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCallerError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCollateralIdError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidDurationError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidInputError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}];
name: "InvalidLoanError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidMethodError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidParametersError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidRenegotiationOfferError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidSignatureError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidTrancheError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_liquidator";
type: "address";
}];
name: "LiquidatorOnlyError";
type: "error";
}, {
inputs: readonly [];
name: "LoanExpiredError";
type: "error";
}, {
inputs: readonly [];
name: "LoanLockedError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_expirationTime";
type: "uint256";
}];
name: "LoanNotDueError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_newMinOfferId";
type: "uint256";
}, {
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "LowOfferIdError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_newMinRenegotiationOfferId";
type: "uint256";
}, {
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "LowRenegotiationOfferIdError";
type: "error";
}, {
inputs: readonly [];
name: "MaxCapacityExceededError";
type: "error";
}, {
inputs: readonly [];
name: "MismatchError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "i";
type: "uint256";
}, {
internalType: "bytes";
name: "returndata";
type: "bytes";
}];
name: "MulticallFailed";
type: "error";
}, {
inputs: readonly [];
name: "NFTNotReturnedError";
type: "error";
}, {
inputs: readonly [];
name: "NotStrictlyImprovedError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_pendingProtocolFeeSetTime";
type: "uint256";
}];
name: "TooEarlyError";
type: "error";
}, {
inputs: readonly [];
name: "TooManyTranchesError";
type: "error";
}, {
inputs: readonly [];
name: "TooSoonError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "minTimestamp";
type: "uint256";
}];
name: "TrancheCannotBeRefinancedError";
type: "error";
}, {
inputs: readonly [];
name: "ZeroInterestError";
type: "error";
}] | readonly [{
type: "constructor";
inputs: readonly [{
name: "loanLiquidator";
type: "address";
internalType: "address";
}, {
name: "protocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "currencyManager";
type: "address";
internalType: "address";
}, {
name: "collectionManager";
type: "address";
internalType: "address";
}, {
name: "maxTranches";
type: "uint256";
internalType: "uint256";
}, {
name: "minLockPeriod";
type: "uint256";
internalType: "uint256";
}, {
name: "delegateRegistry";
type: "address";
internalType: "address";
}, {
name: "loanManagerRegistry";
type: "address";
internalType: "address";
}, {
name: "flashActionContract";
type: "address";
internalType: "address";
}, {
name: "minWaitTime";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "DOMAIN_SEPARATOR";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "FEE_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "INITIAL_DOMAIN_SEPARATOR";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "MAX_AUCTION_DURATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_AUCTION_DURATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_BID_LIQUIDATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_WAIT_TIME";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "VERSION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes";
internalType: "bytes";
}];
stateMutability: "view";
}, {
type: "function";
name: "addNewTranche";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_renegotiationOfferSignature";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "addWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "cancelOffer";
inputs: readonly [{
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "cancelRenegotiationOffer";
inputs: readonly [{
name: "_renegotiationId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "delegate";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_delegate";
type: "address";
internalType: "address";
}, {
name: "_rights";
type: "bytes32";
internalType: "bytes32";
}, {
name: "_value";
type: "bool";
internalType: "bool";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "emitLoan";
inputs: readonly [{
name: "_loanExecutionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanExecutionData";
components: readonly [{
name: "executionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.ExecutionData";
components: readonly [{
name: "offerExecution";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.OfferExecution[]";
components: readonly [{
name: "offer";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanOffer";
components: readonly [{
name: "offerId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "capacity";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "maxSeniorRepayment";
type: "uint256";
internalType: "uint256";
}, {
name: "validators";
type: "tuple[]";
internalType: "struct IBaseLoan.OfferValidator[]";
components: readonly [{
name: "validator";
type: "address";
internalType: "address";
}, {
name: "arguments";
type: "bytes";
internalType: "bytes";
}];
}];
}, {
name: "amount";
type: "uint256";
internalType: "uint256";
}, {
name: "lenderOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "principalReceiver";
type: "address";
internalType: "address";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "borrowerOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "executeFlashAction";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_target";
type: "address";
internalType: "address";
}, {
name: "_data";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "getCollectionManager";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getCurrencyManager";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getDelegateRegistry";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getFlashActionContract";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLiquidationAuctionDuration";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLiquidator";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLoanHash";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLoanManagerRegistry";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "contract ILoanManagerRegistry";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMaxTranches";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMinImprovementApr";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMinLockPeriod";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFeeSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getTotalLoansIssued";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getUsedCapacity";
inputs: readonly [{
name: "_lender";
type: "address";
internalType: "address";
}, {
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "isOfferCancelled";
inputs: readonly [{
name: "user";
type: "address";
internalType: "address";
}, {
name: "offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "notActive";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "isRenegotiationOfferCancelled";
inputs: readonly [{
name: "user";
type: "address";
internalType: "address";
}, {
name: "renegotiationIf";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "notActive";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "isWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [{
name: "";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "liquidateLoan";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [{
name: "";
type: "bytes";
internalType: "bytes";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "loanLiquidated";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "multicall";
inputs: readonly [{
name: "data";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [{
name: "results";
type: "bytes[]";
internalType: "bytes[]";
}];
stateMutability: "payable";
}, {
type: "function";
name: "name";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "string";
internalType: "string";
}];
stateMutability: "view";
}, {
type: "function";
name: "onERC721Received";
inputs: readonly [{
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "owner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwnerTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "refinanceFromLoanExecutionData";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loanExecutionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanExecutionData";
components: readonly [{
name: "executionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.ExecutionData";
components: readonly [{
name: "offerExecution";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.OfferExecution[]";
components: readonly [{
name: "offer";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanOffer";
components: readonly [{
name: "offerId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "capacity";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "maxSeniorRepayment";
type: "uint256";
internalType: "uint256";
}, {
name: "validators";
type: "tuple[]";
internalType: "struct IBaseLoan.OfferValidator[]";
components: readonly [{
name: "validator";
type: "address";
internalType: "address";
}, {
name: "arguments";
type: "bytes";
internalType: "bytes";
}];
}];
}, {
name: "amount";
type: "uint256";
internalType: "uint256";
}, {
name: "lenderOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "principalReceiver";
type: "address";
internalType: "address";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "borrowerOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "refinanceFull";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_renegotiationOfferSignature";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "refinancePartial";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "removeWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "repayLoan";
inputs: readonly [{
name: "_repaymentData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanRepaymentData";
components: readonly [{
name: "data";
type: "tuple";
internalType: "struct IMultiSourceLoan.SignableRepaymentData";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}, {
name: "shouldDelegate";
type: "bool";
internalType: "bool";
}];
}, {
name: "loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "borrowerSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "requestTransferOwner";
inputs: readonly [{
name: "_newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "revokeDelegate";
inputs: readonly [{
name: "_delegate";
type: "address";
internalType: "address";
}, {
name: "_collection";
type: "address";
internalType: "address";
}, {
name: "_tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "_rights";
type: "bytes32";
internalType: "bytes32";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setFlashActionContract";
inputs: readonly [{
name: "_newFlashActionContract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setMinLockPeriod";
inputs: readonly [{
name: "__minLockPeriod";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setProtocolFee";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [{
name: "newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateLiquidationAuctionDuration";
inputs: readonly [{
name: "_newDuration";
type: "uint48";
internalType: "uint48";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateLiquidationContract";
inputs: readonly [{
name: "__loanLiquidator";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateMinImprovementApr";
inputs: readonly [{
name: "_newMinimum";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateProtocolFee";
inputs: readonly [{
name: "_newProtocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "event";
name: "Delegated";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "delegate";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "_rights";
type: "bytes32";
indexed: false;
internalType: "bytes32";
}, {
name: "value";
type: "bool";
indexed: false;
internalType: "bool";
}];
anonymous: false;
}, {
type: "event";
name: "FlashActionContractUpdated";
inputs: readonly [{
name: "newFlashActionContract";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "FlashActionExecuted";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "target";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "data";
type: "bytes";
indexed: false;
internalType: "bytes";
}];
anonymous: false;
}, {
type: "event";
name: "LiquidationAuctionDurationUpdated";
inputs: readonly [{
name: "newDuration";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LiquidationContractUpdated";
inputs: readonly [{
name: "liquidator";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "LoanEmitted";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "offerId";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanForeclosed";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanLiquidated";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRefinanced";
inputs: readonly [{
name: "renegotiationId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "oldLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "newLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRefinancedFromNewOffers";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "newLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "offerIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}, {
name: "totalFee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRepaid";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "totalRepayment";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanSentToLiquidator";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "liquidator";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "MinAprImprovementUpdated";
inputs: readonly [{
name: "_minimum";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "MinBidLiquidationUpdated";
inputs: readonly [{
name: "newMinBid";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "MinLockPeriodUpdated";
inputs: readonly [{
name: "minLockPeriod";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "OfferCancelled";
inputs: readonly [{
name: "lender";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "offerId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "OwnershipTransferred";
inputs: readonly [{
name: "user";
type: "address";
indexed: true;
internalType: "address";
}, {
name: "newOwner";
type: "address";
indexed: true;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeePendingUpdate";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeeUpdated";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "RenegotiationOfferCancelled";
inputs: readonly [{
name: "lender";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "renegotiationId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "RevokeDelegate";
inputs: readonly [{
name: "delegate";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "collection";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "_rights";
type: "bytes32";
indexed: false;
internalType: "bytes32";
}];
anonymous: false;
}, {
type: "event";
name: "TransferOwnerRequested";
inputs: readonly [{
name: "newOwner";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "WhitelistedCallbackContractAdded";
inputs: readonly [{
name: "contractAdded";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "WhitelistedCallbackContractRemoved";
inputs: readonly [{
name: "contractRemoved";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "error";
name: "AddressZeroError";
inputs: readonly [];
}, {
type: "error";
name: "CancelledOrExecutedOfferError";
inputs: readonly [{
name: "_lender";
type: "address";
internalType: "address";
}, {
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "CollectionNotWhitelistedError";
inputs: readonly [];
}, {
type: "error";
name: "CurrencyNotWhitelistedError";
inputs: readonly [];
}, {
type: "error";
name: "ECDSAInvalidSignature";
inputs: readonly [];
}, {
type: "error";
name: "ECDSAInvalidSignatureLength";
inputs: readonly [{
name: "length";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "ECDSAInvalidSignatureS";
inputs: readonly [{
name: "s";
type: "bytes32";
internalType: "bytes32";
}];
}, {
type: "error";
name: "ExpiredOfferError";
inputs: readonly [{
name: "_expirationTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidAddressesError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidAmountError";
inputs: readonly [{
name: "_amount";
type: "uint256";
internalType: "uint256";
}, {
name: "_principalAmount";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidCallbackError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCallerError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCollateralError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCollateralIdError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidDurationError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidInputError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidLoanError";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidMethodError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidParametersError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidRenegotiationOfferError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidSignatureError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidTrancheError";
inputs: readonly [];
}, {
type: "error";
name: "LiquidatorOnlyError";
inputs: readonly [{
name: "_liquidator";
type: "address";
internalType: "address";
}];
}, {
type: "error";
name: "LoanExpiredError";
inputs: readonly [];
}, {
type: "error";
name: "LoanLockedError";
inputs: readonly [];
}, {
type: "error";
name: "LoanNotDueError";
inputs: readonly [{
name: "_expirationTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "MaxCapacityExceededError";
inputs: readonly [];
}, {
type: "error";
name: "MismatchError";
inputs: readonly [];
}, {
type: "error";
name: "MulticallFailed";
inputs: readonly [{
name: "i";
type: "uint256";
internalType: "uint256";
}, {
name: "returndata";
type: "bytes";
internalType: "bytes";
}];
}, {
type: "error";
name: "NFTNotReturnedError";
inputs: readonly [];
}, {
type: "error";
name: "NotStrictlyImprovedError";
inputs: readonly [];
}, {
type: "error";
name: "TooEarlyError";
inputs: readonly [{
name: "_pendingProtocolFeeSetTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "TooManyTranchesError";
inputs: readonly [];
}, {
type: "error";
name: "TooSoonError";
inputs: readonly [];
}, {
type: "error";
name: "TrancheCannotBeRefinancedError";
inputs: readonly [{
name: "minTimestamp";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "ZeroInterestError";
inputs: readonly [];
}], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "AllOffersCancelled" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "RevokeDelegate" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "MinLockPeriodUpdated" | "MinAprImprovementUpdated" | "MinBidLiquidationUpdated" | "TransferOwnerRequested" | "LoanRefinancedFromNewOffers")[]
? TFunctionName[number]
: TFunctionName>)
Type declaration
-
- <TFunctionName>(eventName, logs): ParseEventLogsReturnType<readonly [{
inputs: readonly [{
internalType: "address";
name: "loanLiquidator";
type: "address";
}, {
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "protocolFee";
type: "tuple";
}, {
internalType: "address";
name: "currencyManager";
type: "address";
}, {
internalType: "address";
name: "collectionManager";
type: "address";
}, {
internalType: "uint256";
name: "maxTranches";
type: "uint256";
}, {
internalType: "uint256";
name: "minLockPeriod";
type: "uint256";
}, {
internalType: "address";
name: "delegateRegistry";
type: "address";
}, {
internalType: "address";
name: "loanManagerRegistry";
type: "address";
}, {
internalType: "address";
name: "flashActionContract";
type: "address";
}, {
internalType: "uint256";
name: "minWaitTime";
type: "uint256";
}];
stateMutability: "nonpayable";
type: "constructor";
}, {
inputs: readonly [];
name: "DOMAIN_SEPARATOR";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "FEE_UPDATE_NOTICE";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "INITIAL_DOMAIN_SEPARATOR";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MAX_AUCTION_DURATION";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_AUCTION_DURATION";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_BID_LIQUIDATION";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_WAIT_TIME";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "VERSION";
outputs: readonly [{
internalType: "bytes";
name: "";
type: "bytes";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "bytes";
name: "_renegotiationOfferSignature";
type: "bytes";
}];
name: "addNewTranche";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "addWhitelistedCallbackContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "cancelAllOffers";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "cancelOffer";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_renegotiationId";
type: "uint256";
}];
name: "cancelRenegotiationOffer";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
internalType: "address";
name: "_delegate";
type: "address";
}, {
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}, {
internalType: "bool";
name: "_value";
type: "bool";
}];
name: "delegate";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "offerId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256";
name: "capacity";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "maxSeniorRepayment";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "validator";
type: "address";
}, {
internalType: "bytes";
name: "arguments";
type: "bytes";
}];
internalType: "struct IBaseLoan.OfferValidator[]";
name: "validators";
type: "tuple[]";
}];
internalType: "struct IMultiSourceLoan.LoanOffer";
name: "offer";
type: "tuple";
}, {
internalType: "uint256";
name: "amount";
type: "uint256";
}, {
internalType: "bytes";
name: "lenderOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.OfferExecution[]";
name: "offerExecution";
type: "tuple[]";
}, {
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "address";
name: "principalReceiver";
type: "address";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.ExecutionData";
name: "executionData";
type: "tuple";
}, {
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "bytes";
name: "borrowerOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanExecutionData";
name: "_loanExecutionData";
type: "tuple";
}];
name: "emitLoan";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "address";
name: "_target";
type: "address";
}, {
internalType: "bytes";
name: "_data";
type: "bytes";
}];
name: "executeFlashAction";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "getCollectionManager";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getCurrencyManager";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getDelegateRegistry";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getFlashActionContract";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLiquidationAuctionDuration";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLiquidator";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}];
name: "getLoanHash";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLoanManagerRegistry";
outputs: readonly [{
internalType: "contract ILoanManagerRegistry";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMaxTranches";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMinImprovementApr";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMinLockPeriod";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getPendingProtocolFee";
outputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "";
type: "tuple";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getPendingProtocolFeeSetTime";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getProtocolFee";
outputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "";
type: "tuple";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getTotalLoansIssued";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "getUsedCapacity";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}, {
internalType: "uint256";
name: "offerId";
type: "uint256";
}];
name: "isOfferCancelled";
outputs: readonly [{
internalType: "bool";
name: "notActive";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}, {
internalType: "uint256";
name: "renegotiationIf";
type: "uint256";
}];
name: "isRenegotiationOfferCancelled";
outputs: readonly [{
internalType: "bool";
name: "notActive";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "isWhitelistedCallbackContract";
outputs: readonly [{
internalType: "bool";
name: "";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "liquidateLoan";
outputs: readonly [{
internalType: "bytes";
name: "";
type: "bytes";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "loanLiquidated";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}];
name: "minOfferId";
outputs: readonly [{
internalType: "uint256";
name: "minOfferId";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "bytes[]";
name: "data";
type: "bytes[]";
}];
name: "multicall";
outputs: readonly [{
internalType: "bytes[]";
name: "results";
type: "bytes[]";
}];
stateMutability: "payable";
type: "function";
}, {
inputs: readonly [];
name: "name";
outputs: readonly [{
internalType: "string";
name: "";
type: "string";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "";
type: "address";
}, {
internalType: "address";
name: "";
type: "address";
}, {
internalType: "uint256";
name: "";
type: "uint256";
}, {
internalType: "bytes";
name: "";
type: "bytes";
}];
name: "onERC721Received";
outputs: readonly [{
internalType: "bytes4";
name: "";
type: "bytes4";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "owner";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "pendingOwner";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "pendingOwnerTime";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
components: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "offerId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256";
name: "capacity";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "maxSeniorRepayment";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "validator";
type: "address";
}, {
internalType: "bytes";
name: "arguments";
type: "bytes";
}];
internalType: "struct IBaseLoan.OfferValidator[]";
name: "validators";
type: "tuple[]";
}];
internalType: "struct IMultiSourceLoan.LoanOffer";
name: "offer";
type: "tuple";
}, {
internalType: "uint256";
name: "amount";
type: "uint256";
}, {
internalType: "bytes";
name: "lenderOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.OfferExecution[]";
name: "offerExecution";
type: "tuple[]";
}, {
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "address";
name: "principalReceiver";
type: "address";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.ExecutionData";
name: "executionData";
type: "tuple";
}, {
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "bytes";
name: "borrowerOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanExecutionData";
name: "_loanExecutionData";
type: "tuple";
}];
name: "refinanceFromLoanExecutionData";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "bytes";
name: "_renegotiationOfferSignature";
type: "bytes";
}];
name: "refinanceFull";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "refinancePartial";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "removeWhitelistedCallbackContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}, {
internalType: "bool";
name: "shouldDelegate";
type: "bool";
}];
internalType: "struct IMultiSourceLoan.SignableRepaymentData";
name: "data";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
internalType: "bytes";
name: "borrowerSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanRepaymentData";
name: "_repaymentData";
type: "tuple";
}];
name: "repayLoan";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_newOwner";
type: "address";
}];
name: "requestTransferOwner";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_delegate";
type: "address";
}, {
internalType: "address";
name: "_collection";
type: "address";
}, {
internalType: "uint256";
name: "_tokenId";
type: "uint256";
}, {
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}];
name: "revokeDelegate";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_newFlashActionContract";
type: "address";
}];
name: "setFlashActionContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "__minLockPeriod";
type: "uint256";
}];
name: "setMinLockPeriod";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "setProtocolFee";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "transferOwnership";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "transferOwnership";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint48";
name: "_newDuration";
type: "uint48";
}];
name: "updateLiquidationAuctionDuration";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "__loanLiquidator";
type: "address";
}];
name: "updateLiquidationContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_newMinimum";
type: "uint256";
}];
name: "updateMinImprovementApr";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "_newProtocolFee";
type: "tuple";
}];
name: "updateProtocolFee";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "minOfferId";
type: "uint256";
}];
name: "AllOffersCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "delegate";
type: "address";
}, {
indexed: false;
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}, {
indexed: false;
internalType: "bool";
name: "value";
type: "bool";
}];
name: "Delegated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "newFlashActionContract";
type: "address";
}];
name: "FlashActionContractUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "target";
type: "address";
}, {
indexed: false;
internalType: "bytes";
name: "data";
type: "bytes";
}];
name: "FlashActionExecuted";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "newDuration";
type: "uint256";
}];
name: "LiquidationAuctionDurationUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "liquidator";
type: "address";
}];
name: "LiquidationContractUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256[]";
name: "offerId";
type: "uint256[]";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanEmitted";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}];
name: "LoanForeclosed";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}];
name: "LoanLiquidated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "oldLoanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "newLoanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanRefinanced";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "newLoanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256[]";
name: "offerIds";
type: "uint256[]";
}, {
indexed: false;
internalType: "uint256";
name: "totalFee";
type: "uint256";
}];
name: "LoanRefinancedFromNewOffers";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "totalRepayment";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanRepaid";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "liquidator";
type: "address";
}];
name: "LoanSentToLiquidator";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "_minimum";
type: "uint256";
}];
name: "MinAprImprovementUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "newMinBid";
type: "uint256";
}];
name: "MinBidLiquidationUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "minLockPeriod";
type: "uint256";
}];
name: "MinLockPeriodUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "offerId";
type: "uint256";
}];
name: "OfferCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: true;
internalType: "address";
name: "user";
type: "address";
}, {
indexed: true;
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "OwnershipTransferred";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
name: "fee";
type: "tuple";
}];
name: "ProtocolFeePendingUpdate";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
name: "fee";
type: "tuple";
}];
name: "ProtocolFeeUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}];
name: "RenegotiationOfferCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "delegate";
type: "address";
}, {
indexed: false;
internalType: "address";
name: "collection";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
indexed: false;
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}];
name: "RevokeDelegate";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "TransferOwnerRequested";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "contractAdded";
type: "address";
}];
name: "WhitelistedCallbackContractAdded";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "contractRemoved";
type: "address";
}];
name: "WhitelistedCallbackContractRemoved";
type: "event";
}, {
inputs: readonly [];
name: "AddressZeroError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "CancelledOrExecutedOfferError";
type: "error";
}, {
inputs: readonly [];
name: "CollectionNotWhitelistedError";
type: "error";
}, {
inputs: readonly [];
name: "CurrencyNotWhitelistedError";
type: "error";
}, {
inputs: readonly [];
name: "ECDSAInvalidSignature";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "length";
type: "uint256";
}];
name: "ECDSAInvalidSignatureLength";
type: "error";
}, {
inputs: readonly [{
internalType: "bytes32";
name: "s";
type: "bytes32";
}];
name: "ECDSAInvalidSignatureS";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_expirationTime";
type: "uint256";
}];
name: "ExpiredOfferError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidAddressesError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_amount";
type: "uint256";
}, {
internalType: "uint256";
name: "_principalAmount";
type: "uint256";
}];
name: "InvalidAmountError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCallbackError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCallerError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCollateralIdError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidDurationError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidInputError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}];
name: "InvalidLoanError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidMethodError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidParametersError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidRenegotiationOfferError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidSignatureError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidTrancheError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_liquidator";
type: "address";
}];
name: "LiquidatorOnlyError";
type: "error";
}, {
inputs: readonly [];
name: "LoanExpiredError";
type: "error";
}, {
inputs: readonly [];
name: "LoanLockedError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_expirationTime";
type: "uint256";
}];
name: "LoanNotDueError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_newMinOfferId";
type: "uint256";
}, {
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "LowOfferIdError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_newMinRenegotiationOfferId";
type: "uint256";
}, {
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "LowRenegotiationOfferIdError";
type: "error";
}, {
inputs: readonly [];
name: "MaxCapacityExceededError";
type: "error";
}, {
inputs: readonly [];
name: "MismatchError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "i";
type: "uint256";
}, {
internalType: "bytes";
name: "returndata";
type: "bytes";
}];
name: "MulticallFailed";
type: "error";
}, {
inputs: readonly [];
name: "NFTNotReturnedError";
type: "error";
}, {
inputs: readonly [];
name: "NotStrictlyImprovedError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_pendingProtocolFeeSetTime";
type: "uint256";
}];
name: "TooEarlyError";
type: "error";
}, {
inputs: readonly [];
name: "TooManyTranchesError";
type: "error";
}, {
inputs: readonly [];
name: "TooSoonError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "minTimestamp";
type: "uint256";
}];
name: "TrancheCannotBeRefinancedError";
type: "error";
}, {
inputs: readonly [];
name: "ZeroInterestError";
type: "error";
}] | readonly [{
type: "constructor";
inputs: readonly [{
name: "loanLiquidator";
type: "address";
internalType: "address";
}, {
name: "protocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "currencyManager";
type: "address";
internalType: "address";
}, {
name: "collectionManager";
type: "address";
internalType: "address";
}, {
name: "maxTranches";
type: "uint256";
internalType: "uint256";
}, {
name: "minLockPeriod";
type: "uint256";
internalType: "uint256";
}, {
name: "delegateRegistry";
type: "address";
internalType: "address";
}, {
name: "loanManagerRegistry";
type: "address";
internalType: "address";
}, {
name: "flashActionContract";
type: "address";
internalType: "address";
}, {
name: "minWaitTime";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "DOMAIN_SEPARATOR";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "FEE_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "INITIAL_DOMAIN_SEPARATOR";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "MAX_AUCTION_DURATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_AUCTION_DURATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_BID_LIQUIDATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_WAIT_TIME";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "VERSION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes";
internalType: "bytes";
}];
stateMutability: "view";
}, {
type: "function";
name: "addNewTranche";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_renegotiationOfferSignature";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "addWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "cancelOffer";
inputs: readonly [{
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "cancelRenegotiationOffer";
inputs: readonly [{
name: "_renegotiationId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "delegate";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_delegate";
type: "address";
internalType: "address";
}, {
name: "_rights";
type: "bytes32";
internalType: "bytes32";
}, {
name: "_value";
type: "bool";
internalType: "bool";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "emitLoan";
inputs: readonly [{
name: "_loanExecutionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanExecutionData";
components: readonly [{
name: "executionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.ExecutionData";
components: readonly [{
name: "offerExecution";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.OfferExecution[]";
components: readonly [{
name: "offer";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanOffer";
components: readonly [{
name: "offerId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "capacity";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "maxSeniorRepayment";
type: "uint256";
internalType: "uint256";
}, {
name: "validators";
type: "tuple[]";
internalType: "struct IBaseLoan.OfferValidator[]";
components: readonly [{
name: "validator";
type: "address";
internalType: "address";
}, {
name: "arguments";
type: "bytes";
internalType: "bytes";
}];
}];
}, {
name: "amount";
type: "uint256";
internalType: "uint256";
}, {
name: "lenderOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "principalReceiver";
type: "address";
internalType: "address";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "borrowerOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "executeFlashAction";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_target";
type: "address";
internalType: "address";
}, {
name: "_data";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "getCollectionManager";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getCurrencyManager";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getDelegateRegistry";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getFlashActionContract";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLiquidationAuctionDuration";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLiquidator";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLoanHash";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLoanManagerRegistry";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "contract ILoanManagerRegistry";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMaxTranches";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMinImprovementApr";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMinLockPeriod";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFeeSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getTotalLoansIssued";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getUsedCapacity";
inputs: readonly [{
name: "_lender";
type: "address";
internalType: "address";
}, {
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "isOfferCancelled";
inputs: readonly [{
name: "user";
type: "address";
internalType: "address";
}, {
name: "offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "notActive";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "isRenegotiationOfferCancelled";
inputs: readonly [{
name: "user";
type: "address";
internalType: "address";
}, {
name: "renegotiationIf";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "notActive";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "isWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [{
name: "";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "liquidateLoan";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [{
name: "";
type: "bytes";
internalType: "bytes";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "loanLiquidated";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "multicall";
inputs: readonly [{
name: "data";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [{
name: "results";
type: "bytes[]";
internalType: "bytes[]";
}];
stateMutability: "payable";
}, {
type: "function";
name: "name";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "string";
internalType: "string";
}];
stateMutability: "view";
}, {
type: "function";
name: "onERC721Received";
inputs: readonly [{
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "owner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwnerTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "refinanceFromLoanExecutionData";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loanExecutionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanExecutionData";
components: readonly [{
name: "executionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.ExecutionData";
components: readonly [{
name: "offerExecution";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.OfferExecution[]";
components: readonly [{
name: "offer";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanOffer";
components: readonly [{
name: "offerId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "capacity";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "maxSeniorRepayment";
type: "uint256";
internalType: "uint256";
}, {
name: "validators";
type: "tuple[]";
internalType: "struct IBaseLoan.OfferValidator[]";
components: readonly [{
name: "validator";
type: "address";
internalType: "address";
}, {
name: "arguments";
type: "bytes";
internalType: "bytes";
}];
}];
}, {
name: "amount";
type: "uint256";
internalType: "uint256";
}, {
name: "lenderOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "principalReceiver";
type: "address";
internalType: "address";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "borrowerOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "refinanceFull";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_renegotiationOfferSignature";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "refinancePartial";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "removeWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "repayLoan";
inputs: readonly [{
name: "_repaymentData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanRepaymentData";
components: readonly [{
name: "data";
type: "tuple";
internalType: "struct IMultiSourceLoan.SignableRepaymentData";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}, {
name: "shouldDelegate";
type: "bool";
internalType: "bool";
}];
}, {
name: "loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "borrowerSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "requestTransferOwner";
inputs: readonly [{
name: "_newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "revokeDelegate";
inputs: readonly [{
name: "_delegate";
type: "address";
internalType: "address";
}, {
name: "_collection";
type: "address";
internalType: "address";
}, {
name: "_tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "_rights";
type: "bytes32";
internalType: "bytes32";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setFlashActionContract";
inputs: readonly [{
name: "_newFlashActionContract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setMinLockPeriod";
inputs: readonly [{
name: "__minLockPeriod";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setProtocolFee";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [{
name: "newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateLiquidationAuctionDuration";
inputs: readonly [{
name: "_newDuration";
type: "uint48";
internalType: "uint48";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateLiquidationContract";
inputs: readonly [{
name: "__loanLiquidator";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateMinImprovementApr";
inputs: readonly [{
name: "_newMinimum";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateProtocolFee";
inputs: readonly [{
name: "_newProtocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "event";
name: "Delegated";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "delegate";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "_rights";
type: "bytes32";
indexed: false;
internalType: "bytes32";
}, {
name: "value";
type: "bool";
indexed: false;
internalType: "bool";
}];
anonymous: false;
}, {
type: "event";
name: "FlashActionContractUpdated";
inputs: readonly [{
name: "newFlashActionContract";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "FlashActionExecuted";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "target";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "data";
type: "bytes";
indexed: false;
internalType: "bytes";
}];
anonymous: false;
}, {
type: "event";
name: "LiquidationAuctionDurationUpdated";
inputs: readonly [{
name: "newDuration";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LiquidationContractUpdated";
inputs: readonly [{
name: "liquidator";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "LoanEmitted";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "offerId";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanForeclosed";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanLiquidated";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRefinanced";
inputs: readonly [{
name: "renegotiationId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "oldLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "newLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRefinancedFromNewOffers";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "newLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "offerIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}, {
name: "totalFee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRepaid";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "totalRepayment";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanSentToLiquidator";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "liquidator";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "MinAprImprovementUpdated";
inputs: readonly [{
name: "_minimum";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "MinBidLiquidationUpdated";
inputs: readonly [{
name: "newMinBid";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "MinLockPeriodUpdated";
inputs: readonly [{
name: "minLockPeriod";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "OfferCancelled";
inputs: readonly [{
name: "lender";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "offerId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "OwnershipTransferred";
inputs: readonly [{
name: "user";
type: "address";
indexed: true;
internalType: "address";
}, {
name: "newOwner";
type: "address";
indexed: true;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeePendingUpdate";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeeUpdated";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "RenegotiationOfferCancelled";
inputs: readonly [{
name: "lender";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "renegotiationId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "RevokeDelegate";
inputs: readonly [{
name: "delegate";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "collection";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "_rights";
type: "bytes32";
indexed: false;
internalType: "bytes32";
}];
anonymous: false;
}, {
type: "event";
name: "TransferOwnerRequested";
inputs: readonly [{
name: "newOwner";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "WhitelistedCallbackContractAdded";
inputs: readonly [{
name: "contractAdded";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "WhitelistedCallbackContractRemoved";
inputs: readonly [{
name: "contractRemoved";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "error";
name: "AddressZeroError";
inputs: readonly [];
}, {
type: "error";
name: "CancelledOrExecutedOfferError";
inputs: readonly [{
name: "_lender";
type: "address";
internalType: "address";
}, {
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "CollectionNotWhitelistedError";
inputs: readonly [];
}, {
type: "error";
name: "CurrencyNotWhitelistedError";
inputs: readonly [];
}, {
type: "error";
name: "ECDSAInvalidSignature";
inputs: readonly [];
}, {
type: "error";
name: "ECDSAInvalidSignatureLength";
inputs: readonly [{
name: "length";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "ECDSAInvalidSignatureS";
inputs: readonly [{
name: "s";
type: "bytes32";
internalType: "bytes32";
}];
}, {
type: "error";
name: "ExpiredOfferError";
inputs: readonly [{
name: "_expirationTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidAddressesError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidAmountError";
inputs: readonly [{
name: "_amount";
type: "uint256";
internalType: "uint256";
}, {
name: "_principalAmount";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidCallbackError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCallerError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCollateralError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCollateralIdError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidDurationError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidInputError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidLoanError";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidMethodError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidParametersError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidRenegotiationOfferError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidSignatureError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidTrancheError";
inputs: readonly [];
}, {
type: "error";
name: "LiquidatorOnlyError";
inputs: readonly [{
name: "_liquidator";
type: "address";
internalType: "address";
}];
}, {
type: "error";
name: "LoanExpiredError";
inputs: readonly [];
}, {
type: "error";
name: "LoanLockedError";
inputs: readonly [];
}, {
type: "error";
name: "LoanNotDueError";
inputs: readonly [{
name: "_expirationTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "MaxCapacityExceededError";
inputs: readonly [];
}, {
type: "error";
name: "MismatchError";
inputs: readonly [];
}, {
type: "error";
name: "MulticallFailed";
inputs: readonly [{
name: "i";
type: "uint256";
internalType: "uint256";
}, {
name: "returndata";
type: "bytes";
internalType: "bytes";
}];
}, {
type: "error";
name: "NFTNotReturnedError";
inputs: readonly [];
}, {
type: "error";
name: "NotStrictlyImprovedError";
inputs: readonly [];
}, {
type: "error";
name: "TooEarlyError";
inputs: readonly [{
name: "_pendingProtocolFeeSetTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "TooManyTranchesError";
inputs: readonly [];
}, {
type: "error";
name: "TooSoonError";
inputs: readonly [];
}, {
type: "error";
name: "TrancheCannotBeRefinancedError";
inputs: readonly [{
name: "minTimestamp";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "ZeroInterestError";
inputs: readonly [];
}], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "AllOffersCancelled" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "RevokeDelegate" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "MinLockPeriodUpdated" | "MinAprImprovementUpdated" | "MinBidLiquidationUpdated" | "TransferOwnerRequested" | "LoanRefinancedFromNewOffers")[]
? TFunctionName[number]
: TFunctionName>
-
Type Parameters
-
TFunctionName extends "OwnershipTransferred" | "AllOffersCancelled" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "RevokeDelegate" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "MinLockPeriodUpdated" | "MinAprImprovementUpdated" | "MinBidLiquidationUpdated" | "TransferOwnerRequested" | "LoanRefinancedFromNewOffers"
Parameters
-
eventName: TFunctionName
-
logs: Log<bigint, number, false>[]
Returns ParseEventLogsReturnType<readonly [{
inputs: readonly [{
internalType: "address";
name: "loanLiquidator";
type: "address";
}, {
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "protocolFee";
type: "tuple";
}, {
internalType: "address";
name: "currencyManager";
type: "address";
}, {
internalType: "address";
name: "collectionManager";
type: "address";
}, {
internalType: "uint256";
name: "maxTranches";
type: "uint256";
}, {
internalType: "uint256";
name: "minLockPeriod";
type: "uint256";
}, {
internalType: "address";
name: "delegateRegistry";
type: "address";
}, {
internalType: "address";
name: "loanManagerRegistry";
type: "address";
}, {
internalType: "address";
name: "flashActionContract";
type: "address";
}, {
internalType: "uint256";
name: "minWaitTime";
type: "uint256";
}];
stateMutability: "nonpayable";
type: "constructor";
}, {
inputs: readonly [];
name: "DOMAIN_SEPARATOR";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "FEE_UPDATE_NOTICE";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "INITIAL_DOMAIN_SEPARATOR";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MAX_AUCTION_DURATION";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_AUCTION_DURATION";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_BID_LIQUIDATION";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "MIN_WAIT_TIME";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "VERSION";
outputs: readonly [{
internalType: "bytes";
name: "";
type: "bytes";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "bytes";
name: "_renegotiationOfferSignature";
type: "bytes";
}];
name: "addNewTranche";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "addWhitelistedCallbackContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "cancelAllOffers";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "cancelOffer";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_renegotiationId";
type: "uint256";
}];
name: "cancelRenegotiationOffer";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
internalType: "address";
name: "_delegate";
type: "address";
}, {
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}, {
internalType: "bool";
name: "_value";
type: "bool";
}];
name: "delegate";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "offerId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256";
name: "capacity";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "maxSeniorRepayment";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "validator";
type: "address";
}, {
internalType: "bytes";
name: "arguments";
type: "bytes";
}];
internalType: "struct IBaseLoan.OfferValidator[]";
name: "validators";
type: "tuple[]";
}];
internalType: "struct IMultiSourceLoan.LoanOffer";
name: "offer";
type: "tuple";
}, {
internalType: "uint256";
name: "amount";
type: "uint256";
}, {
internalType: "bytes";
name: "lenderOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.OfferExecution[]";
name: "offerExecution";
type: "tuple[]";
}, {
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "address";
name: "principalReceiver";
type: "address";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.ExecutionData";
name: "executionData";
type: "tuple";
}, {
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "bytes";
name: "borrowerOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanExecutionData";
name: "_loanExecutionData";
type: "tuple";
}];
name: "emitLoan";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "address";
name: "_target";
type: "address";
}, {
internalType: "bytes";
name: "_data";
type: "bytes";
}];
name: "executeFlashAction";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "getCollectionManager";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getCurrencyManager";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getDelegateRegistry";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getFlashActionContract";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLiquidationAuctionDuration";
outputs: readonly [{
internalType: "uint48";
name: "";
type: "uint48";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLiquidator";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}];
name: "getLoanHash";
outputs: readonly [{
internalType: "bytes32";
name: "";
type: "bytes32";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getLoanManagerRegistry";
outputs: readonly [{
internalType: "contract ILoanManagerRegistry";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMaxTranches";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMinImprovementApr";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getMinLockPeriod";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getPendingProtocolFee";
outputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "";
type: "tuple";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getPendingProtocolFeeSetTime";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getProtocolFee";
outputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "";
type: "tuple";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "getTotalLoansIssued";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "getUsedCapacity";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}, {
internalType: "uint256";
name: "offerId";
type: "uint256";
}];
name: "isOfferCancelled";
outputs: readonly [{
internalType: "bool";
name: "notActive";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}, {
internalType: "uint256";
name: "renegotiationIf";
type: "uint256";
}];
name: "isRenegotiationOfferCancelled";
outputs: readonly [{
internalType: "bool";
name: "notActive";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "isWhitelistedCallbackContract";
outputs: readonly [{
internalType: "bool";
name: "";
type: "bool";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "liquidateLoan";
outputs: readonly [{
internalType: "bytes";
name: "";
type: "bytes";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "loanLiquidated";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "user";
type: "address";
}];
name: "minOfferId";
outputs: readonly [{
internalType: "uint256";
name: "minOfferId";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "bytes[]";
name: "data";
type: "bytes[]";
}];
name: "multicall";
outputs: readonly [{
internalType: "bytes[]";
name: "results";
type: "bytes[]";
}];
stateMutability: "payable";
type: "function";
}, {
inputs: readonly [];
name: "name";
outputs: readonly [{
internalType: "string";
name: "";
type: "string";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "";
type: "address";
}, {
internalType: "address";
name: "";
type: "address";
}, {
internalType: "uint256";
name: "";
type: "uint256";
}, {
internalType: "bytes";
name: "";
type: "bytes";
}];
name: "onERC721Received";
outputs: readonly [{
internalType: "bytes4";
name: "";
type: "bytes4";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "owner";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "pendingOwner";
outputs: readonly [{
internalType: "address";
name: "";
type: "address";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [];
name: "pendingOwnerTime";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}];
stateMutability: "view";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
components: readonly [{
components: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "offerId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256";
name: "capacity";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "maxSeniorRepayment";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "validator";
type: "address";
}, {
internalType: "bytes";
name: "arguments";
type: "bytes";
}];
internalType: "struct IBaseLoan.OfferValidator[]";
name: "validators";
type: "tuple[]";
}];
internalType: "struct IMultiSourceLoan.LoanOffer";
name: "offer";
type: "tuple";
}, {
internalType: "uint256";
name: "amount";
type: "uint256";
}, {
internalType: "bytes";
name: "lenderOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.OfferExecution[]";
name: "offerExecution";
type: "tuple[]";
}, {
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "address";
name: "principalReceiver";
type: "address";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.ExecutionData";
name: "executionData";
type: "tuple";
}, {
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "bytes";
name: "borrowerOfferSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanExecutionData";
name: "_loanExecutionData";
type: "tuple";
}];
name: "refinanceFromLoanExecutionData";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}, {
internalType: "bytes";
name: "_renegotiationOfferSignature";
type: "bytes";
}];
name: "refinanceFull";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "fee";
type: "uint256";
}, {
internalType: "uint256[]";
name: "trancheIndex";
type: "uint256[]";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}, {
internalType: "uint256";
name: "expirationTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
name: "_renegotiationOffer";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "_loan";
type: "tuple";
}];
name: "refinancePartial";
outputs: readonly [{
internalType: "uint256";
name: "";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "";
type: "tuple";
}];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_contract";
type: "address";
}];
name: "removeWhitelistedCallbackContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "bytes";
name: "callbackData";
type: "bytes";
}, {
internalType: "bool";
name: "shouldDelegate";
type: "bool";
}];
internalType: "struct IMultiSourceLoan.SignableRepaymentData";
name: "data";
type: "tuple";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
internalType: "bytes";
name: "borrowerSignature";
type: "bytes";
}];
internalType: "struct IMultiSourceLoan.LoanRepaymentData";
name: "_repaymentData";
type: "tuple";
}];
name: "repayLoan";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_newOwner";
type: "address";
}];
name: "requestTransferOwner";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_delegate";
type: "address";
}, {
internalType: "address";
name: "_collection";
type: "address";
}, {
internalType: "uint256";
name: "_tokenId";
type: "uint256";
}, {
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}];
name: "revokeDelegate";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "_newFlashActionContract";
type: "address";
}];
name: "setFlashActionContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "__minLockPeriod";
type: "uint256";
}];
name: "setMinLockPeriod";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "setProtocolFee";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [];
name: "transferOwnership";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "transferOwnership";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint48";
name: "_newDuration";
type: "uint48";
}];
name: "updateLiquidationAuctionDuration";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "address";
name: "__loanLiquidator";
type: "address";
}];
name: "updateLiquidationContract";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_newMinimum";
type: "uint256";
}];
name: "updateMinImprovementApr";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
internalType: "struct WithProtocolFee.ProtocolFee";
name: "_newProtocolFee";
type: "tuple";
}];
name: "updateProtocolFee";
outputs: readonly [];
stateMutability: "nonpayable";
type: "function";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "minOfferId";
type: "uint256";
}];
name: "AllOffersCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "delegate";
type: "address";
}, {
indexed: false;
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}, {
indexed: false;
internalType: "bool";
name: "value";
type: "bool";
}];
name: "Delegated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "newFlashActionContract";
type: "address";
}];
name: "FlashActionContractUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "target";
type: "address";
}, {
indexed: false;
internalType: "bytes";
name: "data";
type: "bytes";
}];
name: "FlashActionExecuted";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "newDuration";
type: "uint256";
}];
name: "LiquidationAuctionDurationUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "liquidator";
type: "address";
}];
name: "LiquidationContractUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256[]";
name: "offerId";
type: "uint256[]";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanEmitted";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}];
name: "LoanForeclosed";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}];
name: "LoanLiquidated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "oldLoanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "newLoanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanRefinanced";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "newLoanId";
type: "uint256";
}, {
components: readonly [{
internalType: "address";
name: "borrower";
type: "address";
}, {
internalType: "uint256";
name: "nftCollateralTokenId";
type: "uint256";
}, {
internalType: "address";
name: "nftCollateralAddress";
type: "address";
}, {
internalType: "address";
name: "principalAddress";
type: "address";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "duration";
type: "uint256";
}, {
components: readonly [{
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
internalType: "uint256";
name: "floor";
type: "uint256";
}, {
internalType: "uint256";
name: "principalAmount";
type: "uint256";
}, {
internalType: "address";
name: "lender";
type: "address";
}, {
internalType: "uint256";
name: "accruedInterest";
type: "uint256";
}, {
internalType: "uint256";
name: "startTime";
type: "uint256";
}, {
internalType: "uint256";
name: "aprBps";
type: "uint256";
}];
internalType: "struct IMultiSourceLoan.Tranche[]";
name: "tranche";
type: "tuple[]";
}, {
internalType: "uint256";
name: "protocolFee";
type: "uint256";
}];
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
name: "loan";
type: "tuple";
}, {
indexed: false;
internalType: "uint256[]";
name: "offerIds";
type: "uint256[]";
}, {
indexed: false;
internalType: "uint256";
name: "totalFee";
type: "uint256";
}];
name: "LoanRefinancedFromNewOffers";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "totalRepayment";
type: "uint256";
}, {
indexed: false;
internalType: "uint256";
name: "fee";
type: "uint256";
}];
name: "LoanRepaid";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "loanId";
type: "uint256";
}, {
indexed: false;
internalType: "address";
name: "liquidator";
type: "address";
}];
name: "LoanSentToLiquidator";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "_minimum";
type: "uint256";
}];
name: "MinAprImprovementUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "newMinBid";
type: "uint256";
}];
name: "MinBidLiquidationUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "uint256";
name: "minLockPeriod";
type: "uint256";
}];
name: "MinLockPeriodUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "offerId";
type: "uint256";
}];
name: "OfferCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: true;
internalType: "address";
name: "user";
type: "address";
}, {
indexed: true;
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "OwnershipTransferred";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
name: "fee";
type: "tuple";
}];
name: "ProtocolFeePendingUpdate";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
components: readonly [{
internalType: "address";
name: "recipient";
type: "address";
}, {
internalType: "uint256";
name: "fraction";
type: "uint256";
}];
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
name: "fee";
type: "tuple";
}];
name: "ProtocolFeeUpdated";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "lender";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "renegotiationId";
type: "uint256";
}];
name: "RenegotiationOfferCancelled";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "delegate";
type: "address";
}, {
indexed: false;
internalType: "address";
name: "collection";
type: "address";
}, {
indexed: false;
internalType: "uint256";
name: "tokenId";
type: "uint256";
}, {
indexed: false;
internalType: "bytes32";
name: "_rights";
type: "bytes32";
}];
name: "RevokeDelegate";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "newOwner";
type: "address";
}];
name: "TransferOwnerRequested";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "contractAdded";
type: "address";
}];
name: "WhitelistedCallbackContractAdded";
type: "event";
}, {
anonymous: false;
inputs: readonly [{
indexed: false;
internalType: "address";
name: "contractRemoved";
type: "address";
}];
name: "WhitelistedCallbackContractRemoved";
type: "event";
}, {
inputs: readonly [];
name: "AddressZeroError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_offerId";
type: "uint256";
}];
name: "CancelledOrExecutedOfferError";
type: "error";
}, {
inputs: readonly [];
name: "CollectionNotWhitelistedError";
type: "error";
}, {
inputs: readonly [];
name: "CurrencyNotWhitelistedError";
type: "error";
}, {
inputs: readonly [];
name: "ECDSAInvalidSignature";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "length";
type: "uint256";
}];
name: "ECDSAInvalidSignatureLength";
type: "error";
}, {
inputs: readonly [{
internalType: "bytes32";
name: "s";
type: "bytes32";
}];
name: "ECDSAInvalidSignatureS";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_expirationTime";
type: "uint256";
}];
name: "ExpiredOfferError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidAddressesError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_amount";
type: "uint256";
}, {
internalType: "uint256";
name: "_principalAmount";
type: "uint256";
}];
name: "InvalidAmountError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCallbackError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCallerError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidCollateralIdError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidDurationError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidInputError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_loanId";
type: "uint256";
}];
name: "InvalidLoanError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidMethodError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidParametersError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidRenegotiationOfferError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidSignatureError";
type: "error";
}, {
inputs: readonly [];
name: "InvalidTrancheError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_liquidator";
type: "address";
}];
name: "LiquidatorOnlyError";
type: "error";
}, {
inputs: readonly [];
name: "LoanExpiredError";
type: "error";
}, {
inputs: readonly [];
name: "LoanLockedError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_expirationTime";
type: "uint256";
}];
name: "LoanNotDueError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_newMinOfferId";
type: "uint256";
}, {
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "LowOfferIdError";
type: "error";
}, {
inputs: readonly [{
internalType: "address";
name: "_lender";
type: "address";
}, {
internalType: "uint256";
name: "_newMinRenegotiationOfferId";
type: "uint256";
}, {
internalType: "uint256";
name: "_minOfferId";
type: "uint256";
}];
name: "LowRenegotiationOfferIdError";
type: "error";
}, {
inputs: readonly [];
name: "MaxCapacityExceededError";
type: "error";
}, {
inputs: readonly [];
name: "MismatchError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "i";
type: "uint256";
}, {
internalType: "bytes";
name: "returndata";
type: "bytes";
}];
name: "MulticallFailed";
type: "error";
}, {
inputs: readonly [];
name: "NFTNotReturnedError";
type: "error";
}, {
inputs: readonly [];
name: "NotStrictlyImprovedError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "_pendingProtocolFeeSetTime";
type: "uint256";
}];
name: "TooEarlyError";
type: "error";
}, {
inputs: readonly [];
name: "TooManyTranchesError";
type: "error";
}, {
inputs: readonly [];
name: "TooSoonError";
type: "error";
}, {
inputs: readonly [{
internalType: "uint256";
name: "minTimestamp";
type: "uint256";
}];
name: "TrancheCannotBeRefinancedError";
type: "error";
}, {
inputs: readonly [];
name: "ZeroInterestError";
type: "error";
}] | readonly [{
type: "constructor";
inputs: readonly [{
name: "loanLiquidator";
type: "address";
internalType: "address";
}, {
name: "protocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "currencyManager";
type: "address";
internalType: "address";
}, {
name: "collectionManager";
type: "address";
internalType: "address";
}, {
name: "maxTranches";
type: "uint256";
internalType: "uint256";
}, {
name: "minLockPeriod";
type: "uint256";
internalType: "uint256";
}, {
name: "delegateRegistry";
type: "address";
internalType: "address";
}, {
name: "loanManagerRegistry";
type: "address";
internalType: "address";
}, {
name: "flashActionContract";
type: "address";
internalType: "address";
}, {
name: "minWaitTime";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "DOMAIN_SEPARATOR";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "FEE_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "INITIAL_DOMAIN_SEPARATOR";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "MAX_AUCTION_DURATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_AUCTION_DURATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_BID_LIQUIDATION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_WAIT_TIME";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "VERSION";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "bytes";
internalType: "bytes";
}];
stateMutability: "view";
}, {
type: "function";
name: "addNewTranche";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_renegotiationOfferSignature";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "addWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "cancelOffer";
inputs: readonly [{
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "cancelRenegotiationOffer";
inputs: readonly [{
name: "_renegotiationId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "delegate";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_delegate";
type: "address";
internalType: "address";
}, {
name: "_rights";
type: "bytes32";
internalType: "bytes32";
}, {
name: "_value";
type: "bool";
internalType: "bool";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "emitLoan";
inputs: readonly [{
name: "_loanExecutionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanExecutionData";
components: readonly [{
name: "executionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.ExecutionData";
components: readonly [{
name: "offerExecution";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.OfferExecution[]";
components: readonly [{
name: "offer";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanOffer";
components: readonly [{
name: "offerId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "capacity";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "maxSeniorRepayment";
type: "uint256";
internalType: "uint256";
}, {
name: "validators";
type: "tuple[]";
internalType: "struct IBaseLoan.OfferValidator[]";
components: readonly [{
name: "validator";
type: "address";
internalType: "address";
}, {
name: "arguments";
type: "bytes";
internalType: "bytes";
}];
}];
}, {
name: "amount";
type: "uint256";
internalType: "uint256";
}, {
name: "lenderOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "principalReceiver";
type: "address";
internalType: "address";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "borrowerOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "executeFlashAction";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_target";
type: "address";
internalType: "address";
}, {
name: "_data";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "getCollectionManager";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getCurrencyManager";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getDelegateRegistry";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getFlashActionContract";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLiquidationAuctionDuration";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint48";
internalType: "uint48";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLiquidator";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLoanHash";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "";
type: "bytes32";
internalType: "bytes32";
}];
stateMutability: "view";
}, {
type: "function";
name: "getLoanManagerRegistry";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "contract ILoanManagerRegistry";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMaxTranches";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMinImprovementApr";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getMinLockPeriod";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFeeSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getTotalLoansIssued";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getUsedCapacity";
inputs: readonly [{
name: "_lender";
type: "address";
internalType: "address";
}, {
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "isOfferCancelled";
inputs: readonly [{
name: "user";
type: "address";
internalType: "address";
}, {
name: "offerId";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "notActive";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "isRenegotiationOfferCancelled";
inputs: readonly [{
name: "user";
type: "address";
internalType: "address";
}, {
name: "renegotiationIf";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [{
name: "notActive";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "isWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [{
name: "";
type: "bool";
internalType: "bool";
}];
stateMutability: "view";
}, {
type: "function";
name: "liquidateLoan";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [{
name: "";
type: "bytes";
internalType: "bytes";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "loanLiquidated";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "multicall";
inputs: readonly [{
name: "data";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [{
name: "results";
type: "bytes[]";
internalType: "bytes[]";
}];
stateMutability: "payable";
}, {
type: "function";
name: "name";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "string";
internalType: "string";
}];
stateMutability: "view";
}, {
type: "function";
name: "onERC721Received";
inputs: readonly [{
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "owner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwnerTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "refinanceFromLoanExecutionData";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loanExecutionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanExecutionData";
components: readonly [{
name: "executionData";
type: "tuple";
internalType: "struct IMultiSourceLoan.ExecutionData";
components: readonly [{
name: "offerExecution";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.OfferExecution[]";
components: readonly [{
name: "offer";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanOffer";
components: readonly [{
name: "offerId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "capacity";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "maxSeniorRepayment";
type: "uint256";
internalType: "uint256";
}, {
name: "validators";
type: "tuple[]";
internalType: "struct IBaseLoan.OfferValidator[]";
components: readonly [{
name: "validator";
type: "address";
internalType: "address";
}, {
name: "arguments";
type: "bytes";
internalType: "bytes";
}];
}];
}, {
name: "amount";
type: "uint256";
internalType: "uint256";
}, {
name: "lenderOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "principalReceiver";
type: "address";
internalType: "address";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}];
}, {
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "borrowerOfferSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "refinanceFull";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_renegotiationOfferSignature";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "refinancePartial";
inputs: readonly [{
name: "_renegotiationOffer";
type: "tuple";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
components: readonly [{
name: "renegotiationId";
type: "uint256";
internalType: "uint256";
}, {
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "fee";
type: "uint256";
internalType: "uint256";
}, {
name: "trancheIndex";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}, {
name: "expirationTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "removeWhitelistedCallbackContract";
inputs: readonly [{
name: "_contract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "repayLoan";
inputs: readonly [{
name: "_repaymentData";
type: "tuple";
internalType: "struct IMultiSourceLoan.LoanRepaymentData";
components: readonly [{
name: "data";
type: "tuple";
internalType: "struct IMultiSourceLoan.SignableRepaymentData";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "callbackData";
type: "bytes";
internalType: "bytes";
}, {
name: "shouldDelegate";
type: "bool";
internalType: "bool";
}];
}, {
name: "loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "borrowerSignature";
type: "bytes";
internalType: "bytes";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "requestTransferOwner";
inputs: readonly [{
name: "_newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "revokeDelegate";
inputs: readonly [{
name: "_delegate";
type: "address";
internalType: "address";
}, {
name: "_collection";
type: "address";
internalType: "address";
}, {
name: "_tokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "_rights";
type: "bytes32";
internalType: "bytes32";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setFlashActionContract";
inputs: readonly [{
name: "_newFlashActionContract";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setMinLockPeriod";
inputs: readonly [{
name: "__minLockPeriod";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setProtocolFee";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [{
name: "newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateLiquidationAuctionDuration";
inputs: readonly [{
name: "_newDuration";
type: "uint48";
internalType: "uint48";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateLiquidationContract";
inputs: readonly [{
name: "__loanLiquidator";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateMinImprovementApr";
inputs: readonly [{
name: "_newMinimum";
type: "uint256";
internalType: "uint256";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateProtocolFee";
inputs: readonly [{
name: "_newProtocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "event";
name: "Delegated";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "delegate";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "_rights";
type: "bytes32";
indexed: false;
internalType: "bytes32";
}, {
name: "value";
type: "bool";
indexed: false;
internalType: "bool";
}];
anonymous: false;
}, {
type: "event";
name: "FlashActionContractUpdated";
inputs: readonly [{
name: "newFlashActionContract";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "FlashActionExecuted";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "target";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "data";
type: "bytes";
indexed: false;
internalType: "bytes";
}];
anonymous: false;
}, {
type: "event";
name: "LiquidationAuctionDurationUpdated";
inputs: readonly [{
name: "newDuration";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LiquidationContractUpdated";
inputs: readonly [{
name: "liquidator";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "LoanEmitted";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "offerId";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanForeclosed";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanLiquidated";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRefinanced";
inputs: readonly [{
name: "renegotiationId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "oldLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "newLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRefinancedFromNewOffers";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "newLoanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "loan";
type: "tuple";
indexed: false;
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "offerIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}, {
name: "totalFee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanRepaid";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "totalRepayment";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "fee";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "LoanSentToLiquidator";
inputs: readonly [{
name: "loanId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "liquidator";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "MinAprImprovementUpdated";
inputs: readonly [{
name: "_minimum";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "MinBidLiquidationUpdated";
inputs: readonly [{
name: "newMinBid";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "MinLockPeriodUpdated";
inputs: readonly [{
name: "minLockPeriod";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "OfferCancelled";
inputs: readonly [{
name: "lender";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "offerId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "OwnershipTransferred";
inputs: readonly [{
name: "user";
type: "address";
indexed: true;
internalType: "address";
}, {
name: "newOwner";
type: "address";
indexed: true;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeePendingUpdate";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeeUpdated";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "RenegotiationOfferCancelled";
inputs: readonly [{
name: "lender";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "renegotiationId";
type: "uint256";
indexed: false;
internalType: "uint256";
}];
anonymous: false;
}, {
type: "event";
name: "RevokeDelegate";
inputs: readonly [{
name: "delegate";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "collection";
type: "address";
indexed: false;
internalType: "address";
}, {
name: "tokenId";
type: "uint256";
indexed: false;
internalType: "uint256";
}, {
name: "_rights";
type: "bytes32";
indexed: false;
internalType: "bytes32";
}];
anonymous: false;
}, {
type: "event";
name: "TransferOwnerRequested";
inputs: readonly [{
name: "newOwner";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "WhitelistedCallbackContractAdded";
inputs: readonly [{
name: "contractAdded";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "WhitelistedCallbackContractRemoved";
inputs: readonly [{
name: "contractRemoved";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "error";
name: "AddressZeroError";
inputs: readonly [];
}, {
type: "error";
name: "CancelledOrExecutedOfferError";
inputs: readonly [{
name: "_lender";
type: "address";
internalType: "address";
}, {
name: "_offerId";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "CollectionNotWhitelistedError";
inputs: readonly [];
}, {
type: "error";
name: "CurrencyNotWhitelistedError";
inputs: readonly [];
}, {
type: "error";
name: "ECDSAInvalidSignature";
inputs: readonly [];
}, {
type: "error";
name: "ECDSAInvalidSignatureLength";
inputs: readonly [{
name: "length";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "ECDSAInvalidSignatureS";
inputs: readonly [{
name: "s";
type: "bytes32";
internalType: "bytes32";
}];
}, {
type: "error";
name: "ExpiredOfferError";
inputs: readonly [{
name: "_expirationTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidAddressesError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidAmountError";
inputs: readonly [{
name: "_amount";
type: "uint256";
internalType: "uint256";
}, {
name: "_principalAmount";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidCallbackError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCallerError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCollateralError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCollateralIdError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidDurationError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidInputError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidLoanError";
inputs: readonly [{
name: "_loanId";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "InvalidMethodError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidParametersError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidRenegotiationOfferError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidSignatureError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidTrancheError";
inputs: readonly [];
}, {
type: "error";
name: "LiquidatorOnlyError";
inputs: readonly [{
name: "_liquidator";
type: "address";
internalType: "address";
}];
}, {
type: "error";
name: "LoanExpiredError";
inputs: readonly [];
}, {
type: "error";
name: "LoanLockedError";
inputs: readonly [];
}, {
type: "error";
name: "LoanNotDueError";
inputs: readonly [{
name: "_expirationTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "MaxCapacityExceededError";
inputs: readonly [];
}, {
type: "error";
name: "MismatchError";
inputs: readonly [];
}, {
type: "error";
name: "MulticallFailed";
inputs: readonly [{
name: "i";
type: "uint256";
internalType: "uint256";
}, {
name: "returndata";
type: "bytes";
internalType: "bytes";
}];
}, {
type: "error";
name: "NFTNotReturnedError";
inputs: readonly [];
}, {
type: "error";
name: "NotStrictlyImprovedError";
inputs: readonly [];
}, {
type: "error";
name: "TooEarlyError";
inputs: readonly [{
name: "_pendingProtocolFeeSetTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "TooManyTranchesError";
inputs: readonly [];
}, {
type: "error";
name: "TooSoonError";
inputs: readonly [];
}, {
type: "error";
name: "TrancheCannotBeRefinancedError";
inputs: readonly [{
name: "minTimestamp";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "ZeroInterestError";
inputs: readonly [];
}], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "AllOffersCancelled" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "RevokeDelegate" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "MinLockPeriodUpdated" | "MinAprImprovementUpdated" | "MinBidLiquidationUpdated" | "TransferOwnerRequested" | "LoanRefinancedFromNewOffers")[]
? TFunctionName[number]
: TFunctionName>