Variable multiSourceLoanAbiConst

multiSourceLoanAbi: 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: "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: "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: "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 [];
}] = ...