Variable multiSourceLoanABIConst
multiSourceLoanABI: readonly [{
stateMutability: "nonpayable";
type: "constructor";
inputs: readonly [{
name: "loanLiquidator";
internalType: "address";
type: "address";
}, {
name: "protocolFee";
internalType: "struct IBaseLoan.ProtocolFee";
type: "tuple";
components: readonly [{
name: "recipient";
internalType: "address";
type: "address";
}, {
name: "fraction";
internalType: "uint256";
type: "uint256";
}];
}, {
name: "currencyManager";
internalType: "address";
type: "address";
}, {
name: "collectionManager";
internalType: "address";
type: "address";
}, {
name: "maxSources";
internalType: "uint8";
type: "uint8";
}];
}, {
type: "error";
inputs: readonly [];
name: "AddressZeroError";
}, {
type: "error";
inputs: readonly [{
name: "_lender";
internalType: "address";
type: "address";
}, {
name: "_offerId";
internalType: "uint256";
type: "uint256";
}];
name: "CancelledOrExecutedOfferError";
}, {
type: "error";
inputs: readonly [{
name: "_lender";
internalType: "address";
type: "address";
}, {
name: "_offerId";
internalType: "uint256";
type: "uint256";
}];
name: "CancelledRenegotiationOffer";
}, {
type: "error";
inputs: readonly [{
name: "_lender";
internalType: "address";
type: "address";
}, {
name: "_renegotiationId";
internalType: "uint256";
type: "uint256";
}];
name: "CancelledRenegotiationOfferError";
}, {
type: "error";
inputs: readonly [];
name: "CannotLiquidateError";
}, {
type: "error";
inputs: readonly [];
name: "CollectionNotWhitelistedError";
}, {
type: "error";
inputs: readonly [];
name: "CurrencyNotWhitelistedError";
}, {
type: "error";
inputs: readonly [];
name: "ExpiredLoanError";
}, {
type: "error";
inputs: readonly [{
name: "_expirationTime";
internalType: "uint256";
type: "uint256";
}];
name: "ExpiredOfferError";
}, {
type: "error";
inputs: readonly [{
name: "_expirationTime";
internalType: "uint256";
type: "uint256";
}];
name: "ExpiredRenegotiationOfferError";
}, {
type: "error";
inputs: readonly [];
name: "InvalidBorrowerError";
}, {
type: "error";
inputs: readonly [];
name: "InvalidCallbackError";
}, {
type: "error";
inputs: readonly [];
name: "InvalidCollateralIdError";
}, {
type: "error";
inputs: readonly [];
name: "InvalidLiquidationError";
}, {
type: "error";
inputs: readonly [{
name: "_loanId";
internalType: "uint256";
type: "uint256";
}];
name: "InvalidLoanError";
}, {
type: "error";
inputs: readonly [{
name: "_fraction";
internalType: "uint256";
type: "uint256";
}];
name: "InvalidProtocolFeeError";
}, {
type: "error";
inputs: readonly [];
name: "InvalidRenegotiationOfferError";
}, {
type: "error";
inputs: readonly [];
name: "InvalidSignatureError";
}, {
type: "error";
inputs: readonly [];
name: "InvalidSignerError";
}, {
type: "error";
inputs: readonly [];
name: "LengthMismatchError";
}, {
type: "error";
inputs: readonly [{
name: "_liquidator";
internalType: "address";
type: "address";
}];
name: "LiquidatorOnlyError";
}, {
type: "error";
inputs: readonly [];
name: "LoanExpiredError";
}, {
type: "error";
inputs: readonly [{
name: "_expirationTime";
internalType: "uint256";
type: "uint256";
}];
name: "LoanNotDueError";
}, {
type: "error";
inputs: readonly [{
name: "_loanId";
internalType: "uint256";
type: "uint256";
}];
name: "LoanNotFoundError";
}, {
type: "error";
inputs: readonly [{
name: "_lender";
internalType: "address";
type: "address";
}, {
name: "_newMinOfferId";
internalType: "uint256";
type: "uint256";
}, {
name: "_minOfferId";
internalType: "uint256";
type: "uint256";
}];
name: "LowOfferIdError";
}, {
type: "error";
inputs: readonly [{
name: "_lender";
internalType: "address";
type: "address";
}, {
name: "_newMinRenegotiationOfferId";
internalType: "uint256";
type: "uint256";
}, {
name: "_minOfferId";
internalType: "uint256";
type: "uint256";
}];
name: "LowRenegotiationOfferIdError";
}, {
type: "error";
inputs: readonly [];
name: "MaxCapacityExceededError";
}, {
type: "error";
inputs: readonly [{
name: "_id";
internalType: "uint256";
type: "uint256";
}];
name: "NotMintedError";
}, {
type: "error";
inputs: readonly [];
name: "NotStrictlyImprovedError";
}, {
type: "error";
inputs: readonly [];
name: "OnlyBorrowerCallableError";
}, {
type: "error";
inputs: readonly [];
name: "OnlyLenderOrSignerCallableError";
}, {
type: "error";
inputs: readonly [];
name: "PartialOfferCannotChangeDurationError";
}, {
type: "error";
inputs: readonly [];
name: "PartialOfferCannotHaveFeeError";
}, {
type: "error";
inputs: readonly [];
name: "RefinanceFullError";
}, {
type: "error";
inputs: readonly [];
name: "RepaymentError";
}, {
type: "error";
inputs: readonly [{
name: "sourcePrincipal";
internalType: "uint256";
type: "uint256";
}, {
name: "loanPrincipal";
internalType: "uint256";
type: "uint256";
}];
name: "TargetPrincipalTooLowError";
}, {
type: "error";
inputs: readonly [{
name: "_pendingProtocolFeeSetTime";
internalType: "uint256";
type: "uint256";
}];
name: "TooEarlyError";
}, {
type: "error";
inputs: readonly [{
name: "sources";
internalType: "uint8";
type: "uint8";
}];
name: "TooManySourcesError";
}, {
type: "error";
inputs: readonly [];
name: "Unauthorized";
}, {
type: "error";
inputs: readonly [{
name: "_authorized";
internalType: "address";
type: "address";
}];
name: "UnauthorizedError";
}, {
type: "error";
inputs: readonly [];
name: "ZeroAddressError";
}, {
type: "error";
inputs: readonly [];
name: "ZeroDurationError";
}, {
type: "error";
inputs: readonly [];
name: "ZeroInterestError";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "lender";
internalType: "address";
type: "address";
indexed: false;
}, {
name: "minOfferId";
internalType: "uint256";
type: "uint256";
indexed: false;
}];
name: "AllOffersCancelled";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "lender";
internalType: "address";
type: "address";
indexed: false;
}, {
name: "minRenegotiationId";
internalType: "uint256";
type: "uint256";
indexed: false;
}];
name: "AllRenegotiationOffersCancelled";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "lender";
internalType: "address";
type: "address";
indexed: false;
}, {
name: "signer";
internalType: "address";
type: "address";
indexed: false;
}];
name: "ApprovedSigner";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "minimum";
internalType: "struct IBaseLoan.ImprovementMinimum";
type: "tuple";
components: readonly [{
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "interest";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}];
indexed: false;
}];
name: "ImprovementMinimumUpdated";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "newDuration";
internalType: "uint256";
type: "uint256";
indexed: false;
}];
name: "LiquidationAuctionDurationUpdated";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "liquidator";
internalType: "address";
type: "address";
indexed: false;
}];
name: "LiquidationContractUpdated";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
indexed: false;
}, {
name: "offerId";
internalType: "uint256";
type: "uint256";
indexed: false;
}, {
name: "loan";
internalType: "struct IMultiSourceLoan.Loan";
type: "tuple";
components: readonly [{
name: "borrower";
internalType: "address";
type: "address";
}, {
name: "nftCollateralTokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "nftCollateralAddress";
internalType: "address";
type: "address";
}, {
name: "principalAddress";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "source";
internalType: "struct IMultiSourceLoan.Source[]";
type: "tuple[]";
components: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "accruedInterest";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}];
}];
indexed: false;
}, {
name: "fee";
internalType: "uint256";
type: "uint256";
indexed: false;
}];
name: "LoanEmitted";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
indexed: false;
}];
name: "LoanForeclosed";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
indexed: false;
}, {
name: "repayment";
internalType: "uint256";
type: "uint256";
indexed: false;
}];
name: "LoanLiquidated";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "renegotiationId";
internalType: "uint256";
type: "uint256";
indexed: false;
}, {
name: "oldLoanId";
internalType: "uint256";
type: "uint256";
indexed: false;
}, {
name: "newLoanId";
internalType: "uint256";
type: "uint256";
indexed: false;
}, {
name: "loan";
internalType: "struct IMultiSourceLoan.Loan";
type: "tuple";
components: readonly [{
name: "borrower";
internalType: "address";
type: "address";
}, {
name: "nftCollateralTokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "nftCollateralAddress";
internalType: "address";
type: "address";
}, {
name: "principalAddress";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "source";
internalType: "struct IMultiSourceLoan.Source[]";
type: "tuple[]";
components: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "accruedInterest";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}];
}];
indexed: false;
}, {
name: "fee";
internalType: "uint256";
type: "uint256";
indexed: false;
}];
name: "LoanRefinanced";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
indexed: false;
}, {
name: "totalRepayment";
internalType: "uint256";
type: "uint256";
indexed: false;
}, {
name: "fee";
internalType: "uint256";
type: "uint256";
indexed: false;
}];
name: "LoanRepaid";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
indexed: false;
}, {
name: "liquidator";
internalType: "address";
type: "address";
indexed: false;
}];
name: "LoanSentToLiquidator";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "newMax";
internalType: "uint8";
type: "uint8";
indexed: false;
}];
name: "MaxSourcesUpdated";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "lender";
internalType: "address";
type: "address";
indexed: false;
}, {
name: "offerId";
internalType: "uint256";
type: "uint256";
indexed: false;
}];
name: "OfferCancelled";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "user";
internalType: "address";
type: "address";
indexed: true;
}, {
name: "newOwner";
internalType: "address";
type: "address";
indexed: true;
}];
name: "OwnershipTransferred";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "fee";
internalType: "struct IBaseLoan.ProtocolFee";
type: "tuple";
components: readonly [{
name: "recipient";
internalType: "address";
type: "address";
}, {
name: "fraction";
internalType: "uint256";
type: "uint256";
}];
indexed: false;
}];
name: "ProtocolFeePendingUpdate";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "fee";
internalType: "struct IBaseLoan.ProtocolFee";
type: "tuple";
components: readonly [{
name: "recipient";
internalType: "address";
type: "address";
}, {
name: "fraction";
internalType: "uint256";
type: "uint256";
}];
indexed: false;
}];
name: "ProtocolFeeUpdated";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "lender";
internalType: "address";
type: "address";
indexed: false;
}, {
name: "renegotiationId";
internalType: "uint256";
type: "uint256";
indexed: false;
}];
name: "RenegotiationOfferCancelled";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "contract_added";
internalType: "address";
type: "address";
indexed: false;
}];
name: "WhitelistedCallbackContractAdded";
}, {
type: "event";
anonymous: false;
inputs: readonly [{
name: "contract_removed";
internalType: "address";
type: "address";
indexed: false;
}];
name: "WhitelistedCallbackContractRemoved";
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "DOMAIN_SEPARATOR";
outputs: readonly [{
name: "";
internalType: "bytes32";
type: "bytes32";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "FEE_UPDATE_NOTICE";
outputs: readonly [{
name: "";
internalType: "uint256";
type: "uint256";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "INITIAL_DOMAIN_SEPARATOR";
outputs: readonly [{
name: "";
internalType: "bytes32";
type: "bytes32";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "MAX_PROTOCOL_FEE";
outputs: readonly [{
name: "";
internalType: "uint256";
type: "uint256";
}];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_contract";
internalType: "address";
type: "address";
}];
name: "addWhitelistedCallbackContract";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_signer";
internalType: "address";
type: "address";
}];
name: "approveSigner";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_lender";
internalType: "address";
type: "address";
}, {
name: "_minOfferId";
internalType: "uint256";
type: "uint256";
}];
name: "cancelAllOffers";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_lender";
internalType: "address";
type: "address";
}, {
name: "_minRenegotiationId";
internalType: "uint256";
type: "uint256";
}];
name: "cancelAllRenegotiationOffers";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_lender";
internalType: "address";
type: "address";
}, {
name: "_offerId";
internalType: "uint256";
type: "uint256";
}];
name: "cancelOffer";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_lender";
internalType: "address";
type: "address";
}, {
name: "_offerIds";
internalType: "uint256[]";
type: "uint256[]";
}];
name: "cancelOffers";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_lender";
internalType: "address";
type: "address";
}, {
name: "_renegotiationId";
internalType: "uint256";
type: "uint256";
}];
name: "cancelRenegotiationOffer";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_lender";
internalType: "address";
type: "address";
}, {
name: "_renegotiationIds";
internalType: "uint256[]";
type: "uint256[]";
}];
name: "cancelRenegotiationOffers";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_loanOffer";
internalType: "struct IBaseLoan.LoanOffer";
type: "tuple";
components: readonly [{
name: "offerId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "fee";
internalType: "uint256";
type: "uint256";
}, {
name: "borrower";
internalType: "address";
type: "address";
}, {
name: "capacity";
internalType: "uint256";
type: "uint256";
}, {
name: "signer";
internalType: "address";
type: "address";
}, {
name: "requiresLiquidation";
internalType: "bool";
type: "bool";
}, {
name: "nftCollateralAddress";
internalType: "address";
type: "address";
}, {
name: "nftCollateralTokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "principalAddress";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}, {
name: "expirationTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "validators";
internalType: "struct IBaseLoan.OfferValidator[]";
type: "tuple[]";
components: readonly [{
name: "validator";
internalType: "address";
type: "address";
}, {
name: "arguments";
internalType: "bytes";
type: "bytes";
}];
}];
}, {
name: "_tokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "_lenderOfferSignature";
internalType: "bytes";
type: "bytes";
}, {
name: "_withCallback";
internalType: "bool";
type: "bool";
}];
name: "emitLoan";
outputs: readonly [{
name: "";
internalType: "uint256";
type: "uint256";
}, {
name: "";
internalType: "struct IMultiSourceLoan.Loan";
type: "tuple";
components: readonly [{
name: "borrower";
internalType: "address";
type: "address";
}, {
name: "nftCollateralTokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "nftCollateralAddress";
internalType: "address";
type: "address";
}, {
name: "principalAddress";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "source";
internalType: "struct IMultiSourceLoan.Source[]";
type: "tuple[]";
components: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "accruedInterest";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}];
}];
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [{
name: "";
internalType: "address";
type: "address";
}];
name: "getApprovedSigner";
outputs: readonly [{
name: "";
internalType: "address";
type: "address";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "getCollectionManager";
outputs: readonly [{
name: "";
internalType: "address";
type: "address";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "getCurrencyManager";
outputs: readonly [{
name: "";
internalType: "address";
type: "address";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "getImprovementMinimum";
outputs: readonly [{
name: "";
internalType: "struct IBaseLoan.ImprovementMinimum";
type: "tuple";
components: readonly [{
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "interest";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}];
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "getLiquidationAuctionDuration";
outputs: readonly [{
name: "";
internalType: "uint48";
type: "uint48";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "getLiquidator";
outputs: readonly [{
name: "";
internalType: "address";
type: "address";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [{
name: "_loanId";
internalType: "uint256";
type: "uint256";
}];
name: "getLoanHash";
outputs: readonly [{
name: "";
internalType: "bytes32";
type: "bytes32";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "getMaxSources";
outputs: readonly [{
name: "";
internalType: "uint8";
type: "uint8";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [{
name: "_loanPrincipal";
internalType: "uint256";
type: "uint256";
}];
name: "getMinSourcePrincipal";
outputs: readonly [{
name: "";
internalType: "uint256";
type: "uint256";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "getPendingProtocolFee";
outputs: readonly [{
name: "";
internalType: "struct IBaseLoan.ProtocolFee";
type: "tuple";
components: readonly [{
name: "recipient";
internalType: "address";
type: "address";
}, {
name: "fraction";
internalType: "uint256";
type: "uint256";
}];
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "getPendingProtocolFeeSetTime";
outputs: readonly [{
name: "";
internalType: "uint256";
type: "uint256";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "getProtocolFee";
outputs: readonly [{
name: "";
internalType: "struct IBaseLoan.ProtocolFee";
type: "tuple";
components: readonly [{
name: "recipient";
internalType: "address";
type: "address";
}, {
name: "fraction";
internalType: "uint256";
type: "uint256";
}];
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "getTotalLoansIssued";
outputs: readonly [{
name: "";
internalType: "uint256";
type: "uint256";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [{
name: "_lender";
internalType: "address";
type: "address";
}, {
name: "_offerId";
internalType: "uint256";
type: "uint256";
}];
name: "getUsedCapacity";
outputs: readonly [{
name: "";
internalType: "uint256";
type: "uint256";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [{
name: "";
internalType: "address";
type: "address";
}, {
name: "";
internalType: "uint256";
type: "uint256";
}];
name: "isOfferCancelled";
outputs: readonly [{
name: "";
internalType: "bool";
type: "bool";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [{
name: "";
internalType: "address";
type: "address";
}, {
name: "";
internalType: "uint256";
type: "uint256";
}];
name: "isRenegotiationOfferCancelled";
outputs: readonly [{
name: "";
internalType: "bool";
type: "bool";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [{
name: "_contract";
internalType: "address";
type: "address";
}];
name: "isWhitelistedCallbackContract";
outputs: readonly [{
name: "";
internalType: "bool";
type: "bool";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [{
name: "";
internalType: "address";
type: "address";
}];
name: "lenderMinOfferId";
outputs: readonly [{
name: "";
internalType: "uint256";
type: "uint256";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [{
name: "";
internalType: "address";
type: "address";
}];
name: "lenderMinRenegotiationOfferId";
outputs: readonly [{
name: "";
internalType: "uint256";
type: "uint256";
}];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "_loan";
internalType: "struct IMultiSourceLoan.Loan";
type: "tuple";
components: readonly [{
name: "borrower";
internalType: "address";
type: "address";
}, {
name: "nftCollateralTokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "nftCollateralAddress";
internalType: "address";
type: "address";
}, {
name: "principalAddress";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "source";
internalType: "struct IMultiSourceLoan.Source[]";
type: "tuple[]";
components: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "accruedInterest";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}];
}];
}];
name: "liquidateLoan";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_collateralAddress";
internalType: "address";
type: "address";
}, {
name: "_collateralTokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "_loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "_repayment";
internalType: "uint256";
type: "uint256";
}, {
name: "_loan";
internalType: "bytes";
type: "bytes";
}];
name: "loanLiquidated";
outputs: readonly [];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "name";
outputs: readonly [{
name: "";
internalType: "string";
type: "string";
}];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "";
internalType: "address";
type: "address";
}, {
name: "";
internalType: "address";
type: "address";
}, {
name: "";
internalType: "uint256";
type: "uint256";
}, {
name: "";
internalType: "bytes";
type: "bytes";
}];
name: "onERC721Received";
outputs: readonly [{
name: "";
internalType: "bytes4";
type: "bytes4";
}];
}, {
stateMutability: "view";
type: "function";
inputs: readonly [];
name: "owner";
outputs: readonly [{
name: "";
internalType: "address";
type: "address";
}];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_renegotiationOffer";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
type: "tuple";
components: readonly [{
name: "renegotiationId";
internalType: "uint256";
type: "uint256";
}, {
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "fee";
internalType: "uint256";
type: "uint256";
}, {
name: "signer";
internalType: "address";
type: "address";
}, {
name: "targetPrincipal";
internalType: "uint256[]";
type: "uint256[]";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}, {
name: "expirationTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "strictImprovement";
internalType: "bool";
type: "bool";
}];
}, {
name: "_loan";
internalType: "struct IMultiSourceLoan.Loan";
type: "tuple";
components: readonly [{
name: "borrower";
internalType: "address";
type: "address";
}, {
name: "nftCollateralTokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "nftCollateralAddress";
internalType: "address";
type: "address";
}, {
name: "principalAddress";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "source";
internalType: "struct IMultiSourceLoan.Source[]";
type: "tuple[]";
components: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "accruedInterest";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}];
}];
}, {
name: "_renegotiationOfferSignature";
internalType: "bytes";
type: "bytes";
}];
name: "refinanceFull";
outputs: readonly [{
name: "";
internalType: "uint256";
type: "uint256";
}, {
name: "";
internalType: "struct IMultiSourceLoan.Loan";
type: "tuple";
components: readonly [{
name: "borrower";
internalType: "address";
type: "address";
}, {
name: "nftCollateralTokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "nftCollateralAddress";
internalType: "address";
type: "address";
}, {
name: "principalAddress";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "source";
internalType: "struct IMultiSourceLoan.Source[]";
type: "tuple[]";
components: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "accruedInterest";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}];
}];
}];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_renegotiationOffer";
internalType: "struct IMultiSourceLoan.RenegotiationOffer";
type: "tuple";
components: readonly [{
name: "renegotiationId";
internalType: "uint256";
type: "uint256";
}, {
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "fee";
internalType: "uint256";
type: "uint256";
}, {
name: "signer";
internalType: "address";
type: "address";
}, {
name: "targetPrincipal";
internalType: "uint256[]";
type: "uint256[]";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}, {
name: "expirationTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "strictImprovement";
internalType: "bool";
type: "bool";
}];
}, {
name: "_loan";
internalType: "struct IMultiSourceLoan.Loan";
type: "tuple";
components: readonly [{
name: "borrower";
internalType: "address";
type: "address";
}, {
name: "nftCollateralTokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "nftCollateralAddress";
internalType: "address";
type: "address";
}, {
name: "principalAddress";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "source";
internalType: "struct IMultiSourceLoan.Source[]";
type: "tuple[]";
components: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "accruedInterest";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}];
}];
}];
name: "refinancePartial";
outputs: readonly [{
name: "";
internalType: "uint256";
type: "uint256";
}, {
name: "";
internalType: "struct IMultiSourceLoan.Loan";
type: "tuple";
components: readonly [{
name: "borrower";
internalType: "address";
type: "address";
}, {
name: "nftCollateralTokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "nftCollateralAddress";
internalType: "address";
type: "address";
}, {
name: "principalAddress";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "source";
internalType: "struct IMultiSourceLoan.Source[]";
type: "tuple[]";
components: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "accruedInterest";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}];
}];
}];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_renegotiationOffer";
internalType: "struct IMultiSourceLoan.RenegotiationOffer[]";
type: "tuple[]";
components: readonly [{
name: "renegotiationId";
internalType: "uint256";
type: "uint256";
}, {
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "fee";
internalType: "uint256";
type: "uint256";
}, {
name: "signer";
internalType: "address";
type: "address";
}, {
name: "targetPrincipal";
internalType: "uint256[]";
type: "uint256[]";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}, {
name: "expirationTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "strictImprovement";
internalType: "bool";
type: "bool";
}];
}, {
name: "_loan";
internalType: "struct IMultiSourceLoan.Loan[]";
type: "tuple[]";
components: readonly [{
name: "borrower";
internalType: "address";
type: "address";
}, {
name: "nftCollateralTokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "nftCollateralAddress";
internalType: "address";
type: "address";
}, {
name: "principalAddress";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "source";
internalType: "struct IMultiSourceLoan.Source[]";
type: "tuple[]";
components: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "accruedInterest";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}];
}];
}];
name: "refinancePartialBatch";
outputs: readonly [{
name: "loanId";
internalType: "uint256[]";
type: "uint256[]";
}, {
name: "loans";
internalType: "struct IMultiSourceLoan.Loan[]";
type: "tuple[]";
components: readonly [{
name: "borrower";
internalType: "address";
type: "address";
}, {
name: "nftCollateralTokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "nftCollateralAddress";
internalType: "address";
type: "address";
}, {
name: "principalAddress";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "source";
internalType: "struct IMultiSourceLoan.Source[]";
type: "tuple[]";
components: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "accruedInterest";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}];
}];
}];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_contract";
internalType: "address";
type: "address";
}];
name: "removeWhitelistedCallbackContract";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_collateralTo";
internalType: "address";
type: "address";
}, {
name: "_loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "_loan";
internalType: "struct IMultiSourceLoan.Loan";
type: "tuple";
components: readonly [{
name: "borrower";
internalType: "address";
type: "address";
}, {
name: "nftCollateralTokenId";
internalType: "uint256";
type: "uint256";
}, {
name: "nftCollateralAddress";
internalType: "address";
type: "address";
}, {
name: "principalAddress";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}, {
name: "source";
internalType: "struct IMultiSourceLoan.Source[]";
type: "tuple[]";
components: readonly [{
name: "loanId";
internalType: "uint256";
type: "uint256";
}, {
name: "lender";
internalType: "address";
type: "address";
}, {
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "accruedInterest";
internalType: "uint256";
type: "uint256";
}, {
name: "startTime";
internalType: "uint256";
type: "uint256";
}, {
name: "aprBps";
internalType: "uint256";
type: "uint256";
}];
}];
}, {
name: "_withCallback";
internalType: "bool";
type: "bool";
}];
name: "repayLoan";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "maxSources";
internalType: "uint8";
type: "uint8";
}];
name: "setMaxSources";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [];
name: "setProtocolFee";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "newOwner";
internalType: "address";
type: "address";
}];
name: "transferOwnership";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_newMinimum";
internalType: "struct IBaseLoan.ImprovementMinimum";
type: "tuple";
components: readonly [{
name: "principalAmount";
internalType: "uint256";
type: "uint256";
}, {
name: "interest";
internalType: "uint256";
type: "uint256";
}, {
name: "duration";
internalType: "uint256";
type: "uint256";
}];
}];
name: "updateImprovementMinimum";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_newDuration";
internalType: "uint48";
type: "uint48";
}];
name: "updateLiquidationAuctionDuration";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "loanLiquidator";
internalType: "contract ILoanLiquidator";
type: "address";
}];
name: "updateLiquidationContract";
outputs: readonly [];
}, {
stateMutability: "nonpayable";
type: "function";
inputs: readonly [{
name: "_newProtocolFee";
internalType: "struct IBaseLoan.ProtocolFee";
type: "tuple";
components: readonly [{
name: "recipient";
internalType: "address";
type: "address";
}, {
name: "fraction";
internalType: "uint256";
type: "uint256";
}];
}];
name: "updateProtocolFee";
outputs: readonly [];
}] = ...