Variable multiSourceLoanAbiConst

multiSourceLoanAbi: readonly [{
    type: "constructor";
    inputs: readonly [{
        name: "loanLiquidator";
        internalType: "address";
        type: "address";
    }, {
        name: "protocolFee";
        internalType: "struct WithProtocolFee.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: "maxTranches";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "minLockPeriod";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "delegateRegistry";
        internalType: "address";
        type: "address";
    }, {
        name: "loanManagerRegistry";
        internalType: "address";
        type: "address";
    }, {
        name: "flashActionContract";
        internalType: "address";
        type: "address";
    }, {
        name: "minWaitTime";
        internalType: "uint256";
        type: "uint256";
    }];
    stateMutability: "nonpayable";
}, {
    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: "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: "InvalidAddressesError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_amount";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "_principalAmount";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "InvalidAmountError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidCallbackError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidCallerError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidCollateralIdError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidDurationError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidInputError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_loanId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "InvalidLoanError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidMethodError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidParametersError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidRenegotiationOfferError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidSignatureError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidTrancheError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_liquidator";
        internalType: "address";
        type: "address";
    }];
    name: "LiquidatorOnlyError";
}, {
    type: "error";
    inputs: readonly [];
    name: "LoanExpiredError";
}, {
    type: "error";
    inputs: readonly [];
    name: "LoanLockedError";
}, {
    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: "MismatchError";
}, {
    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: "_pendingProtocolFeeSetTime";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "TooEarlyError";
}, {
    type: "error";
    inputs: readonly [];
    name: "TooManyTranchesError";
}, {
    type: "error";
    inputs: readonly [];
    name: "TooSoonError";
}, {
    type: "error";
    inputs: readonly [{
        name: "minTimestamp";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "TrancheCannotBeRefinancedError";
}, {
    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: "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: "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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            internalType: "uint256";
            type: "uint256";
        }];
        indexed: false;
    }, {
        name: "fee";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LoanEmitted";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "loanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LoanForeclosed";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "loanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            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: "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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            internalType: "uint256";
            type: "uint256";
        }];
        indexed: false;
    }, {
        name: "offerIds";
        internalType: "uint256[]";
        type: "uint256[]";
        indexed: false;
    }, {
        name: "totalFee";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LoanRefinancedFromNewOffers";
}, {
    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: "_minimum";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "MinAprImprovementUpdated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "newMinBid";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "MinBidLiquidationUpdated";
}, {
    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 WithProtocolFee.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 WithProtocolFee.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: "newOwner";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "TransferOwnerRequested";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "contractAdded";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "WhitelistedCallbackContractAdded";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "contractRemoved";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "WhitelistedCallbackContractRemoved";
}, {
    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_AUCTION_DURATION";
    outputs: readonly [{
        name: "";
        internalType: "uint48";
        type: "uint48";
    }];
    stateMutability: "view";
}, {
    type: "function";
    inputs: readonly [];
    name: "MIN_AUCTION_DURATION";
    outputs: readonly [{
        name: "";
        internalType: "uint48";
        type: "uint48";
    }];
    stateMutability: "view";
}, {
    type: "function";
    inputs: readonly [];
    name: "MIN_BID_LIQUIDATION";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
    stateMutability: "view";
}, {
    type: "function";
    inputs: readonly [];
    name: "MIN_WAIT_TIME";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
    stateMutability: "view";
}, {
    type: "function";
    inputs: readonly [];
    name: "VERSION";
    outputs: readonly [{
        name: "";
        internalType: "bytes";
        type: "bytes";
    }];
    stateMutability: "view";
}, {
    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: "trancheIndex";
            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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            internalType: "uint256";
            type: "uint256";
        }];
    }, {
        name: "_renegotiationOfferSignature";
        internalType: "bytes";
        type: "bytes";
    }];
    name: "addNewTranche";
    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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            internalType: "uint256";
            type: "uint256";
        }];
    }];
    stateMutability: "nonpayable";
}, {
    type: "function";
    inputs: readonly [{
        name: "_contract";
        internalType: "address";
        type: "address";
    }];
    name: "addWhitelistedCallbackContract";
    outputs: readonly [];
    stateMutability: "nonpayable";
}, {
    type: "function";
    inputs: readonly [{
        name: "_minOfferId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelAllOffers";
    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: "_renegotiationId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelRenegotiationOffer";
    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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            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: "_loanExecutionData";
        internalType: "struct IMultiSourceLoan.LoanExecutionData";
        type: "tuple";
        components: readonly [{
            name: "executionData";
            internalType: "struct IMultiSourceLoan.ExecutionData";
            type: "tuple";
            components: readonly [{
                name: "offerExecution";
                internalType: "struct IMultiSourceLoan.OfferExecution[]";
                type: "tuple[]";
                components: readonly [{
                    name: "offer";
                    internalType: "struct IMultiSourceLoan.LoanOffer";
                    type: "tuple";
                    components: readonly [{
                        name: "offerId";
                        internalType: "uint256";
                        type: "uint256";
                    }, {
                        name: "lender";
                        internalType: "address";
                        type: "address";
                    }, {
                        name: "fee";
                        internalType: "uint256";
                        type: "uint256";
                    }, {
                        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: "maxSeniorRepayment";
                        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: "amount";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "lenderOfferSignature";
                    internalType: "bytes";
                    type: "bytes";
                }];
            }, {
                name: "tokenId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "duration";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "expirationTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalReceiver";
                internalType: "address";
                type: "address";
            }, {
                name: "callbackData";
                internalType: "bytes";
                type: "bytes";
            }];
        }, {
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            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: "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: "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: "getLoanManagerRegistry";
    outputs: readonly [{
        name: "";
        internalType: "contract ILoanManagerRegistry";
        type: "address";
    }];
    stateMutability: "view";
}, {
    type: "function";
    inputs: readonly [];
    name: "getMaxTranches";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
    stateMutability: "view";
}, {
    type: "function";
    inputs: readonly [];
    name: "getMinImprovementApr";
    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: "getPendingProtocolFee";
    outputs: readonly [{
        name: "";
        internalType: "struct WithProtocolFee.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 WithProtocolFee.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: "user";
        internalType: "address";
        type: "address";
    }, {
        name: "offerId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "isOfferCancelled";
    outputs: readonly [{
        name: "notActive";
        internalType: "bool";
        type: "bool";
    }];
    stateMutability: "view";
}, {
    type: "function";
    inputs: readonly [{
        name: "user";
        internalType: "address";
        type: "address";
    }, {
        name: "renegotiationIf";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "isRenegotiationOfferCancelled";
    outputs: readonly [{
        name: "notActive";
        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: "_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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            internalType: "uint256";
            type: "uint256";
        }];
    }];
    name: "loanLiquidated";
    outputs: readonly [];
    stateMutability: "nonpayable";
}, {
    type: "function";
    inputs: readonly [{
        name: "user";
        internalType: "address";
        type: "address";
    }];
    name: "minOfferId";
    outputs: readonly [{
        name: "minOfferId";
        internalType: "uint256";
        type: "uint256";
    }];
    stateMutability: "view";
}, {
    type: "function";
    inputs: readonly [{
        name: "data";
        internalType: "bytes[]";
        type: "bytes[]";
    }];
    name: "multicall";
    outputs: readonly [{
        name: "results";
        internalType: "bytes[]";
        type: "bytes[]";
    }];
    stateMutability: "payable";
}, {
    type: "function";
    inputs: readonly [];
    name: "name";
    outputs: readonly [{
        name: "";
        internalType: "string";
        type: "string";
    }];
    stateMutability: "view";
}, {
    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: "nonpayable";
}, {
    type: "function";
    inputs: readonly [];
    name: "owner";
    outputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
    stateMutability: "view";
}, {
    type: "function";
    inputs: readonly [];
    name: "pendingOwner";
    outputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
    stateMutability: "view";
}, {
    type: "function";
    inputs: readonly [];
    name: "pendingOwnerTime";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
    stateMutability: "view";
}, {
    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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            internalType: "uint256";
            type: "uint256";
        }];
    }, {
        name: "_loanExecutionData";
        internalType: "struct IMultiSourceLoan.LoanExecutionData";
        type: "tuple";
        components: readonly [{
            name: "executionData";
            internalType: "struct IMultiSourceLoan.ExecutionData";
            type: "tuple";
            components: readonly [{
                name: "offerExecution";
                internalType: "struct IMultiSourceLoan.OfferExecution[]";
                type: "tuple[]";
                components: readonly [{
                    name: "offer";
                    internalType: "struct IMultiSourceLoan.LoanOffer";
                    type: "tuple";
                    components: readonly [{
                        name: "offerId";
                        internalType: "uint256";
                        type: "uint256";
                    }, {
                        name: "lender";
                        internalType: "address";
                        type: "address";
                    }, {
                        name: "fee";
                        internalType: "uint256";
                        type: "uint256";
                    }, {
                        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: "maxSeniorRepayment";
                        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: "amount";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "lenderOfferSignature";
                    internalType: "bytes";
                    type: "bytes";
                }];
            }, {
                name: "tokenId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "duration";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "expirationTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalReceiver";
                internalType: "address";
                type: "address";
            }, {
                name: "callbackData";
                internalType: "bytes";
                type: "bytes";
            }];
        }, {
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "borrowerOfferSignature";
            internalType: "bytes";
            type: "bytes";
        }];
    }];
    name: "refinanceFromLoanExecutionData";
    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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            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: "trancheIndex";
            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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            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: "trancheIndex";
            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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            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: "tranche";
            internalType: "struct IMultiSourceLoan.Tranche[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "floor";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "protocolFee";
            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: "tranche";
                internalType: "struct IMultiSourceLoan.Tranche[]";
                type: "tuple[]";
                components: readonly [{
                    name: "loanId";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "floor";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "principalAmount";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "lender";
                    internalType: "address";
                    type: "address";
                }, {
                    name: "accruedInterest";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "startTime";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "aprBps";
                    internalType: "uint256";
                    type: "uint256";
                }];
            }, {
                name: "protocolFee";
                internalType: "uint256";
                type: "uint256";
            }];
        }, {
            name: "borrowerSignature";
            internalType: "bytes";
            type: "bytes";
        }];
    }];
    name: "repayLoan";
    outputs: readonly [];
    stateMutability: "nonpayable";
}, {
    type: "function";
    inputs: readonly [{
        name: "_newOwner";
        internalType: "address";
        type: "address";
    }];
    name: "requestTransferOwner";
    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: "_newFlashActionContract";
        internalType: "address";
        type: "address";
    }];
    name: "setFlashActionContract";
    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: "transferOwnership";
    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: "_newDuration";
        internalType: "uint48";
        type: "uint48";
    }];
    name: "updateLiquidationAuctionDuration";
    outputs: readonly [];
    stateMutability: "nonpayable";
}, {
    type: "function";
    inputs: readonly [{
        name: "__loanLiquidator";
        internalType: "address";
        type: "address";
    }];
    name: "updateLiquidationContract";
    outputs: readonly [];
    stateMutability: "nonpayable";
}, {
    type: "function";
    inputs: readonly [{
        name: "_newMinimum";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "updateMinImprovementApr";
    outputs: readonly [];
    stateMutability: "nonpayable";
}, {
    type: "function";
    inputs: readonly [{
        name: "_newProtocolFee";
        internalType: "struct WithProtocolFee.ProtocolFee";
        type: "tuple";
        components: readonly [{
            name: "recipient";
            internalType: "address";
            type: "address";
        }, {
            name: "fraction";
            internalType: "uint256";
            type: "uint256";
        }];
    }];
    name: "updateProtocolFee";
    outputs: readonly [];
    stateMutability: "nonpayable";
}] = ...