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: "uint256";
        type: "uint256";
    }, {
        name: "minLockPeriod";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "delegateRegistry";
        internalType: "address";
        type: "address";
    }, {
        name: "flashActionContract";
        internalType: "address";
        type: "address";
    }];
}, {
    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: "_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: "ECDSAInvalidSignature";
}, {
    type: "error";
    inputs: readonly [{
        name: "length";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "ECDSAInvalidSignatureLength";
}, {
    type: "error";
    inputs: readonly [{
        name: "s";
        internalType: "bytes32";
        type: "bytes32";
    }];
    name: "ECDSAInvalidSignatureS";
}, {
    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: "ExtensionNotAvailableError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_amount";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "_principalAmount";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "InvalidAmountError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidBorrowerError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidCallbackError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidCollateralIdError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidDurationError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidLenderError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidLiquidationError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_loanId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "InvalidLoanError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidMethodError";
}, {
    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: "InvalidValueError";
}, {
    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: "_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: "minLockPeriod";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "MinLockPeriodTooHighError";
}, {
    type: "error";
    inputs: readonly [{
        name: "i";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "returndata";
        internalType: "bytes";
        type: "bytes";
    }];
    name: "MulticallFailed";
}, {
    type: "error";
    inputs: readonly [];
    name: "NFTNotReturnedError";
}, {
    type: "error";
    inputs: readonly [];
    name: "NotStrictlyImprovedError";
}, {
    type: "error";
    inputs: readonly [];
    name: "OnlyBorrowerCallableError";
}, {
    type: "error";
    inputs: readonly [];
    name: "OnlyLenderCallableError";
}, {
    type: "error";
    inputs: readonly [];
    name: "OnlyLenderOrBorrowerCallableError";
}, {
    type: "error";
    inputs: readonly [];
    name: "PartialOfferCannotChangeDurationError";
}, {
    type: "error";
    inputs: readonly [];
    name: "PartialOfferCannotHaveFeeError";
}, {
    type: "error";
    inputs: readonly [];
    name: "RefinanceFullError";
}, {
    type: "error";
    inputs: readonly [{
        name: "minTimestamp";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "SourceCannotBeRefinancedError";
}, {
    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: "uint256";
        type: "uint256";
    }];
    name: "TooManySourcesError";
}, {
    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: "borrower";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "offerId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "BorrowerOfferCancelled";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "newdelegateRegistry";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "DelegateRegistryUpdated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "loanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "delegate";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "value";
        internalType: "bool";
        type: "bool";
        indexed: false;
    }];
    name: "Delegated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "newFlashActionContract";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "FlashActionContractUpdated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "loanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "target";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "data";
        internalType: "bytes";
        type: "bytes";
        indexed: false;
    }];
    name: "FlashActionExecuted";
}, {
    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: "lender";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "borrower";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "fee";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LoanEmitted";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        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: "_extension";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LoanExtended";
}, {
    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: "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: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "MaxSourcesUpdated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "minLockPeriod";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "MinLockPeriodUpdated";
}, {
    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: "delegate";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "collection";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "tokenId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "RevokeDelegate";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "contractAdded";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "tax";
        internalType: "struct WithCallbacks.Taxes";
        type: "tuple";
        components: readonly [{
            name: "buyTax";
            internalType: "uint128";
            type: "uint128";
        }, {
            name: "sellTax";
            internalType: "uint128";
            type: "uint128";
        }];
        indexed: false;
    }];
    name: "WhitelistedCallbackContractAdded";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "contractRemoved";
        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: "view";
    type: "function";
    inputs: readonly [];
    name: "MIN_AUCTION_DURATION";
    outputs: readonly [{
        name: "";
        internalType: "uint48";
        type: "uint48";
    }];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_contract";
        internalType: "address";
        type: "address";
    }, {
        name: "_tax";
        internalType: "struct WithCallbacks.Taxes";
        type: "tuple";
        components: readonly [{
            name: "buyTax";
            internalType: "uint128";
            type: "uint128";
        }, {
            name: "sellTax";
            internalType: "uint128";
            type: "uint128";
        }];
    }];
    name: "addWhitelistedCallbackContract";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_minOfferId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelAllOffers";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_minRenegotiationId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelAllRenegotiationOffers";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_offerId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelOffer";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_offerIds";
        internalType: "uint256[]";
        type: "uint256[]";
    }];
    name: "cancelOffers";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_renegotiationId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelRenegotiationOffer";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_renegotiationIds";
        internalType: "uint256[]";
        type: "uint256[]";
    }];
    name: "cancelRenegotiationOffers";
    outputs: readonly [];
}, {
    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: "_delegate";
        internalType: "address";
        type: "address";
    }, {
        name: "_rights";
        internalType: "bytes32";
        type: "bytes32";
    }, {
        name: "_value";
        internalType: "bool";
        type: "bool";
    }];
    name: "delegate";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_executionData";
        internalType: "struct IMultiSourceLoan.LoanExecutionData";
        type: "tuple";
        components: readonly [{
            name: "executionData";
            internalType: "struct IBaseLoan.ExecutionData";
            type: "tuple";
            components: readonly [{
                name: "offer";
                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: "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: "amount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "expirationTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "callbackData";
                internalType: "bytes";
                type: "bytes";
            }];
        }, {
            name: "lender";
            internalType: "address";
            type: "address";
        }, {
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "lenderOfferSignature";
            internalType: "bytes";
            type: "bytes";
        }, {
            name: "borrowerOfferSignature";
            internalType: "bytes";
            type: "bytes";
        }];
    }];
    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: "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: "_target";
        internalType: "address";
        type: "address";
    }, {
        name: "_data";
        internalType: "bytes";
        type: "bytes";
    }];
    name: "executeFlashAction";
    outputs: readonly [];
}, {
    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: "_extension";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "extendLoan";
    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: "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: "getDelegateRegistry";
    outputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getFlashActionContract";
    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: "uint256";
        type: "uint256";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getMinLockPeriod";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
}, {
    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: "isBorrowerOfferCancelled";
    outputs: readonly [{
        name: "";
        internalType: "bool";
        type: "bool";
    }];
}, {
    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: "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 [{
        name: "";
        internalType: "bytes";
        type: "bytes";
    }];
}, {
    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: "loanLiquidated";
    outputs: readonly [];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
    name: "minOfferId";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
}, {
    stateMutability: "payable";
    type: "function";
    inputs: readonly [{
        name: "data";
        internalType: "bytes[]";
        type: "bytes[]";
    }];
    name: "multicall";
    outputs: readonly [{
        name: "results";
        internalType: "bytes[]";
        type: "bytes[]";
    }];
}, {
    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: "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: "_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: "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: "_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: "_contract";
        internalType: "address";
        type: "address";
    }];
    name: "removeWhitelistedCallbackContract";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_repaymentData";
        internalType: "struct IMultiSourceLoan.LoanRepaymentData";
        type: "tuple";
        components: readonly [{
            name: "data";
            internalType: "struct IMultiSourceLoan.SignableRepaymentData";
            type: "tuple";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "callbackData";
                internalType: "bytes";
                type: "bytes";
            }, {
                name: "shouldDelegate";
                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: "borrowerSignature";
            internalType: "bytes";
            type: "bytes";
        }];
    }];
    name: "repayLoan";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_delegate";
        internalType: "address";
        type: "address";
    }, {
        name: "_collection";
        internalType: "address";
        type: "address";
    }, {
        name: "_tokenId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "revokeDelegate";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_newDelegateRegistry";
        internalType: "address";
        type: "address";
    }];
    name: "setDelegateRegistry";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_newFlashActionContract";
        internalType: "address";
        type: "address";
    }];
    name: "setFlashActionContract";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "__maxSources";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "setMaxSources";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "__minLockPeriod";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "setMinLockPeriod";
    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 [];
}] = ...