Hierarchy

Constructors

Methods

  • Parameters

    • __namedParameters: {
          structToSign: {
              offerId: bigint;
              lender: `0x${string}`;
              fee: bigint;
              capacity: bigint;
              nftCollateralAddress: `0x${string}`;
              nftCollateralTokenId: bigint;
              principalAddress: `0x${string}`;
              principalAmount: bigint;
              aprBps: bigint;
              expirationTime: bigint;
              duration: bigint;
              maxSeniorRepayment: bigint;
              validators: readonly ({ validator: `0x${string}`; arguments: `0x${string}`; })[];
          };
      }
      • structToSign: {
            offerId: bigint;
            lender: `0x${string}`;
            fee: bigint;
            capacity: bigint;
            nftCollateralAddress: `0x${string}`;
            nftCollateralTokenId: bigint;
            principalAddress: `0x${string}`;
            principalAmount: bigint;
            aprBps: bigint;
            expirationTime: bigint;
            duration: bigint;
            maxSeniorRepayment: bigint;
            validators: readonly ({ validator: `0x${string}`; arguments: `0x${string}`; })[];
        }
        • offerId: bigint
        • lender: `0x${string}`
        • fee: bigint
        • capacity: bigint
        • nftCollateralAddress: `0x${string}`
        • nftCollateralTokenId: bigint
        • principalAddress: `0x${string}`
        • principalAmount: bigint
        • aprBps: bigint
        • expirationTime: bigint
        • duration: bigint
        • maxSeniorRepayment: bigint
        • validators: readonly ({ validator: `0x${string}`; arguments: `0x${string}`; })[]

    Returns Promise<`0x${string}`>

  • Parameters

    • __namedParameters: {
          structToSign: {
              renegotiationId: bigint;
              loanId: bigint;
              lender: `0x${string}`;
              fee: bigint;
              trancheIndex: readonly bigint[];
              principalAmount: bigint;
              aprBps: bigint;
              expirationTime: bigint;
              duration: bigint;
          };
      }
      • structToSign: {
            renegotiationId: bigint;
            loanId: bigint;
            lender: `0x${string}`;
            fee: bigint;
            trancheIndex: readonly bigint[];
            principalAmount: bigint;
            aprBps: bigint;
            expirationTime: bigint;
            duration: bigint;
        }
        • renegotiationId: bigint
        • loanId: bigint
        • lender: `0x${string}`
        • fee: bigint
        • trancheIndex: readonly bigint[]
        • principalAmount: bigint
        • aprBps: bigint
        • expirationTime: bigint
        • duration: bigint

    Returns Promise<`0x${string}`>

  • Parameters

    • __namedParameters: {
          id: bigint;
      }
      • id: bigint

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            lender: `0x${string}`;
            offerId: bigint;
        }>);
    }>

  • Parameters

    • __namedParameters: {
          minId: bigint;
      }
      • minId: bigint

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            lender: `0x${string}`;
            minOfferId: bigint;
        }>);
    }>

  • Parameters

    • __namedParameters: {
          id: bigint;
      }
      • id: bigint

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            lender: `0x${string}`;
            renegotiationId: bigint;
        }>);
    }>

  • Parameters

    • _: {
          minId: bigint;
      }
      • minId: bigint

    Returns Promise<void>

  • Parameters

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            loan: {
                contractAddress: `0x${string}`;
                borrower: `0x${string}`;
                nftCollateralTokenId: bigint;
                nftCollateralAddress: `0x${string}`;
                principalAddress: `0x${string}`;
                principalAmount: bigint;
                startTime: bigint;
                duration: bigint;
                tranche: readonly {
                    loanId: bigint;
                    floor: bigint;
                    principalAmount: bigint;
                    lender: `0x${string}`;
                    accruedInterest: bigint;
                    startTime: bigint;
                    aprBps: bigint;
                }[];
                protocolFee: bigint;
                id: string;
            };
            loanId: bigint;
            offerIds: string[];
        }>);
    }>

  • Parameters

    • __namedParameters: {
          delegations: `0x${string}`[];
          emit: EmitLoanArgs;
      }

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            results: ({
                loanId: bigint;
                offerId: readonly bigint[];
                loan: {
                    borrower: `0x${string}`;
                    nftCollateralTokenId: bigint;
                    nftCollateralAddress: `0x${string}`;
                    principalAddress: `0x${string}`;
                    principalAmount: bigint;
                    startTime: bigint;
                    duration: bigint;
                    tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                    protocolFee: bigint;
                };
                fee: bigint;
            } | {
                delegate: `0x${string}`;
                collection: `0x${string}`;
                tokenId: bigint;
            })[];
            loan: {
                contractAddress: `0x${string}`;
                borrower: `0x${string}`;
                nftCollateralTokenId: bigint;
                nftCollateralAddress: `0x${string}`;
                principalAddress: `0x${string}`;
                principalAmount: bigint;
                startTime: bigint;
                duration: bigint;
                tranche: readonly {
                    loanId: bigint;
                    floor: bigint;
                    principalAmount: bigint;
                    lender: `0x${string}`;
                    accruedInterest: bigint;
                    startTime: bigint;
                    aprBps: bigint;
                }[];
                protocolFee: bigint;
                id: string;
            };
            loanId: bigint;
        }>);
    }>

  • Parameters

    • __namedParameters: {
          loan: LoanV6;
          loanId: bigint;
      }

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            loanId: bigint;
            totalRepayment: bigint;
            fee: bigint;
        }>);
    }>

  • Parameters

    Returns Promise<number>

  • Parameters

    • __namedParameters: {
          renegotiationId: bigint;
          refinancings: {
              loan: LoanV6;
              newAprBps: bigint;
              sources: {
                  source: {
                      loanId: bigint;
                      floor: bigint;
                      principalAmount: bigint;
                      lender: `0x${string}`;
                      accruedInterest: bigint;
                      startTime: bigint;
                      aprBps: bigint;
                  } & {
                      loanIndex: number;
                  };
                  refinancingPrincipal: bigint;
              }[];
          }[];
      }
      • renegotiationId: bigint
      • refinancings: {
            loan: LoanV6;
            newAprBps: bigint;
            sources: {
                source: {
                    loanId: bigint;
                    floor: bigint;
                    principalAmount: bigint;
                    lender: `0x${string}`;
                    accruedInterest: bigint;
                    startTime: bigint;
                    aprBps: bigint;
                } & {
                    loanIndex: number;
                };
                refinancingPrincipal: bigint;
            }[];
        }[]

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            results: {
                renegotiationId: bigint;
                oldLoanId: bigint;
                newLoanId: bigint;
                loan: {
                    borrower: `0x${string}`;
                    nftCollateralTokenId: bigint;
                    nftCollateralAddress: `0x${string}`;
                    principalAddress: `0x${string}`;
                    principalAmount: bigint;
                    startTime: bigint;
                    duration: bigint;
                    tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                    protocolFee: bigint;
                };
                fee: bigint;
            }[];
        }>);
    }>

  • Parameters

    • __namedParameters: {
          offer: {
              renegotiationId: bigint;
              loanId: bigint;
              lender: `0x${string}`;
              fee: bigint;
              trancheIndex: readonly bigint[];
              principalAmount: bigint;
              aprBps: bigint;
              expirationTime: bigint;
              duration: bigint;
          };
          signature: `0x${string}`;
          loan: LoanV6;
      }
      • offer: {
            renegotiationId: bigint;
            loanId: bigint;
            lender: `0x${string}`;
            fee: bigint;
            trancheIndex: readonly bigint[];
            principalAmount: bigint;
            aprBps: bigint;
            expirationTime: bigint;
            duration: bigint;
        }
        • renegotiationId: bigint
        • loanId: bigint
        • lender: `0x${string}`
        • fee: bigint
        • trancheIndex: readonly bigint[]
        • principalAmount: bigint
        • aprBps: bigint
        • expirationTime: bigint
        • duration: bigint
      • signature: `0x${string}`
      • loan: LoanV6

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            loan: {
                contractAddress: `0x${string}`;
                borrower: `0x${string}`;
                nftCollateralTokenId: bigint;
                nftCollateralAddress: `0x${string}`;
                principalAddress: `0x${string}`;
                principalAmount: bigint;
                startTime: bigint;
                duration: bigint;
                tranche: readonly {
                    loanId: bigint;
                    floor: bigint;
                    principalAmount: bigint;
                    lender: `0x${string}`;
                    accruedInterest: bigint;
                    startTime: bigint;
                    aprBps: bigint;
                }[];
                protocolFee: bigint;
                id: string;
            };
            loanId: bigint;
            renegotiationId: string;
        }>);
    }>

  • Parameters

    • __namedParameters: {
          offer: {
              renegotiationId: bigint;
              loanId: bigint;
              lender: `0x${string}`;
              fee: bigint;
              trancheIndex: readonly bigint[];
              principalAmount: bigint;
              aprBps: bigint;
              expirationTime: bigint;
              duration: bigint;
          };
          loan: LoanV6;
      }
      • offer: {
            renegotiationId: bigint;
            loanId: bigint;
            lender: `0x${string}`;
            fee: bigint;
            trancheIndex: readonly bigint[];
            principalAmount: bigint;
            aprBps: bigint;
            expirationTime: bigint;
            duration: bigint;
        }
        • renegotiationId: bigint
        • loanId: bigint
        • lender: `0x${string}`
        • fee: bigint
        • trancheIndex: readonly bigint[]
        • principalAmount: bigint
        • aprBps: bigint
        • expirationTime: bigint
        • duration: bigint
      • loan: LoanV6

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            loan: {
                contractAddress: `0x${string}`;
                borrower: `0x${string}`;
                nftCollateralTokenId: bigint;
                nftCollateralAddress: `0x${string}`;
                principalAddress: `0x${string}`;
                principalAmount: bigint;
                startTime: bigint;
                duration: bigint;
                tranche: readonly {
                    loanId: bigint;
                    floor: bigint;
                    principalAmount: bigint;
                    lender: `0x${string}`;
                    accruedInterest: bigint;
                    startTime: bigint;
                    aprBps: bigint;
                }[];
                protocolFee: bigint;
                id: string;
            };
            loanId: bigint;
            renegotiationId: string;
        }>);
    }>

  • Parameters

    • __namedParameters: {
          offer: {
              renegotiationId: bigint;
              loanId: bigint;
              lender: `0x${string}`;
              fee: bigint;
              trancheIndex: readonly bigint[];
              principalAmount: bigint;
              aprBps: bigint;
              expirationTime: bigint;
              duration: bigint;
          };
          signature: `0x${string}`;
          loan: LoanV6;
      }
      • offer: {
            renegotiationId: bigint;
            loanId: bigint;
            lender: `0x${string}`;
            fee: bigint;
            trancheIndex: readonly bigint[];
            principalAmount: bigint;
            aprBps: bigint;
            expirationTime: bigint;
            duration: bigint;
        }
        • renegotiationId: bigint
        • loanId: bigint
        • lender: `0x${string}`
        • fee: bigint
        • trancheIndex: readonly bigint[]
        • principalAmount: bigint
        • aprBps: bigint
        • expirationTime: bigint
        • duration: bigint
      • signature: `0x${string}`
      • loan: LoanV6

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            loan: {
                contractAddress: `0x${string}`;
                borrower: `0x${string}`;
                nftCollateralTokenId: bigint;
                nftCollateralAddress: `0x${string}`;
                principalAddress: `0x${string}`;
                principalAmount: bigint;
                startTime: bigint;
                duration: bigint;
                tranche: readonly {
                    loanId: bigint;
                    floor: bigint;
                    principalAmount: bigint;
                    lender: `0x${string}`;
                    accruedInterest: bigint;
                    startTime: bigint;
                    aprBps: bigint;
                }[];
                protocolFee: bigint;
                id: string;
            };
            loanId: bigint;
            renegotiationId: string;
        }>);
    }>

  • Parameters

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            loan: {
                contractAddress: `0x${string}`;
                borrower: `0x${string}`;
                nftCollateralTokenId: bigint;
                nftCollateralAddress: `0x${string}`;
                principalAddress: `0x${string}`;
                principalAmount: bigint;
                startTime: bigint;
                duration: bigint;
                tranche: readonly {
                    loanId: bigint;
                    floor: bigint;
                    principalAmount: bigint;
                    lender: `0x${string}`;
                    accruedInterest: bigint;
                    startTime: bigint;
                    aprBps: bigint;
                }[];
                protocolFee: bigint;
                id: string;
            };
            loanId: bigint;
            offerIds: string[];
        }>);
    }>

  • Parameters

    • delegations: {
          loan: LoanV6;
          loanId: bigint;
          to: `0x${string}`;
          rights?: `0x${string}`;
          enable: boolean;
      }[]

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            results: {
                loanId: bigint;
                delegate: `0x${string}`;
                value: boolean;
            }[];
        }>);
    }>

  • Parameters

    • __namedParameters: {
          loan: LoanV6;
          loanId: bigint;
          to: `0x${string}`;
          rights?: `0x${string}`;
          enable: boolean;
      }
      • loan: LoanV6
      • loanId: bigint
      • to: `0x${string}`
      • Optional rights?: `0x${string}`
      • enable: boolean

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            loan: {
                loanId: bigint;
                contractAddress: `0x${string}`;
                borrower: `0x${string}`;
                nftCollateralTokenId: bigint;
                nftCollateralAddress: `0x${string}`;
                principalAddress: `0x${string}`;
                principalAmount: bigint;
                startTime: bigint | bigint & Date;
                duration: bigint;
                tranche: readonly {
                    loanId: bigint;
                    floor: bigint;
                    principalAmount: bigint;
                    lender: `0x${string}`;
                    accruedInterest: bigint;
                    startTime: bigint;
                    aprBps: bigint;
                }[];
                protocolFee: bigint;
                contractStartTime: bigint | Date;
            };
            value: boolean;
        }>);
    }>

  • Parameters

    • __namedParameters: {
          to: `0x${string}`;
          collection: `0x${string}`;
          tokenId: bigint;
      }
      • to: `0x${string}`
      • collection: `0x${string}`
      • tokenId: bigint

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            delegate: `0x${string}`;
            collection: `0x${string}`;
            tokenId: bigint;
        }>);
    }>

  • Parameters

    • __namedParameters: {
          loan: LoanV6;
          loanId: bigint;
      }

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            loanId: bigint;
        }>);
    }>

Properties

abi: 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";
}]
address: `0x${string}`
bcClient: {}

Type declaration

    wallet: {}

    Type declaration

      contract: GetContractReturnType<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";
      }], {} | {}>
      safeContractWrite: {
          transferOwnership: ((args, options?) => Promise<`0x${string}`>);
          liquidateLoan: ((args, options?) => Promise<`0x${string}`>);
          onERC721Received: ((args, options?) => Promise<`0x${string}`>);
          addWhitelistedCallbackContract: ((args, options?) => Promise<`0x${string}`>);
          cancelAllOffers: ((args, options?) => Promise<`0x${string}`>);
          cancelOffer: ((args, options?) => Promise<`0x${string}`>);
          cancelRenegotiationOffer: ((args, options?) => Promise<`0x${string}`>);
          loanLiquidated: ((args, options?) => Promise<`0x${string}`>);
          removeWhitelistedCallbackContract: ((args, options?) => Promise<`0x${string}`>);
          setProtocolFee: ((args, options?) => Promise<`0x${string}`>);
          updateLiquidationAuctionDuration: ((args, options?) => Promise<`0x${string}`>);
          updateLiquidationContract: ((args, options?) => Promise<`0x${string}`>);
          updateProtocolFee: ((args, options?) => Promise<`0x${string}`>);
          emitLoan: ((args, options?) => Promise<`0x${string}`>);
          refinanceFull: ((args, options?) => Promise<`0x${string}`>);
          refinancePartial: ((args, options?) => Promise<`0x${string}`>);
          repayLoan: ((args, options?) => Promise<`0x${string}`>);
          multicall: ((args, options?) => Promise<`0x${string}`>);
          delegate: ((args, options?) => Promise<`0x${string}`>);
          revokeDelegate: ((args, options?) => Promise<`0x${string}`>);
          executeFlashAction: ((args, options?) => Promise<`0x${string}`>);
          setFlashActionContract: ((args, options?) => Promise<`0x${string}`>);
          setMinLockPeriod: ((args, options?) => Promise<`0x${string}`>);
          requestTransferOwner: ((args, options?) => Promise<`0x${string}`>);
          updateMinImprovementApr: ((args, options?) => Promise<`0x${string}`>);
          addNewTranche: ((args, options?) => Promise<`0x${string}`>);
          refinanceFromLoanExecutionData: ((args, options?) => Promise<`0x${string}`>);
      }

      Type declaration

      • transferOwnership: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: undefined | readonly [] | readonly [`0x${string}`]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • liquidateLoan: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }] | readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }] & readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • onERC721Received: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [`0x${string}`, `0x${string}`, bigint, `0x${string}`]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • addWhitelistedCallbackContract: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [`0x${string}`]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • cancelAllOffers: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [bigint]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • cancelOffer: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [bigint]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • cancelRenegotiationOffer: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [bigint]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • loanLiquidated: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }] | readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }] & readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • removeWhitelistedCallbackContract: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [`0x${string}`]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • setProtocolFee: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: undefined | readonly []
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • updateLiquidationAuctionDuration: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [number]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • updateLiquidationContract: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [`0x${string}`]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • updateProtocolFee: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [{
                  recipient: `0x${string}`;
                  fraction: bigint;
              }] | readonly [{
                  recipient: `0x${string}`;
                  fraction: bigint;
              }] & readonly [{
                  recipient: `0x${string}`;
                  fraction: bigint;
              }]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • emitLoan: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [{
                  executionData: { offerExecution: readonly { offer: { offerId: bigint; lender: `0x${string}`; fee: bigint; capacity: bigint; nftCollateralAddress: `0x${string}`; nftCollateralTokenId: bigint; principalAddress: `0x${string}`; principalAmount: bigint; aprBps: bigint; expirationTime: bigint; duration: bigint; maxSeniorRepayment: bigint; validators: readonly { validator: `0x${string}`; arguments: `0x${string}`; }[]; }; amount: bigint; lenderOfferSignature: `0x${string}`; }[]; tokenId: bigint; duration: bigint; expirationTime: bigint; principalReceiver: `0x${string}`; callbackData: `0x${string}`; };
                  borrower: `0x${string}`;
                  borrowerOfferSignature: `0x${string}`;
              }] | readonly [{
                  executionData: { offerExecution: readonly { offer: { offerId: bigint; lender: `0x${string}`; fee: bigint; capacity: bigint; nftCollateralAddress: `0x${string}`; nftCollateralTokenId: bigint; principalAddress: `0x${string}`; principalAmount: bigint; aprBps: bigint; expirationTime: bigint; duration: bigint; maxSeniorRepayment: bigint; validators: readonly { validator: `0x${string}`; arguments: `0x${string}`; }[]; }; amount: bigint; lenderOfferSignature: `0x${string}`; }[]; tokenId: bigint; duration: bigint; expirationTime: bigint; principalReceiver: `0x${string}`; callbackData: `0x${string}`; };
                  borrower: `0x${string}`;
                  borrowerOfferSignature: `0x${string}`;
              }] & readonly [{
                  executionData: { offerExecution: readonly { offer: { offerId: bigint; lender: `0x${string}`; fee: bigint; capacity: bigint; nftCollateralAddress: `0x${string}`; nftCollateralTokenId: bigint; principalAddress: `0x${string}`; principalAmount: bigint; aprBps: bigint; expirationTime: bigint; duration: bigint; maxSeniorRepayment: bigint; validators: readonly { validator: `0x${string}`; arguments: `0x${string}`; }[]; }; amount: bigint; lenderOfferSignature: `0x${string}`; }[]; tokenId: bigint; duration: bigint; expirationTime: bigint; principalReceiver: `0x${string}`; callbackData: `0x${string}`; };
                  borrower: `0x${string}`;
                  borrowerOfferSignature: `0x${string}`;
              }]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • refinanceFull: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  trancheIndex: readonly bigint[];
                  principalAmount: bigint;
                  aprBps: bigint;
                  expirationTime: bigint;
                  duration: bigint;
              }, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, `0x${string}`] | readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  trancheIndex: readonly bigint[];
                  principalAmount: bigint;
                  aprBps: bigint;
                  expirationTime: bigint;
                  duration: bigint;
              }, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, `0x${string}`] & readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  trancheIndex: readonly bigint[];
                  principalAmount: bigint;
                  aprBps: bigint;
                  expirationTime: bigint;
                  duration: bigint;
              }, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, `0x${string}`]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • refinancePartial: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  trancheIndex: readonly bigint[];
                  principalAmount: bigint;
                  aprBps: bigint;
                  expirationTime: bigint;
                  duration: bigint;
              }, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }] | readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  trancheIndex: readonly bigint[];
                  principalAmount: bigint;
                  aprBps: bigint;
                  expirationTime: bigint;
                  duration: bigint;
              }, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }] & readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  trancheIndex: readonly bigint[];
                  principalAmount: bigint;
                  aprBps: bigint;
                  expirationTime: bigint;
                  duration: bigint;
              }, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • repayLoan: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [{
                  data: { loanId: bigint; callbackData: `0x${string}`; shouldDelegate: Widen<boolean>; };
                  loan: { borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; };
                  borrowerSignature: `0x${string}`;
              }] | readonly [{
                  data: { loanId: bigint; callbackData: `0x${string}`; shouldDelegate: boolean; };
                  loan: { borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; };
                  borrowerSignature: `0x${string}`;
              }] & readonly [{
                  data: { loanId: bigint; callbackData: `0x${string}`; shouldDelegate: Widen<boolean>; };
                  loan: { borrower: `0x${string}`; nftCollateralTokenId: bigint; nftCollateralAddress: `0x${string}`; principalAddress: `0x${string}`; principalAmount: bigint; startTime: bigint; duration: bigint; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; };
                  borrowerSignature: `0x${string}`;
              }]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • multicall: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [readonly `0x${string}`[]] | readonly [readonly `0x${string}`[]] & readonly [readonly `0x${string}`[]]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • delegate: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, `0x${string}`, `0x${string}`, Widen<boolean>] | readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, `0x${string}`, `0x${string}`, boolean] & readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, `0x${string}`, `0x${string}`, Widen<boolean>]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • revokeDelegate: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [`0x${string}`, `0x${string}`, bigint]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • executeFlashAction: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, `0x${string}`, `0x${string}`] | readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, `0x${string}`, `0x${string}`] & readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, `0x${string}`, `0x${string}`]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • setFlashActionContract: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [`0x${string}`]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • setMinLockPeriod: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [bigint]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • requestTransferOwner: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [`0x${string}`]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • updateMinImprovementApr: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [bigint]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • addNewTranche: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  trancheIndex: readonly bigint[];
                  principalAmount: bigint;
                  aprBps: bigint;
                  expirationTime: bigint;
                  duration: bigint;
              }, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, `0x${string}`] | readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  trancheIndex: readonly bigint[];
                  principalAmount: bigint;
                  aprBps: bigint;
                  expirationTime: bigint;
                  duration: bigint;
              }, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, `0x${string}`] & readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  trancheIndex: readonly bigint[];
                  principalAmount: bigint;
                  aprBps: bigint;
                  expirationTime: bigint;
                  duration: bigint;
              }, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, `0x${string}`]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      • refinanceFromLoanExecutionData: ((args, options?) => Promise<`0x${string}`>)
          • (args, options?): Promise<`0x${string}`>
          • Parameters

            • args: readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, {
                  executionData: { offerExecution: readonly { offer: { offerId: bigint; lender: `0x${string}`; fee: bigint; capacity: bigint; nftCollateralAddress: `0x${string}`; nftCollateralTokenId: bigint; principalAddress: `0x${string}`; principalAmount: bigint; aprBps: bigint; expirationTime: bigint; duration: bigint; maxSeniorRepayment: bigint; validators: readonly { validator: `0x${string}`; arguments: `0x${string}`; }[]; }; amount: bigint; lenderOfferSignature: `0x${string}`; }[]; tokenId: bigint; duration: bigint; expirationTime: bigint; principalReceiver: `0x${string}`; callbackData: `0x${string}`; };
                  borrower: `0x${string}`;
                  borrowerOfferSignature: `0x${string}`;
              }] | readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, {
                  executionData: { offerExecution: readonly { offer: { offerId: bigint; lender: `0x${string}`; fee: bigint; capacity: bigint; nftCollateralAddress: `0x${string}`; nftCollateralTokenId: bigint; principalAddress: `0x${string}`; principalAmount: bigint; aprBps: bigint; expirationTime: bigint; duration: bigint; maxSeniorRepayment: bigint; validators: readonly { validator: `0x${string}`; arguments: `0x${string}`; }[]; }; amount: bigint; lenderOfferSignature: `0x${string}`; }[]; tokenId: bigint; duration: bigint; expirationTime: bigint; principalReceiver: `0x${string}`; callbackData: `0x${string}`; };
                  borrower: `0x${string}`;
                  borrowerOfferSignature: `0x${string}`;
              }] & readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                  protocolFee: bigint;
              }, {
                  executionData: { offerExecution: readonly { offer: { offerId: bigint; lender: `0x${string}`; fee: bigint; capacity: bigint; nftCollateralAddress: `0x${string}`; nftCollateralTokenId: bigint; principalAddress: `0x${string}`; principalAmount: bigint; aprBps: bigint; expirationTime: bigint; duration: bigint; maxSeniorRepayment: bigint; validators: readonly { validator: `0x${string}`; arguments: `0x${string}`; }[]; }; amount: bigint; lenderOfferSignature: `0x${string}`; }[]; tokenId: bigint; duration: bigint; expirationTime: bigint; principalReceiver: `0x${string}`; callbackData: `0x${string}`; };
                  borrower: `0x${string}`;
                  borrowerOfferSignature: `0x${string}`;
              }]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

            Returns Promise<`0x${string}`>

      parseEventLogs: (<TFunctionName>(eventName, logs) => ParseEventLogsReturnType<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";
      }], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "AllOffersCancelled" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "RevokeDelegate" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "MinLockPeriodUpdated" | "MinAprImprovementUpdated" | "MinBidLiquidationUpdated" | "TransferOwnerRequested" | "LoanRefinancedFromNewOffers")[]
          ? TFunctionName[number]
          : TFunctionName>)

      Type declaration

        • <TFunctionName>(eventName, logs): ParseEventLogsReturnType<readonly [{
              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";
          }], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "AllOffersCancelled" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "RevokeDelegate" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "MinLockPeriodUpdated" | "MinAprImprovementUpdated" | "MinBidLiquidationUpdated" | "TransferOwnerRequested" | "LoanRefinancedFromNewOffers")[]
              ? TFunctionName[number]
              : TFunctionName>
        • Type Parameters

          • TFunctionName extends "OwnershipTransferred" | "AllOffersCancelled" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "RevokeDelegate" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "MinLockPeriodUpdated" | "MinAprImprovementUpdated" | "MinBidLiquidationUpdated" | "TransferOwnerRequested" | "LoanRefinancedFromNewOffers"

          Parameters

          • eventName: TFunctionName
          • logs: Log<bigint, number, false>[]

          Returns ParseEventLogsReturnType<readonly [{
              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";
          }], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "AllOffersCancelled" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "RevokeDelegate" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "MinLockPeriodUpdated" | "MinAprImprovementUpdated" | "MinBidLiquidationUpdated" | "TransferOwnerRequested" | "LoanRefinancedFromNewOffers")[]
              ? TFunctionName[number]
              : TFunctionName>