Hierarchy

Constructors

  • Parameters

    • __namedParameters: {
          walletClient: {};
          address: `0x${string}`;
          version: "3" | "3.1" | "3.2";
          publicClient?: {};
      }
      • walletClient: {}
        • address: `0x${string}`
        • version: "3" | "3.1" | "3.2"
        • Optional publicClient?: {}

        Returns MslV6

      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}`; })[];
              } | {
                  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}`; })[];
                  lenderRefinanceDisabled: boolean;
                  borrower: `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}`; })[];
                lenderRefinanceDisabled: boolean;
                borrower: `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: {
              structToSign: {
                  loanId: bigint;
                  callbackData: `0x${string}`;
                  shouldDelegate: boolean;
              };
          }
          • structToSign: {
                loanId: bigint;
                callbackData: `0x${string}`;
                shouldDelegate: boolean;
            }
            • loanId: bigint
            • callbackData: `0x${string}`
            • shouldDelegate: boolean

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

      • Type Parameters

        • T extends {
              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}`;
          } | {
              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}`; }[]; lenderRefinanceDisabled: boolean; borrower: `0x${string}`; }; amount: bigint; lenderOfferSignature: `0x${string}`; })[];
              loanId: bigint;
              nftCollateralAddress: `0x${string}`;
              tokenId: bigint;
              duration: bigint;
              expirationTime: bigint;
              principalReceiver: `0x${string}`;
              callbackData: `0x${string}`;
          } | {
              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}`; })[];
              loanId: bigint;
              nftCollateralAddress: `0x${string}`;
              tokenId: bigint;
              duration: bigint;
              expirationTime: bigint;
              principalReceiver: `0x${string}`;
              callbackData: `0x${string}`;
          }

        Parameters

        • __namedParameters: {
              structToSign: T;
          }
          • structToSign: T

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

      • Parameters

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

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

      • Parameters

        • __namedParameters: {
              ids: bigint[];
          }
          • ids: bigint[]

        Returns Promise<{
            txHash: `0x${string}`;
            waitTxInBlock: (() => Promise<{
                events: ({
                    lender: `0x${string}`;
                    offerId: bigint;
                } | {
                    lender: `0x${string}`;
                    offerId: bigint;
                } | {
                    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;
            } | {
                lender: `0x${string}`;
                renegotiationId: bigint;
            } | {
                lender: `0x${string}`;
                renegotiationId: bigint;
            }>);
        }>

      • 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;
                } | {
                    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;
                } | {
                    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;
                    lenderRefinanceDisabled: boolean;
                    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;
                    _rights: `0x${string}`;
                })[];
                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;
                } | {
                    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;
                } | {
                    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;
                    lenderRefinanceDisabled: boolean;
                    id: string;
                };
                loanId: bigint;
            }>);
        }>

      • Parameters

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

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

      • Parameters

        • __namedParameters: {
              loan: Object;
          }
          • loan: Object

        Returns Promise<boolean>

      • 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;
                } | {
                    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;
                } | {
                    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;
                        lenderRefinanceDisabled: boolean;
                    };
                    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;
                } | {
                    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;
                } | {
                    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;
                    lenderRefinanceDisabled: boolean;
                    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;
                } | {
                    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;
                } | {
                    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;
                    lenderRefinanceDisabled: boolean;
                    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;
                } | {
                    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;
                } | {
                    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;
                    lenderRefinanceDisabled: boolean;
                    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;
                } | {
                    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;
                } | {
                    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;
                    lenderRefinanceDisabled: boolean;
                    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}`;
                    _rights: `0x${string}`;
                    value: boolean;
                } | {
                    loanId: bigint;
                    delegate: `0x${string}`;
                    _rights: `0x${string}`;
                    value: boolean;
                } | {
                    loanId: bigint;
                    delegate: `0x${string}`;
                    _rights: `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;
                _rights: `0x${string}`;
            } | {
                delegate: `0x${string}`;
                collection: `0x${string}`;
                tokenId: bigint;
                _rights: `0x${string}`;
            } | {
                delegate: `0x${string}`;
                collection: `0x${string}`;
                tokenId: bigint;
                _rights: `0x${string}`;
            }>);
        }>

      • Parameters

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

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

      • Parameters

        • calldata: `0x${string}`

        Returns {
            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}`;
        } | {
            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}`;
        } | {
            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; lenderRefinanceDisabled: boolean; };
            borrowerSignature: `0x${string}`;
        }

      • Returns Promise<{
            recipient: `0x${string}`;
            fraction: bigint;
        } | {
            recipient: `0x${string}`;
            fraction: bigint;
        } | {
            recipient: `0x${string}`;
            fraction: bigint;
        }>

      • Parameters

        • __namedParameters: {
              repayArgs: RepayArgs;
              withSignature: boolean;
          }

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

      • Parameters

        • data: `0x${string}`
        • Optional value: bigint

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

      Properties

      version: "3" | "3.1" | "3.2"
      abi: readonly [{
          inputs: readonly [{
              internalType: "address";
              name: "loanLiquidator";
              type: "address";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "recipient";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "fraction";
                  type: "uint256";
              }];
              internalType: "struct WithProtocolFee.ProtocolFee";
              name: "protocolFee";
              type: "tuple";
          }, {
              internalType: "address";
              name: "currencyManager";
              type: "address";
          }, {
              internalType: "address";
              name: "collectionManager";
              type: "address";
          }, {
              internalType: "uint256";
              name: "maxTranches";
              type: "uint256";
          }, {
              internalType: "uint256";
              name: "minLockPeriod";
              type: "uint256";
          }, {
              internalType: "address";
              name: "delegateRegistry";
              type: "address";
          }, {
              internalType: "address";
              name: "loanManagerRegistry";
              type: "address";
          }, {
              internalType: "address";
              name: "flashActionContract";
              type: "address";
          }, {
              internalType: "uint256";
              name: "minWaitTime";
              type: "uint256";
          }];
          stateMutability: "nonpayable";
          type: "constructor";
      }, {
          inputs: readonly [];
          name: "DOMAIN_SEPARATOR";
          outputs: readonly [{
              internalType: "bytes32";
              name: "";
              type: "bytes32";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "FEE_UPDATE_NOTICE";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "INITIAL_DOMAIN_SEPARATOR";
          outputs: readonly [{
              internalType: "bytes32";
              name: "";
              type: "bytes32";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "MAX_AUCTION_DURATION";
          outputs: readonly [{
              internalType: "uint48";
              name: "";
              type: "uint48";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "MIN_AUCTION_DURATION";
          outputs: readonly [{
              internalType: "uint48";
              name: "";
              type: "uint48";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "MIN_BID_LIQUIDATION";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "MIN_WAIT_TIME";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "VERSION";
          outputs: readonly [{
              internalType: "bytes";
              name: "";
              type: "bytes";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              components: readonly [{
                  internalType: "uint256";
                  name: "renegotiationId";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "lender";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "fee";
                  type: "uint256";
              }, {
                  internalType: "uint256[]";
                  name: "trancheIndex";
                  type: "uint256[]";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "aprBps";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "expirationTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.RenegotiationOffer";
              name: "_renegotiationOffer";
              type: "tuple";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.Loan";
              name: "_loan";
              type: "tuple";
          }, {
              internalType: "bytes";
              name: "_renegotiationOfferSignature";
              type: "bytes";
          }];
          name: "addNewTranche";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.Loan";
              name: "";
              type: "tuple";
          }];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "_contract";
              type: "address";
          }];
          name: "addWhitelistedCallbackContract";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_minOfferId";
              type: "uint256";
          }];
          name: "cancelAllOffers";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_offerId";
              type: "uint256";
          }];
          name: "cancelOffer";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_renegotiationId";
              type: "uint256";
          }];
          name: "cancelRenegotiationOffer";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_loanId";
              type: "uint256";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.Loan";
              name: "loan";
              type: "tuple";
          }, {
              internalType: "address";
              name: "_delegate";
              type: "address";
          }, {
              internalType: "bytes32";
              name: "_rights";
              type: "bytes32";
          }, {
              internalType: "bool";
              name: "_value";
              type: "bool";
          }];
          name: "delegate";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              components: readonly [{
                  components: readonly [{
                      components: readonly [{
                          components: readonly [{
                              internalType: "uint256";
                              name: "offerId";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "fee";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "capacity";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "nftCollateralAddress";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "nftCollateralTokenId";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "principalAddress";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "expirationTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "duration";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "maxSeniorRepayment";
                              type: "uint256";
                          }, {
                              components: readonly [{
                                  internalType: "address";
                                  name: "validator";
                                  type: "address";
                              }, {
                                  internalType: "bytes";
                                  name: "arguments";
                                  type: "bytes";
                              }];
                              internalType: "struct IBaseLoan.OfferValidator[]";
                              name: "validators";
                              type: "tuple[]";
                          }];
                          internalType: "struct IMultiSourceLoan.LoanOffer";
                          name: "offer";
                          type: "tuple";
                      }, {
                          internalType: "uint256";
                          name: "amount";
                          type: "uint256";
                      }, {
                          internalType: "bytes";
                          name: "lenderOfferSignature";
                          type: "bytes";
                      }];
                      internalType: "struct IMultiSourceLoan.OfferExecution[]";
                      name: "offerExecution";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "tokenId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "expirationTime";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "principalReceiver";
                      type: "address";
                  }, {
                      internalType: "bytes";
                      name: "callbackData";
                      type: "bytes";
                  }];
                  internalType: "struct IMultiSourceLoan.ExecutionData";
                  name: "executionData";
                  type: "tuple";
              }, {
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "borrowerOfferSignature";
                  type: "bytes";
              }];
              internalType: "struct IMultiSourceLoan.LoanExecutionData";
              name: "_loanExecutionData";
              type: "tuple";
          }];
          name: "emitLoan";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.Loan";
              name: "";
              type: "tuple";
          }];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_loanId";
              type: "uint256";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.Loan";
              name: "_loan";
              type: "tuple";
          }, {
              internalType: "address";
              name: "_target";
              type: "address";
          }, {
              internalType: "bytes";
              name: "_data";
              type: "bytes";
          }];
          name: "executeFlashAction";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getCollectionManager";
          outputs: readonly [{
              internalType: "address";
              name: "";
              type: "address";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getCurrencyManager";
          outputs: readonly [{
              internalType: "address";
              name: "";
              type: "address";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getDelegateRegistry";
          outputs: readonly [{
              internalType: "address";
              name: "";
              type: "address";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getFlashActionContract";
          outputs: readonly [{
              internalType: "address";
              name: "";
              type: "address";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getLiquidationAuctionDuration";
          outputs: readonly [{
              internalType: "uint48";
              name: "";
              type: "uint48";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getLiquidator";
          outputs: readonly [{
              internalType: "address";
              name: "";
              type: "address";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_loanId";
              type: "uint256";
          }];
          name: "getLoanHash";
          outputs: readonly [{
              internalType: "bytes32";
              name: "";
              type: "bytes32";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getLoanManagerRegistry";
          outputs: readonly [{
              internalType: "contract ILoanManagerRegistry";
              name: "";
              type: "address";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getMaxTranches";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getMinImprovementApr";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getMinLockPeriod";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getPendingProtocolFee";
          outputs: readonly [{
              components: readonly [{
                  internalType: "address";
                  name: "recipient";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "fraction";
                  type: "uint256";
              }];
              internalType: "struct WithProtocolFee.ProtocolFee";
              name: "";
              type: "tuple";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getPendingProtocolFeeSetTime";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getProtocolFee";
          outputs: readonly [{
              components: readonly [{
                  internalType: "address";
                  name: "recipient";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "fraction";
                  type: "uint256";
              }];
              internalType: "struct WithProtocolFee.ProtocolFee";
              name: "";
              type: "tuple";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "getTotalLoansIssued";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "_lender";
              type: "address";
          }, {
              internalType: "uint256";
              name: "_offerId";
              type: "uint256";
          }];
          name: "getUsedCapacity";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "user";
              type: "address";
          }, {
              internalType: "uint256";
              name: "offerId";
              type: "uint256";
          }];
          name: "isOfferCancelled";
          outputs: readonly [{
              internalType: "bool";
              name: "notActive";
              type: "bool";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "user";
              type: "address";
          }, {
              internalType: "uint256";
              name: "renegotiationIf";
              type: "uint256";
          }];
          name: "isRenegotiationOfferCancelled";
          outputs: readonly [{
              internalType: "bool";
              name: "notActive";
              type: "bool";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "_contract";
              type: "address";
          }];
          name: "isWhitelistedCallbackContract";
          outputs: readonly [{
              internalType: "bool";
              name: "";
              type: "bool";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_loanId";
              type: "uint256";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.Loan";
              name: "_loan";
              type: "tuple";
          }];
          name: "liquidateLoan";
          outputs: readonly [{
              internalType: "bytes";
              name: "";
              type: "bytes";
          }];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_loanId";
              type: "uint256";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.Loan";
              name: "_loan";
              type: "tuple";
          }];
          name: "loanLiquidated";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "user";
              type: "address";
          }];
          name: "minOfferId";
          outputs: readonly [{
              internalType: "uint256";
              name: "minOfferId";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "bytes[]";
              name: "data";
              type: "bytes[]";
          }];
          name: "multicall";
          outputs: readonly [{
              internalType: "bytes[]";
              name: "results";
              type: "bytes[]";
          }];
          stateMutability: "payable";
          type: "function";
      }, {
          inputs: readonly [];
          name: "name";
          outputs: readonly [{
              internalType: "string";
              name: "";
              type: "string";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "";
              type: "address";
          }, {
              internalType: "address";
              name: "";
              type: "address";
          }, {
              internalType: "uint256";
              name: "";
              type: "uint256";
          }, {
              internalType: "bytes";
              name: "";
              type: "bytes";
          }];
          name: "onERC721Received";
          outputs: readonly [{
              internalType: "bytes4";
              name: "";
              type: "bytes4";
          }];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [];
          name: "owner";
          outputs: readonly [{
              internalType: "address";
              name: "";
              type: "address";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "pendingOwner";
          outputs: readonly [{
              internalType: "address";
              name: "";
              type: "address";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "pendingOwnerTime";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_loanId";
              type: "uint256";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.Loan";
              name: "_loan";
              type: "tuple";
          }, {
              components: readonly [{
                  components: readonly [{
                      components: readonly [{
                          components: readonly [{
                              internalType: "uint256";
                              name: "offerId";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "fee";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "capacity";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "nftCollateralAddress";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "nftCollateralTokenId";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "principalAddress";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "expirationTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "duration";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "maxSeniorRepayment";
                              type: "uint256";
                          }, {
                              components: readonly [{
                                  internalType: "address";
                                  name: "validator";
                                  type: "address";
                              }, {
                                  internalType: "bytes";
                                  name: "arguments";
                                  type: "bytes";
                              }];
                              internalType: "struct IBaseLoan.OfferValidator[]";
                              name: "validators";
                              type: "tuple[]";
                          }];
                          internalType: "struct IMultiSourceLoan.LoanOffer";
                          name: "offer";
                          type: "tuple";
                      }, {
                          internalType: "uint256";
                          name: "amount";
                          type: "uint256";
                      }, {
                          internalType: "bytes";
                          name: "lenderOfferSignature";
                          type: "bytes";
                      }];
                      internalType: "struct IMultiSourceLoan.OfferExecution[]";
                      name: "offerExecution";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "tokenId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "expirationTime";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "principalReceiver";
                      type: "address";
                  }, {
                      internalType: "bytes";
                      name: "callbackData";
                      type: "bytes";
                  }];
                  internalType: "struct IMultiSourceLoan.ExecutionData";
                  name: "executionData";
                  type: "tuple";
              }, {
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "borrowerOfferSignature";
                  type: "bytes";
              }];
              internalType: "struct IMultiSourceLoan.LoanExecutionData";
              name: "_loanExecutionData";
              type: "tuple";
          }];
          name: "refinanceFromLoanExecutionData";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.Loan";
              name: "";
              type: "tuple";
          }];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              components: readonly [{
                  internalType: "uint256";
                  name: "renegotiationId";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "lender";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "fee";
                  type: "uint256";
              }, {
                  internalType: "uint256[]";
                  name: "trancheIndex";
                  type: "uint256[]";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "aprBps";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "expirationTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.RenegotiationOffer";
              name: "_renegotiationOffer";
              type: "tuple";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.Loan";
              name: "_loan";
              type: "tuple";
          }, {
              internalType: "bytes";
              name: "_renegotiationOfferSignature";
              type: "bytes";
          }];
          name: "refinanceFull";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.Loan";
              name: "";
              type: "tuple";
          }];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              components: readonly [{
                  internalType: "uint256";
                  name: "renegotiationId";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "lender";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "fee";
                  type: "uint256";
              }, {
                  internalType: "uint256[]";
                  name: "trancheIndex";
                  type: "uint256[]";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "aprBps";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "expirationTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.RenegotiationOffer";
              name: "_renegotiationOffer";
              type: "tuple";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.Loan";
              name: "_loan";
              type: "tuple";
          }];
          name: "refinancePartial";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              internalType: "struct IMultiSourceLoan.Loan";
              name: "";
              type: "tuple";
          }];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "_contract";
              type: "address";
          }];
          name: "removeWhitelistedCallbackContract";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              components: readonly [{
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "bytes";
                      name: "callbackData";
                      type: "bytes";
                  }, {
                      internalType: "bool";
                      name: "shouldDelegate";
                      type: "bool";
                  }];
                  internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                  name: "data";
                  type: "tuple";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "loan";
                  type: "tuple";
              }, {
                  internalType: "bytes";
                  name: "borrowerSignature";
                  type: "bytes";
              }];
              internalType: "struct IMultiSourceLoan.LoanRepaymentData";
              name: "_repaymentData";
              type: "tuple";
          }];
          name: "repayLoan";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "_newOwner";
              type: "address";
          }];
          name: "requestTransferOwner";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "_delegate";
              type: "address";
          }, {
              internalType: "address";
              name: "_collection";
              type: "address";
          }, {
              internalType: "uint256";
              name: "_tokenId";
              type: "uint256";
          }, {
              internalType: "bytes32";
              name: "_rights";
              type: "bytes32";
          }];
          name: "revokeDelegate";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "_newFlashActionContract";
              type: "address";
          }];
          name: "setFlashActionContract";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "__minLockPeriod";
              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 [{
              internalType: "address";
              name: "newOwner";
              type: "address";
          }];
          name: "transferOwnership";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint48";
              name: "_newDuration";
              type: "uint48";
          }];
          name: "updateLiquidationAuctionDuration";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "__loanLiquidator";
              type: "address";
          }];
          name: "updateLiquidationContract";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_newMinimum";
              type: "uint256";
          }];
          name: "updateMinImprovementApr";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              components: readonly [{
                  internalType: "address";
                  name: "recipient";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "fraction";
                  type: "uint256";
              }];
              internalType: "struct WithProtocolFee.ProtocolFee";
              name: "_newProtocolFee";
              type: "tuple";
          }];
          name: "updateProtocolFee";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "address";
              name: "lender";
              type: "address";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "minOfferId";
              type: "uint256";
          }];
          name: "AllOffersCancelled";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "uint256";
              name: "loanId";
              type: "uint256";
          }, {
              indexed: false;
              internalType: "address";
              name: "delegate";
              type: "address";
          }, {
              indexed: false;
              internalType: "bytes32";
              name: "_rights";
              type: "bytes32";
          }, {
              indexed: false;
              internalType: "bool";
              name: "value";
              type: "bool";
          }];
          name: "Delegated";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "address";
              name: "newFlashActionContract";
              type: "address";
          }];
          name: "FlashActionContractUpdated";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "uint256";
              name: "loanId";
              type: "uint256";
          }, {
              indexed: false;
              internalType: "address";
              name: "target";
              type: "address";
          }, {
              indexed: false;
              internalType: "bytes";
              name: "data";
              type: "bytes";
          }];
          name: "FlashActionExecuted";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "uint256";
              name: "newDuration";
              type: "uint256";
          }];
          name: "LiquidationAuctionDurationUpdated";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "address";
              name: "liquidator";
              type: "address";
          }];
          name: "LiquidationContractUpdated";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "uint256";
              name: "loanId";
              type: "uint256";
          }, {
              indexed: false;
              internalType: "uint256[]";
              name: "offerId";
              type: "uint256[]";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              indexed: false;
              internalType: "struct IMultiSourceLoan.Loan";
              name: "loan";
              type: "tuple";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "fee";
              type: "uint256";
          }];
          name: "LoanEmitted";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "uint256";
              name: "loanId";
              type: "uint256";
          }];
          name: "LoanForeclosed";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "uint256";
              name: "loanId";
              type: "uint256";
          }];
          name: "LoanLiquidated";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "uint256";
              name: "renegotiationId";
              type: "uint256";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "oldLoanId";
              type: "uint256";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "newLoanId";
              type: "uint256";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              indexed: false;
              internalType: "struct IMultiSourceLoan.Loan";
              name: "loan";
              type: "tuple";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "fee";
              type: "uint256";
          }];
          name: "LoanRefinanced";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "uint256";
              name: "loanId";
              type: "uint256";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "newLoanId";
              type: "uint256";
          }, {
              components: readonly [{
                  internalType: "address";
                  name: "borrower";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "nftCollateralTokenId";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "nftCollateralAddress";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "principalAddress";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "principalAmount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "startTime";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "duration";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "floor";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "accruedInterest";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  name: "tranche";
                  type: "tuple[]";
              }, {
                  internalType: "uint256";
                  name: "protocolFee";
                  type: "uint256";
              }];
              indexed: false;
              internalType: "struct IMultiSourceLoan.Loan";
              name: "loan";
              type: "tuple";
          }, {
              indexed: false;
              internalType: "uint256[]";
              name: "offerIds";
              type: "uint256[]";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "totalFee";
              type: "uint256";
          }];
          name: "LoanRefinancedFromNewOffers";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "uint256";
              name: "loanId";
              type: "uint256";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "totalRepayment";
              type: "uint256";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "fee";
              type: "uint256";
          }];
          name: "LoanRepaid";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "uint256";
              name: "loanId";
              type: "uint256";
          }, {
              indexed: false;
              internalType: "address";
              name: "liquidator";
              type: "address";
          }];
          name: "LoanSentToLiquidator";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "uint256";
              name: "_minimum";
              type: "uint256";
          }];
          name: "MinAprImprovementUpdated";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "uint256";
              name: "newMinBid";
              type: "uint256";
          }];
          name: "MinBidLiquidationUpdated";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "uint256";
              name: "minLockPeriod";
              type: "uint256";
          }];
          name: "MinLockPeriodUpdated";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "address";
              name: "lender";
              type: "address";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "offerId";
              type: "uint256";
          }];
          name: "OfferCancelled";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: true;
              internalType: "address";
              name: "user";
              type: "address";
          }, {
              indexed: true;
              internalType: "address";
              name: "newOwner";
              type: "address";
          }];
          name: "OwnershipTransferred";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              components: readonly [{
                  internalType: "address";
                  name: "recipient";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "fraction";
                  type: "uint256";
              }];
              indexed: false;
              internalType: "struct WithProtocolFee.ProtocolFee";
              name: "fee";
              type: "tuple";
          }];
          name: "ProtocolFeePendingUpdate";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              components: readonly [{
                  internalType: "address";
                  name: "recipient";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "fraction";
                  type: "uint256";
              }];
              indexed: false;
              internalType: "struct WithProtocolFee.ProtocolFee";
              name: "fee";
              type: "tuple";
          }];
          name: "ProtocolFeeUpdated";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "address";
              name: "lender";
              type: "address";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "renegotiationId";
              type: "uint256";
          }];
          name: "RenegotiationOfferCancelled";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "address";
              name: "delegate";
              type: "address";
          }, {
              indexed: false;
              internalType: "address";
              name: "collection";
              type: "address";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "tokenId";
              type: "uint256";
          }, {
              indexed: false;
              internalType: "bytes32";
              name: "_rights";
              type: "bytes32";
          }];
          name: "RevokeDelegate";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "address";
              name: "newOwner";
              type: "address";
          }];
          name: "TransferOwnerRequested";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "address";
              name: "contractAdded";
              type: "address";
          }];
          name: "WhitelistedCallbackContractAdded";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: false;
              internalType: "address";
              name: "contractRemoved";
              type: "address";
          }];
          name: "WhitelistedCallbackContractRemoved";
          type: "event";
      }, {
          inputs: readonly [];
          name: "AddressZeroError";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "_lender";
              type: "address";
          }, {
              internalType: "uint256";
              name: "_offerId";
              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 [{
              internalType: "uint256";
              name: "length";
              type: "uint256";
          }];
          name: "ECDSAInvalidSignatureLength";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "bytes32";
              name: "s";
              type: "bytes32";
          }];
          name: "ECDSAInvalidSignatureS";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_expirationTime";
              type: "uint256";
          }];
          name: "ExpiredOfferError";
          type: "error";
      }, {
          inputs: readonly [];
          name: "InvalidAddressesError";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_amount";
              type: "uint256";
          }, {
              internalType: "uint256";
              name: "_principalAmount";
              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 [{
              internalType: "uint256";
              name: "_loanId";
              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 [{
              internalType: "address";
              name: "_liquidator";
              type: "address";
          }];
          name: "LiquidatorOnlyError";
          type: "error";
      }, {
          inputs: readonly [];
          name: "LoanExpiredError";
          type: "error";
      }, {
          inputs: readonly [];
          name: "LoanLockedError";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_expirationTime";
              type: "uint256";
          }];
          name: "LoanNotDueError";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "_lender";
              type: "address";
          }, {
              internalType: "uint256";
              name: "_newMinOfferId";
              type: "uint256";
          }, {
              internalType: "uint256";
              name: "_minOfferId";
              type: "uint256";
          }];
          name: "LowOfferIdError";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "_lender";
              type: "address";
          }, {
              internalType: "uint256";
              name: "_newMinRenegotiationOfferId";
              type: "uint256";
          }, {
              internalType: "uint256";
              name: "_minOfferId";
              type: "uint256";
          }];
          name: "LowRenegotiationOfferIdError";
          type: "error";
      }, {
          inputs: readonly [];
          name: "MaxCapacityExceededError";
          type: "error";
      }, {
          inputs: readonly [];
          name: "MismatchError";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "i";
              type: "uint256";
          }, {
              internalType: "bytes";
              name: "returndata";
              type: "bytes";
          }];
          name: "MulticallFailed";
          type: "error";
      }, {
          inputs: readonly [];
          name: "NFTNotReturnedError";
          type: "error";
      }, {
          inputs: readonly [];
          name: "NotStrictlyImprovedError";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "_pendingProtocolFeeSetTime";
              type: "uint256";
          }];
          name: "TooEarlyError";
          type: "error";
      }, {
          inputs: readonly [];
          name: "TooManyTranchesError";
          type: "error";
      }, {
          inputs: readonly [];
          name: "TooSoonError";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "minTimestamp";
              type: "uint256";
          }];
          name: "TrancheCannotBeRefinancedError";
          type: "error";
      }, {
          inputs: readonly [];
          name: "ZeroInterestError";
          type: "error";
      }] | readonly [{
          type: "constructor";
          inputs: readonly [{
              name: "loanLiquidator";
              type: "address";
              internalType: "address";
          }, {
              name: "protocolFee";
              type: "tuple";
              internalType: "struct WithProtocolFee.ProtocolFee";
              components: readonly [{
                  name: "recipient";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fraction";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "currencyManager";
              type: "address";
              internalType: "address";
          }, {
              name: "collectionManager";
              type: "address";
              internalType: "address";
          }, {
              name: "maxTranches";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "minLockPeriod";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "delegateRegistry";
              type: "address";
              internalType: "address";
          }, {
              name: "loanManagerRegistry";
              type: "address";
              internalType: "address";
          }, {
              name: "flashActionContract";
              type: "address";
              internalType: "address";
          }, {
              name: "minWaitTime";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "DOMAIN_SEPARATOR";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "bytes32";
              internalType: "bytes32";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "FEE_UPDATE_NOTICE";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "INITIAL_DOMAIN_SEPARATOR";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "bytes32";
              internalType: "bytes32";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "MAX_AUCTION_DURATION";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint48";
              internalType: "uint48";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "MIN_AUCTION_DURATION";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint48";
              internalType: "uint48";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "MIN_BID_LIQUIDATION";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "MIN_WAIT_TIME";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "VERSION";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "bytes";
              internalType: "bytes";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "addNewTranche";
          inputs: readonly [{
              name: "_renegotiationOffer";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.RenegotiationOffer";
              components: readonly [{
                  name: "renegotiationId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "trancheIndex";
                  type: "uint256[]";
                  internalType: "uint256[]";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "aprBps";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "_loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "_renegotiationOfferSignature";
              type: "bytes";
              internalType: "bytes";
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "addWhitelistedCallbackContract";
          inputs: readonly [{
              name: "_contract";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "cancelOffer";
          inputs: readonly [{
              name: "_offerId";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "cancelRenegotiationOffer";
          inputs: readonly [{
              name: "_renegotiationId";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "delegate";
          inputs: readonly [{
              name: "_loanId";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "_delegate";
              type: "address";
              internalType: "address";
          }, {
              name: "_rights";
              type: "bytes32";
              internalType: "bytes32";
          }, {
              name: "_value";
              type: "bool";
              internalType: "bool";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "emitLoan";
          inputs: readonly [{
              name: "_loanExecutionData";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.LoanExecutionData";
              components: readonly [{
                  name: "executionData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.ExecutionData";
                  components: readonly [{
                      name: "offerExecution";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.OfferExecution[]";
                      components: readonly [{
                          name: "offer";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.LoanOffer";
                          components: readonly [{
                              name: "offerId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "fee";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "capacity";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "nftCollateralTokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "expirationTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "maxSeniorRepayment";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "validators";
                              type: "tuple[]";
                              internalType: "struct IBaseLoan.OfferValidator[]";
                              components: readonly [{
                                  name: "validator";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "arguments";
                                  type: "bytes";
                                  internalType: "bytes";
                              }];
                          }];
                      }, {
                          name: "amount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderOfferSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalReceiver";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "callbackData";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }, {
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "borrowerOfferSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "executeFlashAction";
          inputs: readonly [{
              name: "_loanId";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "_loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "_target";
              type: "address";
              internalType: "address";
          }, {
              name: "_data";
              type: "bytes";
              internalType: "bytes";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "getCollectionManager";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getCurrencyManager";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getDelegateRegistry";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getFlashActionContract";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getLiquidationAuctionDuration";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint48";
              internalType: "uint48";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getLiquidator";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getLoanHash";
          inputs: readonly [{
              name: "_loanId";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [{
              name: "";
              type: "bytes32";
              internalType: "bytes32";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getLoanManagerRegistry";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "contract ILoanManagerRegistry";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getMaxTranches";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getMinImprovementApr";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getMinLockPeriod";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getPendingProtocolFee";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "tuple";
              internalType: "struct WithProtocolFee.ProtocolFee";
              components: readonly [{
                  name: "recipient";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fraction";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getPendingProtocolFeeSetTime";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getProtocolFee";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "tuple";
              internalType: "struct WithProtocolFee.ProtocolFee";
              components: readonly [{
                  name: "recipient";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fraction";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getTotalLoansIssued";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getUsedCapacity";
          inputs: readonly [{
              name: "_lender";
              type: "address";
              internalType: "address";
          }, {
              name: "_offerId";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "isOfferCancelled";
          inputs: readonly [{
              name: "user";
              type: "address";
              internalType: "address";
          }, {
              name: "offerId";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [{
              name: "notActive";
              type: "bool";
              internalType: "bool";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "isRenegotiationOfferCancelled";
          inputs: readonly [{
              name: "user";
              type: "address";
              internalType: "address";
          }, {
              name: "renegotiationIf";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [{
              name: "notActive";
              type: "bool";
              internalType: "bool";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "isWhitelistedCallbackContract";
          inputs: readonly [{
              name: "_contract";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [{
              name: "";
              type: "bool";
              internalType: "bool";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "liquidateLoan";
          inputs: readonly [{
              name: "_loanId";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "_loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          outputs: readonly [{
              name: "";
              type: "bytes";
              internalType: "bytes";
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "loanLiquidated";
          inputs: readonly [{
              name: "_loanId";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "_loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "multicall";
          inputs: readonly [{
              name: "data";
              type: "bytes[]";
              internalType: "bytes[]";
          }];
          outputs: readonly [{
              name: "results";
              type: "bytes[]";
              internalType: "bytes[]";
          }];
          stateMutability: "payable";
      }, {
          type: "function";
          name: "name";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "string";
              internalType: "string";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "onERC721Received";
          inputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }, {
              name: "";
              type: "address";
              internalType: "address";
          }, {
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "bytes";
              internalType: "bytes";
          }];
          outputs: readonly [{
              name: "";
              type: "bytes4";
              internalType: "bytes4";
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "owner";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "pendingOwner";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "pendingOwnerTime";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "refinanceFromLoanExecutionData";
          inputs: readonly [{
              name: "_loanId";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "_loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "_loanExecutionData";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.LoanExecutionData";
              components: readonly [{
                  name: "executionData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.ExecutionData";
                  components: readonly [{
                      name: "offerExecution";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.OfferExecution[]";
                      components: readonly [{
                          name: "offer";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.LoanOffer";
                          components: readonly [{
                              name: "offerId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "fee";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "capacity";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "nftCollateralTokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "expirationTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "maxSeniorRepayment";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "validators";
                              type: "tuple[]";
                              internalType: "struct IBaseLoan.OfferValidator[]";
                              components: readonly [{
                                  name: "validator";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "arguments";
                                  type: "bytes";
                                  internalType: "bytes";
                              }];
                          }];
                      }, {
                          name: "amount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderOfferSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalReceiver";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "callbackData";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }, {
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "borrowerOfferSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "refinanceFull";
          inputs: readonly [{
              name: "_renegotiationOffer";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.RenegotiationOffer";
              components: readonly [{
                  name: "renegotiationId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "trancheIndex";
                  type: "uint256[]";
                  internalType: "uint256[]";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "aprBps";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "_loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "_renegotiationOfferSignature";
              type: "bytes";
              internalType: "bytes";
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "refinancePartial";
          inputs: readonly [{
              name: "_renegotiationOffer";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.RenegotiationOffer";
              components: readonly [{
                  name: "renegotiationId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "trancheIndex";
                  type: "uint256[]";
                  internalType: "uint256[]";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "aprBps";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "_loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "removeWhitelistedCallbackContract";
          inputs: readonly [{
              name: "_contract";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "repayLoan";
          inputs: readonly [{
              name: "_repaymentData";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.LoanRepaymentData";
              components: readonly [{
                  name: "data";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "callbackData";
                      type: "bytes";
                      internalType: "bytes";
                  }, {
                      name: "shouldDelegate";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "borrowerSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "requestTransferOwner";
          inputs: readonly [{
              name: "_newOwner";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "revokeDelegate";
          inputs: readonly [{
              name: "_delegate";
              type: "address";
              internalType: "address";
          }, {
              name: "_collection";
              type: "address";
              internalType: "address";
          }, {
              name: "_tokenId";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "_rights";
              type: "bytes32";
              internalType: "bytes32";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "setFlashActionContract";
          inputs: readonly [{
              name: "_newFlashActionContract";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "setMinLockPeriod";
          inputs: readonly [{
              name: "__minLockPeriod";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "setProtocolFee";
          inputs: readonly [];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "transferOwnership";
          inputs: readonly [];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "transferOwnership";
          inputs: readonly [{
              name: "newOwner";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "updateLiquidationAuctionDuration";
          inputs: readonly [{
              name: "_newDuration";
              type: "uint48";
              internalType: "uint48";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "updateLiquidationContract";
          inputs: readonly [{
              name: "__loanLiquidator";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "updateMinImprovementApr";
          inputs: readonly [{
              name: "_newMinimum";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "updateProtocolFee";
          inputs: readonly [{
              name: "_newProtocolFee";
              type: "tuple";
              internalType: "struct WithProtocolFee.ProtocolFee";
              components: readonly [{
                  name: "recipient";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fraction";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "event";
          name: "Delegated";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "delegate";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "_rights";
              type: "bytes32";
              indexed: false;
              internalType: "bytes32";
          }, {
              name: "value";
              type: "bool";
              indexed: false;
              internalType: "bool";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "FlashActionContractUpdated";
          inputs: readonly [{
              name: "newFlashActionContract";
              type: "address";
              indexed: false;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "FlashActionExecuted";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "target";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "data";
              type: "bytes";
              indexed: false;
              internalType: "bytes";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LiquidationAuctionDurationUpdated";
          inputs: readonly [{
              name: "newDuration";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LiquidationContractUpdated";
          inputs: readonly [{
              name: "liquidator";
              type: "address";
              indexed: false;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanEmitted";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "offerId";
              type: "uint256[]";
              indexed: false;
              internalType: "uint256[]";
          }, {
              name: "loan";
              type: "tuple";
              indexed: false;
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "fee";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanForeclosed";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanLiquidated";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanRefinanced";
          inputs: readonly [{
              name: "renegotiationId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "oldLoanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "newLoanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "loan";
              type: "tuple";
              indexed: false;
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "fee";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanRefinancedFromNewOffers";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "newLoanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "loan";
              type: "tuple";
              indexed: false;
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "offerIds";
              type: "uint256[]";
              indexed: false;
              internalType: "uint256[]";
          }, {
              name: "totalFee";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanRepaid";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "totalRepayment";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "fee";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanSentToLiquidator";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "liquidator";
              type: "address";
              indexed: false;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "MinAprImprovementUpdated";
          inputs: readonly [{
              name: "_minimum";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "MinBidLiquidationUpdated";
          inputs: readonly [{
              name: "newMinBid";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "MinLockPeriodUpdated";
          inputs: readonly [{
              name: "minLockPeriod";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "OfferCancelled";
          inputs: readonly [{
              name: "lender";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "offerId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "OwnershipTransferred";
          inputs: readonly [{
              name: "user";
              type: "address";
              indexed: true;
              internalType: "address";
          }, {
              name: "newOwner";
              type: "address";
              indexed: true;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "ProtocolFeePendingUpdate";
          inputs: readonly [{
              name: "fee";
              type: "tuple";
              indexed: false;
              internalType: "struct WithProtocolFee.ProtocolFee";
              components: readonly [{
                  name: "recipient";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fraction";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "ProtocolFeeUpdated";
          inputs: readonly [{
              name: "fee";
              type: "tuple";
              indexed: false;
              internalType: "struct WithProtocolFee.ProtocolFee";
              components: readonly [{
                  name: "recipient";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fraction";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "RenegotiationOfferCancelled";
          inputs: readonly [{
              name: "lender";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "renegotiationId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "RevokeDelegate";
          inputs: readonly [{
              name: "delegate";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "collection";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "tokenId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "_rights";
              type: "bytes32";
              indexed: false;
              internalType: "bytes32";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "TransferOwnerRequested";
          inputs: readonly [{
              name: "newOwner";
              type: "address";
              indexed: false;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "WhitelistedCallbackContractAdded";
          inputs: readonly [{
              name: "contractAdded";
              type: "address";
              indexed: false;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "WhitelistedCallbackContractRemoved";
          inputs: readonly [{
              name: "contractRemoved";
              type: "address";
              indexed: false;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "error";
          name: "AddressZeroError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "CancelledOrExecutedOfferError";
          inputs: readonly [{
              name: "_lender";
              type: "address";
              internalType: "address";
          }, {
              name: "_offerId";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "CollectionNotWhitelistedError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "CurrencyNotWhitelistedError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "ECDSAInvalidSignature";
          inputs: readonly [];
      }, {
          type: "error";
          name: "ECDSAInvalidSignatureLength";
          inputs: readonly [{
              name: "length";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "ECDSAInvalidSignatureS";
          inputs: readonly [{
              name: "s";
              type: "bytes32";
              internalType: "bytes32";
          }];
      }, {
          type: "error";
          name: "ExpiredOfferError";
          inputs: readonly [{
              name: "_expirationTime";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "InvalidAddressesError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidAmountError";
          inputs: readonly [{
              name: "_amount";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "_principalAmount";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "InvalidCallbackError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidCallerError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidCollateralError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidCollateralIdError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidDurationError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidInputError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidLoanError";
          inputs: readonly [{
              name: "_loanId";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "InvalidMethodError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidParametersError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidRenegotiationOfferError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidSignatureError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidTrancheError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "LiquidatorOnlyError";
          inputs: readonly [{
              name: "_liquidator";
              type: "address";
              internalType: "address";
          }];
      }, {
          type: "error";
          name: "LoanExpiredError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "LoanLockedError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "LoanNotDueError";
          inputs: readonly [{
              name: "_expirationTime";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "MaxCapacityExceededError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "MismatchError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "MulticallFailed";
          inputs: readonly [{
              name: "i";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "returndata";
              type: "bytes";
              internalType: "bytes";
          }];
      }, {
          type: "error";
          name: "NFTNotReturnedError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "NotStrictlyImprovedError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "TooEarlyError";
          inputs: readonly [{
              name: "_pendingProtocolFeeSetTime";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "TooManyTranchesError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "TooSoonError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "TrancheCannotBeRefinancedError";
          inputs: readonly [{
              name: "minTimestamp";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "ZeroInterestError";
          inputs: readonly [];
      }] | readonly [{
          type: "constructor";
          inputs: readonly [{
              name: "loanLiquidator";
              type: "address";
              internalType: "address";
          }, {
              name: "protocolFee";
              type: "tuple";
              internalType: "struct WithProtocolFee.ProtocolFee";
              components: readonly [{
                  name: "recipient";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fraction";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "currencyManager";
              type: "address";
              internalType: "address";
          }, {
              name: "collectionManager";
              type: "address";
              internalType: "address";
          }, {
              name: "maxTranches";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "minLockPeriod";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "delegateRegistry";
              type: "address";
              internalType: "address";
          }, {
              name: "loanManagerRegistry";
              type: "address";
              internalType: "address";
          }, {
              name: "flashActionContract";
              type: "address";
              internalType: "address";
          }, {
              name: "minWaitTime";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "DOMAIN_SEPARATOR";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "bytes32";
              internalType: "bytes32";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "FEE_UPDATE_NOTICE";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "INITIAL_DOMAIN_SEPARATOR";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "bytes32";
              internalType: "bytes32";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "MAX_AUCTION_DURATION";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint48";
              internalType: "uint48";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "MIN_AUCTION_DURATION";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint48";
              internalType: "uint48";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "MIN_BID_LIQUIDATION";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "MIN_WAIT_TIME";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "VERSION";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "bytes";
              internalType: "bytes";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "addNewTranche";
          inputs: readonly [{
              name: "_renegotiationOffer";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.RenegotiationOffer";
              components: readonly [{
                  name: "renegotiationId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "trancheIndex";
                  type: "uint256[]";
                  internalType: "uint256[]";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "aprBps";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "_loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }, {
              name: "_renegotiationOfferSignature";
              type: "bytes";
              internalType: "bytes";
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "addWhitelistedCallbackContract";
          inputs: readonly [{
              name: "_contract";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "cancelOffer";
          inputs: readonly [{
              name: "_offerId";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "cancelRenegotiationOffer";
          inputs: readonly [{
              name: "_renegotiationId";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "delegate";
          inputs: readonly [{
              name: "_loanId";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }, {
              name: "_delegate";
              type: "address";
              internalType: "address";
          }, {
              name: "_rights";
              type: "bytes32";
              internalType: "bytes32";
          }, {
              name: "_value";
              type: "bool";
              internalType: "bool";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "emitLoan";
          inputs: readonly [{
              name: "_loanExecutionData";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.LoanExecutionData";
              components: readonly [{
                  name: "executionData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.ExecutionData";
                  components: readonly [{
                      name: "offerExecution";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.OfferExecution[]";
                      components: readonly [{
                          name: "offer";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.LoanOffer";
                          components: readonly [{
                              name: "offerId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "fee";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "capacity";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "nftCollateralTokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "expirationTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "maxSeniorRepayment";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "validators";
                              type: "tuple[]";
                              internalType: "struct IBaseLoan.OfferValidator[]";
                              components: readonly [{
                                  name: "validator";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "arguments";
                                  type: "bytes";
                                  internalType: "bytes";
                              }];
                          }, {
                              name: "lenderRefinanceDisabled";
                              type: "bool";
                              internalType: "bool";
                          }, {
                              name: "borrower";
                              type: "address";
                              internalType: "address";
                          }];
                      }, {
                          name: "amount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderOfferSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalReceiver";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "callbackData";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }, {
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "borrowerOfferSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "executeFlashAction";
          inputs: readonly [{
              name: "_loanId";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "_loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }, {
              name: "_target";
              type: "address";
              internalType: "address";
          }, {
              name: "_data";
              type: "bytes";
              internalType: "bytes";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "getCollectionManager";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getCurrencyManager";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getDelegateRegistry";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getFlashActionContract";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getLiquidationAuctionDuration";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint48";
              internalType: "uint48";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getLiquidator";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getLoanHash";
          inputs: readonly [{
              name: "_loanId";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [{
              name: "";
              type: "bytes32";
              internalType: "bytes32";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getLoanManagerRegistry";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "contract ILoanManagerRegistry";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getMaxTranches";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getMinImprovementApr";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getMinLockPeriod";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getPendingProtocolFee";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "tuple";
              internalType: "struct WithProtocolFee.ProtocolFee";
              components: readonly [{
                  name: "recipient";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fraction";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getPendingProtocolFeeSetTime";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getProtocolFee";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "tuple";
              internalType: "struct WithProtocolFee.ProtocolFee";
              components: readonly [{
                  name: "recipient";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fraction";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getTotalLoansIssued";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "getUsedCapacity";
          inputs: readonly [{
              name: "_lender";
              type: "address";
              internalType: "address";
          }, {
              name: "_offerId";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "isOfferCancelled";
          inputs: readonly [{
              name: "user";
              type: "address";
              internalType: "address";
          }, {
              name: "offerId";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [{
              name: "notActive";
              type: "bool";
              internalType: "bool";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "isRenegotiationOfferCancelled";
          inputs: readonly [{
              name: "user";
              type: "address";
              internalType: "address";
          }, {
              name: "renegotiationIf";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [{
              name: "notActive";
              type: "bool";
              internalType: "bool";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "isWhitelistedCallbackContract";
          inputs: readonly [{
              name: "_contract";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [{
              name: "";
              type: "bool";
              internalType: "bool";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "liquidateLoan";
          inputs: readonly [{
              name: "_loanId";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "_loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }];
          outputs: readonly [{
              name: "";
              type: "bytes";
              internalType: "bytes";
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "multicall";
          inputs: readonly [{
              name: "data";
              type: "bytes[]";
              internalType: "bytes[]";
          }];
          outputs: readonly [{
              name: "results";
              type: "bytes[]";
              internalType: "bytes[]";
          }];
          stateMutability: "payable";
      }, {
          type: "function";
          name: "name";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "string";
              internalType: "string";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "onERC721Received";
          inputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }, {
              name: "";
              type: "address";
              internalType: "address";
          }, {
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "bytes";
              internalType: "bytes";
          }];
          outputs: readonly [{
              name: "";
              type: "bytes4";
              internalType: "bytes4";
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "owner";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "pendingOwner";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "pendingOwnerTime";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "refinanceFromLoanExecutionData";
          inputs: readonly [{
              name: "_loanId";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "_loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }, {
              name: "_loanExecutionData";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.LoanExecutionData";
              components: readonly [{
                  name: "executionData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.ExecutionData";
                  components: readonly [{
                      name: "offerExecution";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.OfferExecution[]";
                      components: readonly [{
                          name: "offer";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.LoanOffer";
                          components: readonly [{
                              name: "offerId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "fee";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "capacity";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "nftCollateralTokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "expirationTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "maxSeniorRepayment";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "validators";
                              type: "tuple[]";
                              internalType: "struct IBaseLoan.OfferValidator[]";
                              components: readonly [{
                                  name: "validator";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "arguments";
                                  type: "bytes";
                                  internalType: "bytes";
                              }];
                          }, {
                              name: "lenderRefinanceDisabled";
                              type: "bool";
                              internalType: "bool";
                          }, {
                              name: "borrower";
                              type: "address";
                              internalType: "address";
                          }];
                      }, {
                          name: "amount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderOfferSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalReceiver";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "callbackData";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }, {
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "borrowerOfferSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "refinanceFull";
          inputs: readonly [{
              name: "_renegotiationOffer";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.RenegotiationOffer";
              components: readonly [{
                  name: "renegotiationId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "trancheIndex";
                  type: "uint256[]";
                  internalType: "uint256[]";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "aprBps";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "_loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }, {
              name: "_renegotiationOfferSignature";
              type: "bytes";
              internalType: "bytes";
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "refinancePartial";
          inputs: readonly [{
              name: "_renegotiationOffer";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.RenegotiationOffer";
              components: readonly [{
                  name: "renegotiationId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "trancheIndex";
                  type: "uint256[]";
                  internalType: "uint256[]";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "aprBps";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              name: "_loan";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "removeWhitelistedCallbackContract";
          inputs: readonly [{
              name: "_contract";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "repayLoan";
          inputs: readonly [{
              name: "_repaymentData";
              type: "tuple";
              internalType: "struct IMultiSourceLoan.LoanRepaymentData";
              components: readonly [{
                  name: "data";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "callbackData";
                      type: "bytes";
                      internalType: "bytes";
                  }, {
                      name: "shouldDelegate";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "borrowerSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "requestTransferOwner";
          inputs: readonly [{
              name: "_newOwner";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "revokeDelegate";
          inputs: readonly [{
              name: "_delegate";
              type: "address";
              internalType: "address";
          }, {
              name: "_collection";
              type: "address";
              internalType: "address";
          }, {
              name: "_tokenId";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "_rights";
              type: "bytes32";
              internalType: "bytes32";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "setFlashActionContract";
          inputs: readonly [{
              name: "_newFlashActionContract";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "setMinLockPeriod";
          inputs: readonly [{
              name: "__minLockPeriod";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "setProtocolFee";
          inputs: readonly [];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "transferOwnership";
          inputs: readonly [];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "updateLiquidationAuctionDuration";
          inputs: readonly [{
              name: "_newDuration";
              type: "uint48";
              internalType: "uint48";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "updateLiquidationContract";
          inputs: readonly [{
              name: "__loanLiquidator";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "updateMinImprovementApr";
          inputs: readonly [{
              name: "_newMinimum";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "updateProtocolFee";
          inputs: readonly [{
              name: "_newProtocolFee";
              type: "tuple";
              internalType: "struct WithProtocolFee.ProtocolFee";
              components: readonly [{
                  name: "recipient";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fraction";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "event";
          name: "Delegated";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "delegate";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "_rights";
              type: "bytes32";
              indexed: false;
              internalType: "bytes32";
          }, {
              name: "value";
              type: "bool";
              indexed: false;
              internalType: "bool";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "FlashActionContractUpdated";
          inputs: readonly [{
              name: "newFlashActionContract";
              type: "address";
              indexed: false;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "FlashActionExecuted";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "target";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "data";
              type: "bytes";
              indexed: false;
              internalType: "bytes";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LiquidationAuctionDurationUpdated";
          inputs: readonly [{
              name: "newDuration";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LiquidationContractUpdated";
          inputs: readonly [{
              name: "liquidator";
              type: "address";
              indexed: false;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanEmitted";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "offerId";
              type: "uint256[]";
              indexed: false;
              internalType: "uint256[]";
          }, {
              name: "loan";
              type: "tuple";
              indexed: false;
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }, {
              name: "fee";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanForeclosed";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanLiquidated";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "foreclosed";
              type: "bool";
              indexed: false;
              internalType: "bool";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanRefinanced";
          inputs: readonly [{
              name: "renegotiationId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "oldLoanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "newLoanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "loan";
              type: "tuple";
              indexed: false;
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }, {
              name: "fee";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanRefinancedFromNewOffers";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "newLoanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "loan";
              type: "tuple";
              indexed: false;
              internalType: "struct IMultiSourceLoan.Loan";
              components: readonly [{
                  name: "borrower";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nftCollateralTokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAddress";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "startTime";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "duration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "tranche";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Tranche[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "floor";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "protocolFee";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "lenderRefinanceDisabled";
                  type: "bool";
                  internalType: "bool";
              }];
          }, {
              name: "offerIds";
              type: "uint256[]";
              indexed: false;
              internalType: "uint256[]";
          }, {
              name: "totalFee";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanRepaid";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "totalRepayment";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "fee";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "LoanSentToLiquidator";
          inputs: readonly [{
              name: "loanId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "liquidator";
              type: "address";
              indexed: false;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "MinAprImprovementUpdated";
          inputs: readonly [{
              name: "_minimum";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "MinBidLiquidationUpdated";
          inputs: readonly [{
              name: "newMinBid";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "MinLockPeriodUpdated";
          inputs: readonly [{
              name: "minLockPeriod";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "OfferCancelled";
          inputs: readonly [{
              name: "lender";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "offerId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "OwnershipTransferred";
          inputs: readonly [{
              name: "user";
              type: "address";
              indexed: true;
              internalType: "address";
          }, {
              name: "newOwner";
              type: "address";
              indexed: true;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "ProtocolFeePendingUpdate";
          inputs: readonly [{
              name: "fee";
              type: "tuple";
              indexed: false;
              internalType: "struct WithProtocolFee.ProtocolFee";
              components: readonly [{
                  name: "recipient";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fraction";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "ProtocolFeeUpdated";
          inputs: readonly [{
              name: "fee";
              type: "tuple";
              indexed: false;
              internalType: "struct WithProtocolFee.ProtocolFee";
              components: readonly [{
                  name: "recipient";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "fraction";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "RenegotiationOfferCancelled";
          inputs: readonly [{
              name: "lender";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "renegotiationId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "RevokeDelegate";
          inputs: readonly [{
              name: "delegate";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "collection";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "tokenId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "_rights";
              type: "bytes32";
              indexed: false;
              internalType: "bytes32";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "TransferOwnerRequested";
          inputs: readonly [{
              name: "newOwner";
              type: "address";
              indexed: false;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "WhitelistedCallbackContractAdded";
          inputs: readonly [{
              name: "contractAdded";
              type: "address";
              indexed: false;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "event";
          name: "WhitelistedCallbackContractRemoved";
          inputs: readonly [{
              name: "contractRemoved";
              type: "address";
              indexed: false;
              internalType: "address";
          }];
          anonymous: false;
      }, {
          type: "error";
          name: "AddressZeroError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "CancelledOrExecutedOfferError";
          inputs: readonly [{
              name: "_lender";
              type: "address";
              internalType: "address";
          }, {
              name: "_offerId";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "CollectionNotWhitelistedError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "CurrencyNotWhitelistedError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "ECDSAInvalidSignature";
          inputs: readonly [];
      }, {
          type: "error";
          name: "ECDSAInvalidSignatureLength";
          inputs: readonly [{
              name: "length";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "ECDSAInvalidSignatureS";
          inputs: readonly [{
              name: "s";
              type: "bytes32";
              internalType: "bytes32";
          }];
      }, {
          type: "error";
          name: "ExpiredOfferError";
          inputs: readonly [{
              name: "_expirationTime";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "InvalidAddressesError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidAmountError";
          inputs: readonly [{
              name: "_amount";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "_principalAmount";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "InvalidBorrowerError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidCallbackError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidCallerError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidCollateralError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidCollateralIdError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidDurationError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidInputError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidLoanError";
          inputs: readonly [{
              name: "_loanId";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "InvalidLockPeriodError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidMethodError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidRenegotiationOfferError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidSignatureError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidTrancheError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "LenderRefinanceDisabledError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "LoanExpiredError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "LoanLockedError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "LoanNotDueError";
          inputs: readonly [{
              name: "_expirationTime";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "MaxCapacityExceededError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "MulticallFailed";
          inputs: readonly [{
              name: "i";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "returndata";
              type: "bytes";
              internalType: "bytes";
          }];
      }, {
          type: "error";
          name: "NFTNotReturnedError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "NotStrictlyImprovedError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "TooEarlyError";
          inputs: readonly [{
              name: "_pendingProtocolFeeSetTime";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "TooManyTranchesError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "TooSoonError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "TrancheCannotBeRefinancedError";
          inputs: readonly [{
              name: "minTimestamp";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "ZeroInterestError";
          inputs: readonly [];
      }]
      address: `0x${string}`
      bcClient: {}

      Type declaration

        wallet: {}

        Type declaration

          contract: GetContractReturnType<readonly [{
              inputs: readonly [{
                  internalType: "address";
                  name: "loanLiquidator";
                  type: "address";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "recipient";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fraction";
                      type: "uint256";
                  }];
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  name: "protocolFee";
                  type: "tuple";
              }, {
                  internalType: "address";
                  name: "currencyManager";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "collectionManager";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "maxTranches";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "minLockPeriod";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "delegateRegistry";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "loanManagerRegistry";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "flashActionContract";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "minWaitTime";
                  type: "uint256";
              }];
              stateMutability: "nonpayable";
              type: "constructor";
          }, {
              inputs: readonly [];
              name: "DOMAIN_SEPARATOR";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "FEE_UPDATE_NOTICE";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "INITIAL_DOMAIN_SEPARATOR";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAX_AUCTION_DURATION";
              outputs: readonly [{
                  internalType: "uint48";
                  name: "";
                  type: "uint48";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MIN_AUCTION_DURATION";
              outputs: readonly [{
                  internalType: "uint48";
                  name: "";
                  type: "uint48";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MIN_BID_LIQUIDATION";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MIN_WAIT_TIME";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "VERSION";
              outputs: readonly [{
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  components: readonly [{
                      internalType: "uint256";
                      name: "renegotiationId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fee";
                      type: "uint256";
                  }, {
                      internalType: "uint256[]";
                      name: "trancheIndex";
                      type: "uint256[]";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "expirationTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  name: "_renegotiationOffer";
                  type: "tuple";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }, {
                  internalType: "bytes";
                  name: "_renegotiationOfferSignature";
                  type: "bytes";
              }];
              name: "addNewTranche";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_contract";
                  type: "address";
              }];
              name: "addWhitelistedCallbackContract";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_minOfferId";
                  type: "uint256";
              }];
              name: "cancelAllOffers";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_offerId";
                  type: "uint256";
              }];
              name: "cancelOffer";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_renegotiationId";
                  type: "uint256";
              }];
              name: "cancelRenegotiationOffer";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_loanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "loan";
                  type: "tuple";
              }, {
                  internalType: "address";
                  name: "_delegate";
                  type: "address";
              }, {
                  internalType: "bytes32";
                  name: "_rights";
                  type: "bytes32";
              }, {
                  internalType: "bool";
                  name: "_value";
                  type: "bool";
              }];
              name: "delegate";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  components: readonly [{
                      components: readonly [{
                          components: readonly [{
                              components: readonly [{
                                  internalType: "uint256";
                                  name: "offerId";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "lender";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "fee";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "capacity";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "nftCollateralAddress";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "nftCollateralTokenId";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "principalAddress";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "principalAmount";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "aprBps";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "expirationTime";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "duration";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "maxSeniorRepayment";
                                  type: "uint256";
                              }, {
                                  components: readonly [{
                                      internalType: "address";
                                      name: "validator";
                                      type: "address";
                                  }, {
                                      internalType: "bytes";
                                      name: "arguments";
                                      type: "bytes";
                                  }];
                                  internalType: "struct IBaseLoan.OfferValidator[]";
                                  name: "validators";
                                  type: "tuple[]";
                              }];
                              internalType: "struct IMultiSourceLoan.LoanOffer";
                              name: "offer";
                              type: "tuple";
                          }, {
                              internalType: "uint256";
                              name: "amount";
                              type: "uint256";
                          }, {
                              internalType: "bytes";
                              name: "lenderOfferSignature";
                              type: "bytes";
                          }];
                          internalType: "struct IMultiSourceLoan.OfferExecution[]";
                          name: "offerExecution";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "tokenId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "expirationTime";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "principalReceiver";
                          type: "address";
                      }, {
                          internalType: "bytes";
                          name: "callbackData";
                          type: "bytes";
                      }];
                      internalType: "struct IMultiSourceLoan.ExecutionData";
                      name: "executionData";
                      type: "tuple";
                  }, {
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "bytes";
                      name: "borrowerOfferSignature";
                      type: "bytes";
                  }];
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  name: "_loanExecutionData";
                  type: "tuple";
              }];
              name: "emitLoan";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_loanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }, {
                  internalType: "address";
                  name: "_target";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "_data";
                  type: "bytes";
              }];
              name: "executeFlashAction";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getCollectionManager";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getCurrencyManager";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getDelegateRegistry";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getFlashActionContract";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getLiquidationAuctionDuration";
              outputs: readonly [{
                  internalType: "uint48";
                  name: "";
                  type: "uint48";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getLiquidator";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_loanId";
                  type: "uint256";
              }];
              name: "getLoanHash";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getLoanManagerRegistry";
              outputs: readonly [{
                  internalType: "contract ILoanManagerRegistry";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getMaxTranches";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getMinImprovementApr";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getMinLockPeriod";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getPendingProtocolFee";
              outputs: readonly [{
                  components: readonly [{
                      internalType: "address";
                      name: "recipient";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fraction";
                      type: "uint256";
                  }];
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getPendingProtocolFeeSetTime";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getProtocolFee";
              outputs: readonly [{
                  components: readonly [{
                      internalType: "address";
                      name: "recipient";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fraction";
                      type: "uint256";
                  }];
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getTotalLoansIssued";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_lender";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "_offerId";
                  type: "uint256";
              }];
              name: "getUsedCapacity";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "user";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "offerId";
                  type: "uint256";
              }];
              name: "isOfferCancelled";
              outputs: readonly [{
                  internalType: "bool";
                  name: "notActive";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "user";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "renegotiationIf";
                  type: "uint256";
              }];
              name: "isRenegotiationOfferCancelled";
              outputs: readonly [{
                  internalType: "bool";
                  name: "notActive";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_contract";
                  type: "address";
              }];
              name: "isWhitelistedCallbackContract";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_loanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }];
              name: "liquidateLoan";
              outputs: readonly [{
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_loanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }];
              name: "loanLiquidated";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "user";
                  type: "address";
              }];
              name: "minOfferId";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "minOfferId";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes[]";
                  name: "data";
                  type: "bytes[]";
              }];
              name: "multicall";
              outputs: readonly [{
                  internalType: "bytes[]";
                  name: "results";
                  type: "bytes[]";
              }];
              stateMutability: "payable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "name";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              name: "onERC721Received";
              outputs: readonly [{
                  internalType: "bytes4";
                  name: "";
                  type: "bytes4";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "owner";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "pendingOwner";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "pendingOwnerTime";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_loanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }, {
                  components: readonly [{
                      components: readonly [{
                          components: readonly [{
                              components: readonly [{
                                  internalType: "uint256";
                                  name: "offerId";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "lender";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "fee";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "capacity";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "nftCollateralAddress";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "nftCollateralTokenId";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "principalAddress";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "principalAmount";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "aprBps";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "expirationTime";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "duration";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "maxSeniorRepayment";
                                  type: "uint256";
                              }, {
                                  components: readonly [{
                                      internalType: "address";
                                      name: "validator";
                                      type: "address";
                                  }, {
                                      internalType: "bytes";
                                      name: "arguments";
                                      type: "bytes";
                                  }];
                                  internalType: "struct IBaseLoan.OfferValidator[]";
                                  name: "validators";
                                  type: "tuple[]";
                              }];
                              internalType: "struct IMultiSourceLoan.LoanOffer";
                              name: "offer";
                              type: "tuple";
                          }, {
                              internalType: "uint256";
                              name: "amount";
                              type: "uint256";
                          }, {
                              internalType: "bytes";
                              name: "lenderOfferSignature";
                              type: "bytes";
                          }];
                          internalType: "struct IMultiSourceLoan.OfferExecution[]";
                          name: "offerExecution";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "tokenId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "expirationTime";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "principalReceiver";
                          type: "address";
                      }, {
                          internalType: "bytes";
                          name: "callbackData";
                          type: "bytes";
                      }];
                      internalType: "struct IMultiSourceLoan.ExecutionData";
                      name: "executionData";
                      type: "tuple";
                  }, {
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "bytes";
                      name: "borrowerOfferSignature";
                      type: "bytes";
                  }];
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  name: "_loanExecutionData";
                  type: "tuple";
              }];
              name: "refinanceFromLoanExecutionData";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  components: readonly [{
                      internalType: "uint256";
                      name: "renegotiationId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fee";
                      type: "uint256";
                  }, {
                      internalType: "uint256[]";
                      name: "trancheIndex";
                      type: "uint256[]";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "expirationTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  name: "_renegotiationOffer";
                  type: "tuple";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }, {
                  internalType: "bytes";
                  name: "_renegotiationOfferSignature";
                  type: "bytes";
              }];
              name: "refinanceFull";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  components: readonly [{
                      internalType: "uint256";
                      name: "renegotiationId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fee";
                      type: "uint256";
                  }, {
                      internalType: "uint256[]";
                      name: "trancheIndex";
                      type: "uint256[]";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "expirationTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  name: "_renegotiationOffer";
                  type: "tuple";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }];
              name: "refinancePartial";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_contract";
                  type: "address";
              }];
              name: "removeWhitelistedCallbackContract";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  components: readonly [{
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "bytes";
                          name: "callbackData";
                          type: "bytes";
                      }, {
                          internalType: "bool";
                          name: "shouldDelegate";
                          type: "bool";
                      }];
                      internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                      name: "data";
                      type: "tuple";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "loan";
                      type: "tuple";
                  }, {
                      internalType: "bytes";
                      name: "borrowerSignature";
                      type: "bytes";
                  }];
                  internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                  name: "_repaymentData";
                  type: "tuple";
              }];
              name: "repayLoan";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_newOwner";
                  type: "address";
              }];
              name: "requestTransferOwner";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_delegate";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "_collection";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "_tokenId";
                  type: "uint256";
              }, {
                  internalType: "bytes32";
                  name: "_rights";
                  type: "bytes32";
              }];
              name: "revokeDelegate";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_newFlashActionContract";
                  type: "address";
              }];
              name: "setFlashActionContract";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "__minLockPeriod";
                  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 [{
                  internalType: "address";
                  name: "newOwner";
                  type: "address";
              }];
              name: "transferOwnership";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint48";
                  name: "_newDuration";
                  type: "uint48";
              }];
              name: "updateLiquidationAuctionDuration";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "__loanLiquidator";
                  type: "address";
              }];
              name: "updateLiquidationContract";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_newMinimum";
                  type: "uint256";
              }];
              name: "updateMinImprovementApr";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  components: readonly [{
                      internalType: "address";
                      name: "recipient";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fraction";
                      type: "uint256";
                  }];
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  name: "_newProtocolFee";
                  type: "tuple";
              }];
              name: "updateProtocolFee";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "lender";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "minOfferId";
                  type: "uint256";
              }];
              name: "AllOffersCancelled";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "delegate";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "bytes32";
                  name: "_rights";
                  type: "bytes32";
              }, {
                  indexed: false;
                  internalType: "bool";
                  name: "value";
                  type: "bool";
              }];
              name: "Delegated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "newFlashActionContract";
                  type: "address";
              }];
              name: "FlashActionContractUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "target";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "FlashActionExecuted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "newDuration";
                  type: "uint256";
              }];
              name: "LiquidationAuctionDurationUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "liquidator";
                  type: "address";
              }];
              name: "LiquidationContractUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256[]";
                  name: "offerId";
                  type: "uint256[]";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "loan";
                  type: "tuple";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "fee";
                  type: "uint256";
              }];
              name: "LoanEmitted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }];
              name: "LoanForeclosed";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }];
              name: "LoanLiquidated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "renegotiationId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "oldLoanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "newLoanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "loan";
                  type: "tuple";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "fee";
                  type: "uint256";
              }];
              name: "LoanRefinanced";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "newLoanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "loan";
                  type: "tuple";
              }, {
                  indexed: false;
                  internalType: "uint256[]";
                  name: "offerIds";
                  type: "uint256[]";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "totalFee";
                  type: "uint256";
              }];
              name: "LoanRefinancedFromNewOffers";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "totalRepayment";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "fee";
                  type: "uint256";
              }];
              name: "LoanRepaid";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "liquidator";
                  type: "address";
              }];
              name: "LoanSentToLiquidator";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "_minimum";
                  type: "uint256";
              }];
              name: "MinAprImprovementUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "newMinBid";
                  type: "uint256";
              }];
              name: "MinBidLiquidationUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "minLockPeriod";
                  type: "uint256";
              }];
              name: "MinLockPeriodUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "lender";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "offerId";
                  type: "uint256";
              }];
              name: "OfferCancelled";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "address";
                  name: "user";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "newOwner";
                  type: "address";
              }];
              name: "OwnershipTransferred";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  components: readonly [{
                      internalType: "address";
                      name: "recipient";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fraction";
                      type: "uint256";
                  }];
                  indexed: false;
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  name: "fee";
                  type: "tuple";
              }];
              name: "ProtocolFeePendingUpdate";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  components: readonly [{
                      internalType: "address";
                      name: "recipient";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fraction";
                      type: "uint256";
                  }];
                  indexed: false;
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  name: "fee";
                  type: "tuple";
              }];
              name: "ProtocolFeeUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "lender";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "renegotiationId";
                  type: "uint256";
              }];
              name: "RenegotiationOfferCancelled";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "delegate";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "collection";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "tokenId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "bytes32";
                  name: "_rights";
                  type: "bytes32";
              }];
              name: "RevokeDelegate";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "newOwner";
                  type: "address";
              }];
              name: "TransferOwnerRequested";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "contractAdded";
                  type: "address";
              }];
              name: "WhitelistedCallbackContractAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "contractRemoved";
                  type: "address";
              }];
              name: "WhitelistedCallbackContractRemoved";
              type: "event";
          }, {
              inputs: readonly [];
              name: "AddressZeroError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_lender";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "_offerId";
                  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 [{
                  internalType: "uint256";
                  name: "length";
                  type: "uint256";
              }];
              name: "ECDSAInvalidSignatureLength";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "s";
                  type: "bytes32";
              }];
              name: "ECDSAInvalidSignatureS";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_expirationTime";
                  type: "uint256";
              }];
              name: "ExpiredOfferError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "InvalidAddressesError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_amount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "_principalAmount";
                  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 [{
                  internalType: "uint256";
                  name: "_loanId";
                  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 [{
                  internalType: "address";
                  name: "_liquidator";
                  type: "address";
              }];
              name: "LiquidatorOnlyError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "LoanExpiredError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "LoanLockedError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_expirationTime";
                  type: "uint256";
              }];
              name: "LoanNotDueError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_lender";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "_newMinOfferId";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "_minOfferId";
                  type: "uint256";
              }];
              name: "LowOfferIdError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_lender";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "_newMinRenegotiationOfferId";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "_minOfferId";
                  type: "uint256";
              }];
              name: "LowRenegotiationOfferIdError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "MaxCapacityExceededError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "MismatchError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "i";
                  type: "uint256";
              }, {
                  internalType: "bytes";
                  name: "returndata";
                  type: "bytes";
              }];
              name: "MulticallFailed";
              type: "error";
          }, {
              inputs: readonly [];
              name: "NFTNotReturnedError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "NotStrictlyImprovedError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_pendingProtocolFeeSetTime";
                  type: "uint256";
              }];
              name: "TooEarlyError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "TooManyTranchesError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "TooSoonError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "minTimestamp";
                  type: "uint256";
              }];
              name: "TrancheCannotBeRefinancedError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "ZeroInterestError";
              type: "error";
          }] | readonly [{
              type: "constructor";
              inputs: readonly [{
                  name: "loanLiquidator";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "protocolFee";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "currencyManager";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "collectionManager";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "maxTranches";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "minLockPeriod";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "delegateRegistry";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "loanManagerRegistry";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "flashActionContract";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "minWaitTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "DOMAIN_SEPARATOR";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "FEE_UPDATE_NOTICE";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "INITIAL_DOMAIN_SEPARATOR";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MAX_AUCTION_DURATION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint48";
                  internalType: "uint48";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MIN_AUCTION_DURATION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint48";
                  internalType: "uint48";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MIN_BID_LIQUIDATION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MIN_WAIT_TIME";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "VERSION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "addNewTranche";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  components: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "trancheIndex";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_renegotiationOfferSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "addWhitelistedCallbackContract";
              inputs: readonly [{
                  name: "_contract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "cancelOffer";
              inputs: readonly [{
                  name: "_offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "cancelRenegotiationOffer";
              inputs: readonly [{
                  name: "_renegotiationId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "delegate";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_delegate";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  internalType: "bytes32";
              }, {
                  name: "_value";
                  type: "bool";
                  internalType: "bool";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "emitLoan";
              inputs: readonly [{
                  name: "_loanExecutionData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  components: readonly [{
                      name: "executionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.ExecutionData";
                      components: readonly [{
                          name: "offerExecution";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.OfferExecution[]";
                          components: readonly [{
                              name: "offer";
                              type: "tuple";
                              internalType: "struct IMultiSourceLoan.LoanOffer";
                              components: readonly [{
                                  name: "offerId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lender";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "fee";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "capacity";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "nftCollateralAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "nftCollateralTokenId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "principalAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "principalAmount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "aprBps";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "expirationTime";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "duration";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "maxSeniorRepayment";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "validators";
                                  type: "tuple[]";
                                  internalType: "struct IBaseLoan.OfferValidator[]";
                                  components: readonly [{
                                      name: "validator";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "arguments";
                                      type: "bytes";
                                      internalType: "bytes";
                                  }];
                              }];
                          }, {
                              name: "amount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lenderOfferSignature";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "tokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalReceiver";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "callbackData";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }, {
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "borrowerOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "executeFlashAction";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_target";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_data";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "getCollectionManager";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getCurrencyManager";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getDelegateRegistry";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getFlashActionContract";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLiquidationAuctionDuration";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint48";
                  internalType: "uint48";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLiquidator";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLoanHash";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLoanManagerRegistry";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "contract ILoanManagerRegistry";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getMaxTranches";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getMinImprovementApr";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getMinLockPeriod";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getPendingProtocolFee";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getPendingProtocolFeeSetTime";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getProtocolFee";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getTotalLoansIssued";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getUsedCapacity";
              inputs: readonly [{
                  name: "_lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "isOfferCancelled";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "notActive";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "isRenegotiationOfferCancelled";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "renegotiationIf";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "notActive";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "isWhitelistedCallbackContract";
              inputs: readonly [{
                  name: "_contract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "liquidateLoan";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "loanLiquidated";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "multicall";
              inputs: readonly [{
                  name: "data";
                  type: "bytes[]";
                  internalType: "bytes[]";
              }];
              outputs: readonly [{
                  name: "results";
                  type: "bytes[]";
                  internalType: "bytes[]";
              }];
              stateMutability: "payable";
          }, {
              type: "function";
              name: "name";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "string";
                  internalType: "string";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "onERC721Received";
              inputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes4";
                  internalType: "bytes4";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "owner";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "pendingOwner";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "pendingOwnerTime";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "refinanceFromLoanExecutionData";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loanExecutionData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  components: readonly [{
                      name: "executionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.ExecutionData";
                      components: readonly [{
                          name: "offerExecution";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.OfferExecution[]";
                          components: readonly [{
                              name: "offer";
                              type: "tuple";
                              internalType: "struct IMultiSourceLoan.LoanOffer";
                              components: readonly [{
                                  name: "offerId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lender";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "fee";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "capacity";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "nftCollateralAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "nftCollateralTokenId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "principalAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "principalAmount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "aprBps";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "expirationTime";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "duration";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "maxSeniorRepayment";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "validators";
                                  type: "tuple[]";
                                  internalType: "struct IBaseLoan.OfferValidator[]";
                                  components: readonly [{
                                      name: "validator";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "arguments";
                                      type: "bytes";
                                      internalType: "bytes";
                                  }];
                              }];
                          }, {
                              name: "amount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lenderOfferSignature";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "tokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalReceiver";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "callbackData";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }, {
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "borrowerOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "refinanceFull";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  components: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "trancheIndex";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_renegotiationOfferSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "refinancePartial";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  components: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "trancheIndex";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "removeWhitelistedCallbackContract";
              inputs: readonly [{
                  name: "_contract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "repayLoan";
              inputs: readonly [{
                  name: "_repaymentData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                  components: readonly [{
                      name: "data";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "callbackData";
                          type: "bytes";
                          internalType: "bytes";
                      }, {
                          name: "shouldDelegate";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "borrowerSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "requestTransferOwner";
              inputs: readonly [{
                  name: "_newOwner";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "revokeDelegate";
              inputs: readonly [{
                  name: "_delegate";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_collection";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_tokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "setFlashActionContract";
              inputs: readonly [{
                  name: "_newFlashActionContract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "setMinLockPeriod";
              inputs: readonly [{
                  name: "__minLockPeriod";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "setProtocolFee";
              inputs: readonly [];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "transferOwnership";
              inputs: readonly [];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "transferOwnership";
              inputs: readonly [{
                  name: "newOwner";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateLiquidationAuctionDuration";
              inputs: readonly [{
                  name: "_newDuration";
                  type: "uint48";
                  internalType: "uint48";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateLiquidationContract";
              inputs: readonly [{
                  name: "__loanLiquidator";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateMinImprovementApr";
              inputs: readonly [{
                  name: "_newMinimum";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateProtocolFee";
              inputs: readonly [{
                  name: "_newProtocolFee";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "event";
              name: "Delegated";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "delegate";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  indexed: false;
                  internalType: "bytes32";
              }, {
                  name: "value";
                  type: "bool";
                  indexed: false;
                  internalType: "bool";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "FlashActionContractUpdated";
              inputs: readonly [{
                  name: "newFlashActionContract";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "FlashActionExecuted";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "target";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "data";
                  type: "bytes";
                  indexed: false;
                  internalType: "bytes";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LiquidationAuctionDurationUpdated";
              inputs: readonly [{
                  name: "newDuration";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LiquidationContractUpdated";
              inputs: readonly [{
                  name: "liquidator";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanEmitted";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "offerId";
                  type: "uint256[]";
                  indexed: false;
                  internalType: "uint256[]";
              }, {
                  name: "loan";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "fee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanForeclosed";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanLiquidated";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanRefinanced";
              inputs: readonly [{
                  name: "renegotiationId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "oldLoanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "newLoanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "loan";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "fee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanRefinancedFromNewOffers";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "newLoanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "loan";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "offerIds";
                  type: "uint256[]";
                  indexed: false;
                  internalType: "uint256[]";
              }, {
                  name: "totalFee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanRepaid";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "totalRepayment";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "fee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanSentToLiquidator";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "liquidator";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "MinAprImprovementUpdated";
              inputs: readonly [{
                  name: "_minimum";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "MinBidLiquidationUpdated";
              inputs: readonly [{
                  name: "newMinBid";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "MinLockPeriodUpdated";
              inputs: readonly [{
                  name: "minLockPeriod";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "OfferCancelled";
              inputs: readonly [{
                  name: "lender";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "offerId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "OwnershipTransferred";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }, {
                  name: "newOwner";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "ProtocolFeePendingUpdate";
              inputs: readonly [{
                  name: "fee";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "ProtocolFeeUpdated";
              inputs: readonly [{
                  name: "fee";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "RenegotiationOfferCancelled";
              inputs: readonly [{
                  name: "lender";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "renegotiationId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "RevokeDelegate";
              inputs: readonly [{
                  name: "delegate";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "collection";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  indexed: false;
                  internalType: "bytes32";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "TransferOwnerRequested";
              inputs: readonly [{
                  name: "newOwner";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "WhitelistedCallbackContractAdded";
              inputs: readonly [{
                  name: "contractAdded";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "WhitelistedCallbackContractRemoved";
              inputs: readonly [{
                  name: "contractRemoved";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "error";
              name: "AddressZeroError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "CancelledOrExecutedOfferError";
              inputs: readonly [{
                  name: "_lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "CollectionNotWhitelistedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "CurrencyNotWhitelistedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "ECDSAInvalidSignature";
              inputs: readonly [];
          }, {
              type: "error";
              name: "ECDSAInvalidSignatureLength";
              inputs: readonly [{
                  name: "length";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "ECDSAInvalidSignatureS";
              inputs: readonly [{
                  name: "s";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
          }, {
              type: "error";
              name: "ExpiredOfferError";
              inputs: readonly [{
                  name: "_expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "InvalidAddressesError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidAmountError";
              inputs: readonly [{
                  name: "_amount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "InvalidCallbackError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCallerError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCollateralError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCollateralIdError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidDurationError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidInputError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidLoanError";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "InvalidMethodError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidParametersError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidRenegotiationOfferError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidSignatureError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidTrancheError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LiquidatorOnlyError";
              inputs: readonly [{
                  name: "_liquidator";
                  type: "address";
                  internalType: "address";
              }];
          }, {
              type: "error";
              name: "LoanExpiredError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LoanLockedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LoanNotDueError";
              inputs: readonly [{
                  name: "_expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "MaxCapacityExceededError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "MismatchError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "MulticallFailed";
              inputs: readonly [{
                  name: "i";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "returndata";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }, {
              type: "error";
              name: "NFTNotReturnedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "NotStrictlyImprovedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "TooEarlyError";
              inputs: readonly [{
                  name: "_pendingProtocolFeeSetTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "TooManyTranchesError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "TooSoonError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "TrancheCannotBeRefinancedError";
              inputs: readonly [{
                  name: "minTimestamp";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "ZeroInterestError";
              inputs: readonly [];
          }] | readonly [{
              type: "constructor";
              inputs: readonly [{
                  name: "loanLiquidator";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "protocolFee";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "currencyManager";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "collectionManager";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "maxTranches";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "minLockPeriod";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "delegateRegistry";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "loanManagerRegistry";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "flashActionContract";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "minWaitTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "DOMAIN_SEPARATOR";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "FEE_UPDATE_NOTICE";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "INITIAL_DOMAIN_SEPARATOR";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MAX_AUCTION_DURATION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint48";
                  internalType: "uint48";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MIN_AUCTION_DURATION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint48";
                  internalType: "uint48";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MIN_BID_LIQUIDATION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MIN_WAIT_TIME";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "VERSION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "addNewTranche";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  components: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "trancheIndex";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "_renegotiationOfferSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "addWhitelistedCallbackContract";
              inputs: readonly [{
                  name: "_contract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "cancelOffer";
              inputs: readonly [{
                  name: "_offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "cancelRenegotiationOffer";
              inputs: readonly [{
                  name: "_renegotiationId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "delegate";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "_delegate";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  internalType: "bytes32";
              }, {
                  name: "_value";
                  type: "bool";
                  internalType: "bool";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "emitLoan";
              inputs: readonly [{
                  name: "_loanExecutionData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  components: readonly [{
                      name: "executionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.ExecutionData";
                      components: readonly [{
                          name: "offerExecution";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.OfferExecution[]";
                          components: readonly [{
                              name: "offer";
                              type: "tuple";
                              internalType: "struct IMultiSourceLoan.LoanOffer";
                              components: readonly [{
                                  name: "offerId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lender";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "fee";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "capacity";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "nftCollateralAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "nftCollateralTokenId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "principalAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "principalAmount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "aprBps";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "expirationTime";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "duration";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "maxSeniorRepayment";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "validators";
                                  type: "tuple[]";
                                  internalType: "struct IBaseLoan.OfferValidator[]";
                                  components: readonly [{
                                      name: "validator";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "arguments";
                                      type: "bytes";
                                      internalType: "bytes";
                                  }];
                              }, {
                                  name: "lenderRefinanceDisabled";
                                  type: "bool";
                                  internalType: "bool";
                              }, {
                                  name: "borrower";
                                  type: "address";
                                  internalType: "address";
                              }];
                          }, {
                              name: "amount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lenderOfferSignature";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "tokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalReceiver";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "callbackData";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }, {
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "borrowerOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "executeFlashAction";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "_target";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_data";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "getCollectionManager";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getCurrencyManager";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getDelegateRegistry";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getFlashActionContract";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLiquidationAuctionDuration";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint48";
                  internalType: "uint48";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLiquidator";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLoanHash";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLoanManagerRegistry";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "contract ILoanManagerRegistry";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getMaxTranches";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getMinImprovementApr";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getMinLockPeriod";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getPendingProtocolFee";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getPendingProtocolFeeSetTime";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getProtocolFee";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getTotalLoansIssued";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getUsedCapacity";
              inputs: readonly [{
                  name: "_lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "isOfferCancelled";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "notActive";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "isRenegotiationOfferCancelled";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "renegotiationIf";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "notActive";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "isWhitelistedCallbackContract";
              inputs: readonly [{
                  name: "_contract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "liquidateLoan";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "multicall";
              inputs: readonly [{
                  name: "data";
                  type: "bytes[]";
                  internalType: "bytes[]";
              }];
              outputs: readonly [{
                  name: "results";
                  type: "bytes[]";
                  internalType: "bytes[]";
              }];
              stateMutability: "payable";
          }, {
              type: "function";
              name: "name";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "string";
                  internalType: "string";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "onERC721Received";
              inputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes4";
                  internalType: "bytes4";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "owner";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "pendingOwner";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "pendingOwnerTime";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "refinanceFromLoanExecutionData";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "_loanExecutionData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  components: readonly [{
                      name: "executionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.ExecutionData";
                      components: readonly [{
                          name: "offerExecution";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.OfferExecution[]";
                          components: readonly [{
                              name: "offer";
                              type: "tuple";
                              internalType: "struct IMultiSourceLoan.LoanOffer";
                              components: readonly [{
                                  name: "offerId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lender";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "fee";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "capacity";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "nftCollateralAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "nftCollateralTokenId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "principalAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "principalAmount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "aprBps";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "expirationTime";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "duration";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "maxSeniorRepayment";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "validators";
                                  type: "tuple[]";
                                  internalType: "struct IBaseLoan.OfferValidator[]";
                                  components: readonly [{
                                      name: "validator";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "arguments";
                                      type: "bytes";
                                      internalType: "bytes";
                                  }];
                              }, {
                                  name: "lenderRefinanceDisabled";
                                  type: "bool";
                                  internalType: "bool";
                              }, {
                                  name: "borrower";
                                  type: "address";
                                  internalType: "address";
                              }];
                          }, {
                              name: "amount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lenderOfferSignature";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "tokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalReceiver";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "callbackData";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }, {
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "borrowerOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "refinanceFull";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  components: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "trancheIndex";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "_renegotiationOfferSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "refinancePartial";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  components: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "trancheIndex";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "removeWhitelistedCallbackContract";
              inputs: readonly [{
                  name: "_contract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "repayLoan";
              inputs: readonly [{
                  name: "_repaymentData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                  components: readonly [{
                      name: "data";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "callbackData";
                          type: "bytes";
                          internalType: "bytes";
                      }, {
                          name: "shouldDelegate";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "borrowerSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "requestTransferOwner";
              inputs: readonly [{
                  name: "_newOwner";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "revokeDelegate";
              inputs: readonly [{
                  name: "_delegate";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_collection";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_tokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "setFlashActionContract";
              inputs: readonly [{
                  name: "_newFlashActionContract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "setMinLockPeriod";
              inputs: readonly [{
                  name: "__minLockPeriod";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "setProtocolFee";
              inputs: readonly [];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "transferOwnership";
              inputs: readonly [];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateLiquidationAuctionDuration";
              inputs: readonly [{
                  name: "_newDuration";
                  type: "uint48";
                  internalType: "uint48";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateLiquidationContract";
              inputs: readonly [{
                  name: "__loanLiquidator";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateMinImprovementApr";
              inputs: readonly [{
                  name: "_newMinimum";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateProtocolFee";
              inputs: readonly [{
                  name: "_newProtocolFee";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "event";
              name: "Delegated";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "delegate";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  indexed: false;
                  internalType: "bytes32";
              }, {
                  name: "value";
                  type: "bool";
                  indexed: false;
                  internalType: "bool";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "FlashActionContractUpdated";
              inputs: readonly [{
                  name: "newFlashActionContract";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "FlashActionExecuted";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "target";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "data";
                  type: "bytes";
                  indexed: false;
                  internalType: "bytes";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LiquidationAuctionDurationUpdated";
              inputs: readonly [{
                  name: "newDuration";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LiquidationContractUpdated";
              inputs: readonly [{
                  name: "liquidator";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanEmitted";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "offerId";
                  type: "uint256[]";
                  indexed: false;
                  internalType: "uint256[]";
              }, {
                  name: "loan";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "fee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanForeclosed";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanLiquidated";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "foreclosed";
                  type: "bool";
                  indexed: false;
                  internalType: "bool";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanRefinanced";
              inputs: readonly [{
                  name: "renegotiationId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "oldLoanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "newLoanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "loan";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "fee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanRefinancedFromNewOffers";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "newLoanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "loan";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "offerIds";
                  type: "uint256[]";
                  indexed: false;
                  internalType: "uint256[]";
              }, {
                  name: "totalFee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanRepaid";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "totalRepayment";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "fee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanSentToLiquidator";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "liquidator";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "MinAprImprovementUpdated";
              inputs: readonly [{
                  name: "_minimum";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "MinBidLiquidationUpdated";
              inputs: readonly [{
                  name: "newMinBid";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "MinLockPeriodUpdated";
              inputs: readonly [{
                  name: "minLockPeriod";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "OfferCancelled";
              inputs: readonly [{
                  name: "lender";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "offerId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "OwnershipTransferred";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }, {
                  name: "newOwner";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "ProtocolFeePendingUpdate";
              inputs: readonly [{
                  name: "fee";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "ProtocolFeeUpdated";
              inputs: readonly [{
                  name: "fee";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "RenegotiationOfferCancelled";
              inputs: readonly [{
                  name: "lender";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "renegotiationId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "RevokeDelegate";
              inputs: readonly [{
                  name: "delegate";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "collection";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  indexed: false;
                  internalType: "bytes32";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "TransferOwnerRequested";
              inputs: readonly [{
                  name: "newOwner";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "WhitelistedCallbackContractAdded";
              inputs: readonly [{
                  name: "contractAdded";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "WhitelistedCallbackContractRemoved";
              inputs: readonly [{
                  name: "contractRemoved";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "error";
              name: "AddressZeroError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "CancelledOrExecutedOfferError";
              inputs: readonly [{
                  name: "_lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "CollectionNotWhitelistedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "CurrencyNotWhitelistedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "ECDSAInvalidSignature";
              inputs: readonly [];
          }, {
              type: "error";
              name: "ECDSAInvalidSignatureLength";
              inputs: readonly [{
                  name: "length";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "ECDSAInvalidSignatureS";
              inputs: readonly [{
                  name: "s";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
          }, {
              type: "error";
              name: "ExpiredOfferError";
              inputs: readonly [{
                  name: "_expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "InvalidAddressesError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidAmountError";
              inputs: readonly [{
                  name: "_amount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "InvalidBorrowerError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCallbackError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCallerError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCollateralError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCollateralIdError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidDurationError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidInputError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidLoanError";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "InvalidLockPeriodError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidMethodError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidRenegotiationOfferError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidSignatureError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidTrancheError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LenderRefinanceDisabledError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LoanExpiredError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LoanLockedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LoanNotDueError";
              inputs: readonly [{
                  name: "_expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "MaxCapacityExceededError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "MulticallFailed";
              inputs: readonly [{
                  name: "i";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "returndata";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }, {
              type: "error";
              name: "NFTNotReturnedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "NotStrictlyImprovedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "TooEarlyError";
              inputs: readonly [{
                  name: "_pendingProtocolFeeSetTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "TooManyTranchesError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "TooSoonError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "TrancheCannotBeRefinancedError";
              inputs: readonly [{
                  name: "minTimestamp";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "ZeroInterestError";
              inputs: readonly [];
          }], {} | {}>
          safeContractWrite: {
              transferOwnership: ((args, options?) => Promise<`0x${string}`>);
              liquidateLoan: ((args, options?) => Promise<`0x${string}`>);
              onERC721Received: ((args, options?) => Promise<`0x${string}`>);
              cancelAllOffers: ((args, options?) => Promise<`0x${string}`>);
              cancelOffer: ((args, options?) => Promise<`0x${string}`>);
              cancelRenegotiationOffer: ((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}`>);
              multicall: ((args, options?) => Promise<`0x${string}`>);
              delegate: ((args, options?) => Promise<`0x${string}`>);
              revokeDelegate: ((args, options?) => Promise<`0x${string}`>);
              emitLoan: ((args, options?) => Promise<`0x${string}`>);
              executeFlashAction: ((args, options?) => Promise<`0x${string}`>);
              loanLiquidated: ((args, options?) => Promise<`0x${string}`>);
              refinanceFull: ((args, options?) => Promise<`0x${string}`>);
              refinancePartial: ((args, options?) => Promise<`0x${string}`>);
              repayLoan: ((args, options?) => Promise<`0x${string}`>);
              setFlashActionContract: ((args, options?) => Promise<`0x${string}`>);
              setMinLockPeriod: ((args, options?) => Promise<`0x${string}`>);
              addWhitelistedCallbackContract: ((args, options?) => Promise<`0x${string}`>);
              removeWhitelistedCallbackContract: ((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;
                      lenderRefinanceDisabled: boolean;
                  }]
                • 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}`>

          • 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}`>

          • 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}`>

          • 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}`, 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;
                      lenderRefinanceDisabled: boolean;
                  }, `0x${string}`, `0x${string}`, 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, `0x${string}`]
                • 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}`; }[]; loanId: bigint; nftCollateralAddress: `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}`; }[]; lenderRefinanceDisabled: boolean; borrower: `0x${string}`; }; amount: bigint; lenderOfferSignature: `0x${string}`; }[]; loanId: bigint; nftCollateralAddress: `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}`>

          • 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;
                      lenderRefinanceDisabled: boolean;
                  }, `0x${string}`, `0x${string}`]
                • 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;
                  }]
                • 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;
                      lenderRefinanceDisabled: boolean;
                  }, `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;
                      lenderRefinanceDisabled: boolean;
                  }]
                • 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: 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: 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; lenderRefinanceDisabled: boolean; };
                      borrowerSignature: `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}`>

          • 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}`>

          • 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}`>

          • 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;
                      lenderRefinanceDisabled: boolean;
                  }, `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}`; }[]; loanId: bigint; nftCollateralAddress: `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;
                      lenderRefinanceDisabled: boolean;
                  }, {
                      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}`; }[]; lenderRefinanceDisabled: boolean; borrower: `0x${string}`; }; amount: bigint; lenderOfferSignature: `0x${string}`; }[]; loanId: bigint; nftCollateralAddress: `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 [{
              inputs: readonly [{
                  internalType: "address";
                  name: "loanLiquidator";
                  type: "address";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "recipient";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fraction";
                      type: "uint256";
                  }];
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  name: "protocolFee";
                  type: "tuple";
              }, {
                  internalType: "address";
                  name: "currencyManager";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "collectionManager";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "maxTranches";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "minLockPeriod";
                  type: "uint256";
              }, {
                  internalType: "address";
                  name: "delegateRegistry";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "loanManagerRegistry";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "flashActionContract";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "minWaitTime";
                  type: "uint256";
              }];
              stateMutability: "nonpayable";
              type: "constructor";
          }, {
              inputs: readonly [];
              name: "DOMAIN_SEPARATOR";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "FEE_UPDATE_NOTICE";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "INITIAL_DOMAIN_SEPARATOR";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MAX_AUCTION_DURATION";
              outputs: readonly [{
                  internalType: "uint48";
                  name: "";
                  type: "uint48";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MIN_AUCTION_DURATION";
              outputs: readonly [{
                  internalType: "uint48";
                  name: "";
                  type: "uint48";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MIN_BID_LIQUIDATION";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "MIN_WAIT_TIME";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "VERSION";
              outputs: readonly [{
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  components: readonly [{
                      internalType: "uint256";
                      name: "renegotiationId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fee";
                      type: "uint256";
                  }, {
                      internalType: "uint256[]";
                      name: "trancheIndex";
                      type: "uint256[]";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "expirationTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  name: "_renegotiationOffer";
                  type: "tuple";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }, {
                  internalType: "bytes";
                  name: "_renegotiationOfferSignature";
                  type: "bytes";
              }];
              name: "addNewTranche";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_contract";
                  type: "address";
              }];
              name: "addWhitelistedCallbackContract";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_minOfferId";
                  type: "uint256";
              }];
              name: "cancelAllOffers";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_offerId";
                  type: "uint256";
              }];
              name: "cancelOffer";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_renegotiationId";
                  type: "uint256";
              }];
              name: "cancelRenegotiationOffer";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_loanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "loan";
                  type: "tuple";
              }, {
                  internalType: "address";
                  name: "_delegate";
                  type: "address";
              }, {
                  internalType: "bytes32";
                  name: "_rights";
                  type: "bytes32";
              }, {
                  internalType: "bool";
                  name: "_value";
                  type: "bool";
              }];
              name: "delegate";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  components: readonly [{
                      components: readonly [{
                          components: readonly [{
                              components: readonly [{
                                  internalType: "uint256";
                                  name: "offerId";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "lender";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "fee";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "capacity";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "nftCollateralAddress";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "nftCollateralTokenId";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "principalAddress";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "principalAmount";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "aprBps";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "expirationTime";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "duration";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "maxSeniorRepayment";
                                  type: "uint256";
                              }, {
                                  components: readonly [{
                                      internalType: "address";
                                      name: "validator";
                                      type: "address";
                                  }, {
                                      internalType: "bytes";
                                      name: "arguments";
                                      type: "bytes";
                                  }];
                                  internalType: "struct IBaseLoan.OfferValidator[]";
                                  name: "validators";
                                  type: "tuple[]";
                              }];
                              internalType: "struct IMultiSourceLoan.LoanOffer";
                              name: "offer";
                              type: "tuple";
                          }, {
                              internalType: "uint256";
                              name: "amount";
                              type: "uint256";
                          }, {
                              internalType: "bytes";
                              name: "lenderOfferSignature";
                              type: "bytes";
                          }];
                          internalType: "struct IMultiSourceLoan.OfferExecution[]";
                          name: "offerExecution";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "tokenId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "expirationTime";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "principalReceiver";
                          type: "address";
                      }, {
                          internalType: "bytes";
                          name: "callbackData";
                          type: "bytes";
                      }];
                      internalType: "struct IMultiSourceLoan.ExecutionData";
                      name: "executionData";
                      type: "tuple";
                  }, {
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "bytes";
                      name: "borrowerOfferSignature";
                      type: "bytes";
                  }];
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  name: "_loanExecutionData";
                  type: "tuple";
              }];
              name: "emitLoan";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_loanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }, {
                  internalType: "address";
                  name: "_target";
                  type: "address";
              }, {
                  internalType: "bytes";
                  name: "_data";
                  type: "bytes";
              }];
              name: "executeFlashAction";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getCollectionManager";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getCurrencyManager";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getDelegateRegistry";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getFlashActionContract";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getLiquidationAuctionDuration";
              outputs: readonly [{
                  internalType: "uint48";
                  name: "";
                  type: "uint48";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getLiquidator";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_loanId";
                  type: "uint256";
              }];
              name: "getLoanHash";
              outputs: readonly [{
                  internalType: "bytes32";
                  name: "";
                  type: "bytes32";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getLoanManagerRegistry";
              outputs: readonly [{
                  internalType: "contract ILoanManagerRegistry";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getMaxTranches";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getMinImprovementApr";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getMinLockPeriod";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getPendingProtocolFee";
              outputs: readonly [{
                  components: readonly [{
                      internalType: "address";
                      name: "recipient";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fraction";
                      type: "uint256";
                  }];
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getPendingProtocolFeeSetTime";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getProtocolFee";
              outputs: readonly [{
                  components: readonly [{
                      internalType: "address";
                      name: "recipient";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fraction";
                      type: "uint256";
                  }];
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "getTotalLoansIssued";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_lender";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "_offerId";
                  type: "uint256";
              }];
              name: "getUsedCapacity";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "user";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "offerId";
                  type: "uint256";
              }];
              name: "isOfferCancelled";
              outputs: readonly [{
                  internalType: "bool";
                  name: "notActive";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "user";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "renegotiationIf";
                  type: "uint256";
              }];
              name: "isRenegotiationOfferCancelled";
              outputs: readonly [{
                  internalType: "bool";
                  name: "notActive";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_contract";
                  type: "address";
              }];
              name: "isWhitelistedCallbackContract";
              outputs: readonly [{
                  internalType: "bool";
                  name: "";
                  type: "bool";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_loanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }];
              name: "liquidateLoan";
              outputs: readonly [{
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_loanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }];
              name: "loanLiquidated";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "user";
                  type: "address";
              }];
              name: "minOfferId";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "minOfferId";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "bytes[]";
                  name: "data";
                  type: "bytes[]";
              }];
              name: "multicall";
              outputs: readonly [{
                  internalType: "bytes[]";
                  name: "results";
                  type: "bytes[]";
              }];
              stateMutability: "payable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "name";
              outputs: readonly [{
                  internalType: "string";
                  name: "";
                  type: "string";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  internalType: "bytes";
                  name: "";
                  type: "bytes";
              }];
              name: "onERC721Received";
              outputs: readonly [{
                  internalType: "bytes4";
                  name: "";
                  type: "bytes4";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [];
              name: "owner";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "pendingOwner";
              outputs: readonly [{
                  internalType: "address";
                  name: "";
                  type: "address";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [];
              name: "pendingOwnerTime";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }];
              stateMutability: "view";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_loanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }, {
                  components: readonly [{
                      components: readonly [{
                          components: readonly [{
                              components: readonly [{
                                  internalType: "uint256";
                                  name: "offerId";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "lender";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "fee";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "capacity";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "nftCollateralAddress";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "nftCollateralTokenId";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "principalAddress";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "principalAmount";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "aprBps";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "expirationTime";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "duration";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "maxSeniorRepayment";
                                  type: "uint256";
                              }, {
                                  components: readonly [{
                                      internalType: "address";
                                      name: "validator";
                                      type: "address";
                                  }, {
                                      internalType: "bytes";
                                      name: "arguments";
                                      type: "bytes";
                                  }];
                                  internalType: "struct IBaseLoan.OfferValidator[]";
                                  name: "validators";
                                  type: "tuple[]";
                              }];
                              internalType: "struct IMultiSourceLoan.LoanOffer";
                              name: "offer";
                              type: "tuple";
                          }, {
                              internalType: "uint256";
                              name: "amount";
                              type: "uint256";
                          }, {
                              internalType: "bytes";
                              name: "lenderOfferSignature";
                              type: "bytes";
                          }];
                          internalType: "struct IMultiSourceLoan.OfferExecution[]";
                          name: "offerExecution";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "tokenId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "expirationTime";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "principalReceiver";
                          type: "address";
                      }, {
                          internalType: "bytes";
                          name: "callbackData";
                          type: "bytes";
                      }];
                      internalType: "struct IMultiSourceLoan.ExecutionData";
                      name: "executionData";
                      type: "tuple";
                  }, {
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "bytes";
                      name: "borrowerOfferSignature";
                      type: "bytes";
                  }];
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  name: "_loanExecutionData";
                  type: "tuple";
              }];
              name: "refinanceFromLoanExecutionData";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  components: readonly [{
                      internalType: "uint256";
                      name: "renegotiationId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fee";
                      type: "uint256";
                  }, {
                      internalType: "uint256[]";
                      name: "trancheIndex";
                      type: "uint256[]";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "expirationTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  name: "_renegotiationOffer";
                  type: "tuple";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }, {
                  internalType: "bytes";
                  name: "_renegotiationOfferSignature";
                  type: "bytes";
              }];
              name: "refinanceFull";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  components: readonly [{
                      internalType: "uint256";
                      name: "renegotiationId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fee";
                      type: "uint256";
                  }, {
                      internalType: "uint256[]";
                      name: "trancheIndex";
                      type: "uint256[]";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "aprBps";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "expirationTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  name: "_renegotiationOffer";
                  type: "tuple";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "_loan";
                  type: "tuple";
              }];
              name: "refinancePartial";
              outputs: readonly [{
                  internalType: "uint256";
                  name: "";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "";
                  type: "tuple";
              }];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_contract";
                  type: "address";
              }];
              name: "removeWhitelistedCallbackContract";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  components: readonly [{
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "bytes";
                          name: "callbackData";
                          type: "bytes";
                      }, {
                          internalType: "bool";
                          name: "shouldDelegate";
                          type: "bool";
                      }];
                      internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                      name: "data";
                      type: "tuple";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "loan";
                      type: "tuple";
                  }, {
                      internalType: "bytes";
                      name: "borrowerSignature";
                      type: "bytes";
                  }];
                  internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                  name: "_repaymentData";
                  type: "tuple";
              }];
              name: "repayLoan";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_newOwner";
                  type: "address";
              }];
              name: "requestTransferOwner";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_delegate";
                  type: "address";
              }, {
                  internalType: "address";
                  name: "_collection";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "_tokenId";
                  type: "uint256";
              }, {
                  internalType: "bytes32";
                  name: "_rights";
                  type: "bytes32";
              }];
              name: "revokeDelegate";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_newFlashActionContract";
                  type: "address";
              }];
              name: "setFlashActionContract";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "__minLockPeriod";
                  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 [{
                  internalType: "address";
                  name: "newOwner";
                  type: "address";
              }];
              name: "transferOwnership";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint48";
                  name: "_newDuration";
                  type: "uint48";
              }];
              name: "updateLiquidationAuctionDuration";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "__loanLiquidator";
                  type: "address";
              }];
              name: "updateLiquidationContract";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_newMinimum";
                  type: "uint256";
              }];
              name: "updateMinImprovementApr";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              inputs: readonly [{
                  components: readonly [{
                      internalType: "address";
                      name: "recipient";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fraction";
                      type: "uint256";
                  }];
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  name: "_newProtocolFee";
                  type: "tuple";
              }];
              name: "updateProtocolFee";
              outputs: readonly [];
              stateMutability: "nonpayable";
              type: "function";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "lender";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "minOfferId";
                  type: "uint256";
              }];
              name: "AllOffersCancelled";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "delegate";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "bytes32";
                  name: "_rights";
                  type: "bytes32";
              }, {
                  indexed: false;
                  internalType: "bool";
                  name: "value";
                  type: "bool";
              }];
              name: "Delegated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "newFlashActionContract";
                  type: "address";
              }];
              name: "FlashActionContractUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "target";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "bytes";
                  name: "data";
                  type: "bytes";
              }];
              name: "FlashActionExecuted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "newDuration";
                  type: "uint256";
              }];
              name: "LiquidationAuctionDurationUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "liquidator";
                  type: "address";
              }];
              name: "LiquidationContractUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256[]";
                  name: "offerId";
                  type: "uint256[]";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "loan";
                  type: "tuple";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "fee";
                  type: "uint256";
              }];
              name: "LoanEmitted";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }];
              name: "LoanForeclosed";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }];
              name: "LoanLiquidated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "renegotiationId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "oldLoanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "newLoanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "loan";
                  type: "tuple";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "fee";
                  type: "uint256";
              }];
              name: "LoanRefinanced";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "newLoanId";
                  type: "uint256";
              }, {
                  components: readonly [{
                      internalType: "address";
                      name: "borrower";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "nftCollateralTokenId";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "nftCollateralAddress";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "principalAddress";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "principalAmount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "startTime";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "duration";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "floor";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "accruedInterest";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      name: "tranche";
                      type: "tuple[]";
                  }, {
                      internalType: "uint256";
                      name: "protocolFee";
                      type: "uint256";
                  }];
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  name: "loan";
                  type: "tuple";
              }, {
                  indexed: false;
                  internalType: "uint256[]";
                  name: "offerIds";
                  type: "uint256[]";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "totalFee";
                  type: "uint256";
              }];
              name: "LoanRefinancedFromNewOffers";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "totalRepayment";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "fee";
                  type: "uint256";
              }];
              name: "LoanRepaid";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "loanId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "liquidator";
                  type: "address";
              }];
              name: "LoanSentToLiquidator";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "_minimum";
                  type: "uint256";
              }];
              name: "MinAprImprovementUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "newMinBid";
                  type: "uint256";
              }];
              name: "MinBidLiquidationUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "uint256";
                  name: "minLockPeriod";
                  type: "uint256";
              }];
              name: "MinLockPeriodUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "lender";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "offerId";
                  type: "uint256";
              }];
              name: "OfferCancelled";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: true;
                  internalType: "address";
                  name: "user";
                  type: "address";
              }, {
                  indexed: true;
                  internalType: "address";
                  name: "newOwner";
                  type: "address";
              }];
              name: "OwnershipTransferred";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  components: readonly [{
                      internalType: "address";
                      name: "recipient";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fraction";
                      type: "uint256";
                  }];
                  indexed: false;
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  name: "fee";
                  type: "tuple";
              }];
              name: "ProtocolFeePendingUpdate";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  components: readonly [{
                      internalType: "address";
                      name: "recipient";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "fraction";
                      type: "uint256";
                  }];
                  indexed: false;
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  name: "fee";
                  type: "tuple";
              }];
              name: "ProtocolFeeUpdated";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "lender";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "renegotiationId";
                  type: "uint256";
              }];
              name: "RenegotiationOfferCancelled";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "delegate";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "address";
                  name: "collection";
                  type: "address";
              }, {
                  indexed: false;
                  internalType: "uint256";
                  name: "tokenId";
                  type: "uint256";
              }, {
                  indexed: false;
                  internalType: "bytes32";
                  name: "_rights";
                  type: "bytes32";
              }];
              name: "RevokeDelegate";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "newOwner";
                  type: "address";
              }];
              name: "TransferOwnerRequested";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "contractAdded";
                  type: "address";
              }];
              name: "WhitelistedCallbackContractAdded";
              type: "event";
          }, {
              anonymous: false;
              inputs: readonly [{
                  indexed: false;
                  internalType: "address";
                  name: "contractRemoved";
                  type: "address";
              }];
              name: "WhitelistedCallbackContractRemoved";
              type: "event";
          }, {
              inputs: readonly [];
              name: "AddressZeroError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_lender";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "_offerId";
                  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 [{
                  internalType: "uint256";
                  name: "length";
                  type: "uint256";
              }];
              name: "ECDSAInvalidSignatureLength";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "bytes32";
                  name: "s";
                  type: "bytes32";
              }];
              name: "ECDSAInvalidSignatureS";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_expirationTime";
                  type: "uint256";
              }];
              name: "ExpiredOfferError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "InvalidAddressesError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_amount";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "_principalAmount";
                  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 [{
                  internalType: "uint256";
                  name: "_loanId";
                  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 [{
                  internalType: "address";
                  name: "_liquidator";
                  type: "address";
              }];
              name: "LiquidatorOnlyError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "LoanExpiredError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "LoanLockedError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_expirationTime";
                  type: "uint256";
              }];
              name: "LoanNotDueError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_lender";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "_newMinOfferId";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "_minOfferId";
                  type: "uint256";
              }];
              name: "LowOfferIdError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "address";
                  name: "_lender";
                  type: "address";
              }, {
                  internalType: "uint256";
                  name: "_newMinRenegotiationOfferId";
                  type: "uint256";
              }, {
                  internalType: "uint256";
                  name: "_minOfferId";
                  type: "uint256";
              }];
              name: "LowRenegotiationOfferIdError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "MaxCapacityExceededError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "MismatchError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "i";
                  type: "uint256";
              }, {
                  internalType: "bytes";
                  name: "returndata";
                  type: "bytes";
              }];
              name: "MulticallFailed";
              type: "error";
          }, {
              inputs: readonly [];
              name: "NFTNotReturnedError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "NotStrictlyImprovedError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "_pendingProtocolFeeSetTime";
                  type: "uint256";
              }];
              name: "TooEarlyError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "TooManyTranchesError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "TooSoonError";
              type: "error";
          }, {
              inputs: readonly [{
                  internalType: "uint256";
                  name: "minTimestamp";
                  type: "uint256";
              }];
              name: "TrancheCannotBeRefinancedError";
              type: "error";
          }, {
              inputs: readonly [];
              name: "ZeroInterestError";
              type: "error";
          }] | readonly [{
              type: "constructor";
              inputs: readonly [{
                  name: "loanLiquidator";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "protocolFee";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "currencyManager";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "collectionManager";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "maxTranches";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "minLockPeriod";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "delegateRegistry";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "loanManagerRegistry";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "flashActionContract";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "minWaitTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "DOMAIN_SEPARATOR";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "FEE_UPDATE_NOTICE";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "INITIAL_DOMAIN_SEPARATOR";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MAX_AUCTION_DURATION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint48";
                  internalType: "uint48";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MIN_AUCTION_DURATION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint48";
                  internalType: "uint48";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MIN_BID_LIQUIDATION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MIN_WAIT_TIME";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "VERSION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "addNewTranche";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  components: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "trancheIndex";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_renegotiationOfferSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "addWhitelistedCallbackContract";
              inputs: readonly [{
                  name: "_contract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "cancelOffer";
              inputs: readonly [{
                  name: "_offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "cancelRenegotiationOffer";
              inputs: readonly [{
                  name: "_renegotiationId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "delegate";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_delegate";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  internalType: "bytes32";
              }, {
                  name: "_value";
                  type: "bool";
                  internalType: "bool";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "emitLoan";
              inputs: readonly [{
                  name: "_loanExecutionData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  components: readonly [{
                      name: "executionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.ExecutionData";
                      components: readonly [{
                          name: "offerExecution";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.OfferExecution[]";
                          components: readonly [{
                              name: "offer";
                              type: "tuple";
                              internalType: "struct IMultiSourceLoan.LoanOffer";
                              components: readonly [{
                                  name: "offerId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lender";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "fee";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "capacity";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "nftCollateralAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "nftCollateralTokenId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "principalAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "principalAmount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "aprBps";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "expirationTime";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "duration";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "maxSeniorRepayment";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "validators";
                                  type: "tuple[]";
                                  internalType: "struct IBaseLoan.OfferValidator[]";
                                  components: readonly [{
                                      name: "validator";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "arguments";
                                      type: "bytes";
                                      internalType: "bytes";
                                  }];
                              }];
                          }, {
                              name: "amount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lenderOfferSignature";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "tokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalReceiver";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "callbackData";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }, {
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "borrowerOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "executeFlashAction";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_target";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_data";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "getCollectionManager";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getCurrencyManager";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getDelegateRegistry";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getFlashActionContract";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLiquidationAuctionDuration";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint48";
                  internalType: "uint48";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLiquidator";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLoanHash";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLoanManagerRegistry";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "contract ILoanManagerRegistry";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getMaxTranches";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getMinImprovementApr";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getMinLockPeriod";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getPendingProtocolFee";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getPendingProtocolFeeSetTime";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getProtocolFee";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getTotalLoansIssued";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getUsedCapacity";
              inputs: readonly [{
                  name: "_lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "isOfferCancelled";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "notActive";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "isRenegotiationOfferCancelled";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "renegotiationIf";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "notActive";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "isWhitelistedCallbackContract";
              inputs: readonly [{
                  name: "_contract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "liquidateLoan";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "loanLiquidated";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "multicall";
              inputs: readonly [{
                  name: "data";
                  type: "bytes[]";
                  internalType: "bytes[]";
              }];
              outputs: readonly [{
                  name: "results";
                  type: "bytes[]";
                  internalType: "bytes[]";
              }];
              stateMutability: "payable";
          }, {
              type: "function";
              name: "name";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "string";
                  internalType: "string";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "onERC721Received";
              inputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes4";
                  internalType: "bytes4";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "owner";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "pendingOwner";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "pendingOwnerTime";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "refinanceFromLoanExecutionData";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loanExecutionData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  components: readonly [{
                      name: "executionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.ExecutionData";
                      components: readonly [{
                          name: "offerExecution";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.OfferExecution[]";
                          components: readonly [{
                              name: "offer";
                              type: "tuple";
                              internalType: "struct IMultiSourceLoan.LoanOffer";
                              components: readonly [{
                                  name: "offerId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lender";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "fee";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "capacity";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "nftCollateralAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "nftCollateralTokenId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "principalAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "principalAmount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "aprBps";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "expirationTime";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "duration";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "maxSeniorRepayment";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "validators";
                                  type: "tuple[]";
                                  internalType: "struct IBaseLoan.OfferValidator[]";
                                  components: readonly [{
                                      name: "validator";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "arguments";
                                      type: "bytes";
                                      internalType: "bytes";
                                  }];
                              }];
                          }, {
                              name: "amount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lenderOfferSignature";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "tokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalReceiver";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "callbackData";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }, {
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "borrowerOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "refinanceFull";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  components: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "trancheIndex";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_renegotiationOfferSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "refinancePartial";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  components: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "trancheIndex";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "removeWhitelistedCallbackContract";
              inputs: readonly [{
                  name: "_contract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "repayLoan";
              inputs: readonly [{
                  name: "_repaymentData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                  components: readonly [{
                      name: "data";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "callbackData";
                          type: "bytes";
                          internalType: "bytes";
                      }, {
                          name: "shouldDelegate";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "borrowerSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "requestTransferOwner";
              inputs: readonly [{
                  name: "_newOwner";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "revokeDelegate";
              inputs: readonly [{
                  name: "_delegate";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_collection";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_tokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "setFlashActionContract";
              inputs: readonly [{
                  name: "_newFlashActionContract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "setMinLockPeriod";
              inputs: readonly [{
                  name: "__minLockPeriod";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "setProtocolFee";
              inputs: readonly [];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "transferOwnership";
              inputs: readonly [];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "transferOwnership";
              inputs: readonly [{
                  name: "newOwner";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateLiquidationAuctionDuration";
              inputs: readonly [{
                  name: "_newDuration";
                  type: "uint48";
                  internalType: "uint48";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateLiquidationContract";
              inputs: readonly [{
                  name: "__loanLiquidator";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateMinImprovementApr";
              inputs: readonly [{
                  name: "_newMinimum";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateProtocolFee";
              inputs: readonly [{
                  name: "_newProtocolFee";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "event";
              name: "Delegated";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "delegate";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  indexed: false;
                  internalType: "bytes32";
              }, {
                  name: "value";
                  type: "bool";
                  indexed: false;
                  internalType: "bool";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "FlashActionContractUpdated";
              inputs: readonly [{
                  name: "newFlashActionContract";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "FlashActionExecuted";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "target";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "data";
                  type: "bytes";
                  indexed: false;
                  internalType: "bytes";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LiquidationAuctionDurationUpdated";
              inputs: readonly [{
                  name: "newDuration";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LiquidationContractUpdated";
              inputs: readonly [{
                  name: "liquidator";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanEmitted";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "offerId";
                  type: "uint256[]";
                  indexed: false;
                  internalType: "uint256[]";
              }, {
                  name: "loan";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "fee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanForeclosed";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanLiquidated";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanRefinanced";
              inputs: readonly [{
                  name: "renegotiationId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "oldLoanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "newLoanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "loan";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "fee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanRefinancedFromNewOffers";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "newLoanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "loan";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "offerIds";
                  type: "uint256[]";
                  indexed: false;
                  internalType: "uint256[]";
              }, {
                  name: "totalFee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanRepaid";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "totalRepayment";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "fee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanSentToLiquidator";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "liquidator";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "MinAprImprovementUpdated";
              inputs: readonly [{
                  name: "_minimum";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "MinBidLiquidationUpdated";
              inputs: readonly [{
                  name: "newMinBid";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "MinLockPeriodUpdated";
              inputs: readonly [{
                  name: "minLockPeriod";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "OfferCancelled";
              inputs: readonly [{
                  name: "lender";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "offerId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "OwnershipTransferred";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }, {
                  name: "newOwner";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "ProtocolFeePendingUpdate";
              inputs: readonly [{
                  name: "fee";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "ProtocolFeeUpdated";
              inputs: readonly [{
                  name: "fee";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "RenegotiationOfferCancelled";
              inputs: readonly [{
                  name: "lender";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "renegotiationId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "RevokeDelegate";
              inputs: readonly [{
                  name: "delegate";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "collection";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  indexed: false;
                  internalType: "bytes32";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "TransferOwnerRequested";
              inputs: readonly [{
                  name: "newOwner";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "WhitelistedCallbackContractAdded";
              inputs: readonly [{
                  name: "contractAdded";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "WhitelistedCallbackContractRemoved";
              inputs: readonly [{
                  name: "contractRemoved";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "error";
              name: "AddressZeroError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "CancelledOrExecutedOfferError";
              inputs: readonly [{
                  name: "_lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "CollectionNotWhitelistedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "CurrencyNotWhitelistedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "ECDSAInvalidSignature";
              inputs: readonly [];
          }, {
              type: "error";
              name: "ECDSAInvalidSignatureLength";
              inputs: readonly [{
                  name: "length";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "ECDSAInvalidSignatureS";
              inputs: readonly [{
                  name: "s";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
          }, {
              type: "error";
              name: "ExpiredOfferError";
              inputs: readonly [{
                  name: "_expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "InvalidAddressesError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidAmountError";
              inputs: readonly [{
                  name: "_amount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "InvalidCallbackError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCallerError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCollateralError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCollateralIdError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidDurationError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidInputError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidLoanError";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "InvalidMethodError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidParametersError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidRenegotiationOfferError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidSignatureError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidTrancheError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LiquidatorOnlyError";
              inputs: readonly [{
                  name: "_liquidator";
                  type: "address";
                  internalType: "address";
              }];
          }, {
              type: "error";
              name: "LoanExpiredError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LoanLockedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LoanNotDueError";
              inputs: readonly [{
                  name: "_expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "MaxCapacityExceededError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "MismatchError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "MulticallFailed";
              inputs: readonly [{
                  name: "i";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "returndata";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }, {
              type: "error";
              name: "NFTNotReturnedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "NotStrictlyImprovedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "TooEarlyError";
              inputs: readonly [{
                  name: "_pendingProtocolFeeSetTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "TooManyTranchesError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "TooSoonError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "TrancheCannotBeRefinancedError";
              inputs: readonly [{
                  name: "minTimestamp";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "ZeroInterestError";
              inputs: readonly [];
          }] | readonly [{
              type: "constructor";
              inputs: readonly [{
                  name: "loanLiquidator";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "protocolFee";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "currencyManager";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "collectionManager";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "maxTranches";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "minLockPeriod";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "delegateRegistry";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "loanManagerRegistry";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "flashActionContract";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "minWaitTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "DOMAIN_SEPARATOR";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "FEE_UPDATE_NOTICE";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "INITIAL_DOMAIN_SEPARATOR";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MAX_AUCTION_DURATION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint48";
                  internalType: "uint48";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MIN_AUCTION_DURATION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint48";
                  internalType: "uint48";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MIN_BID_LIQUIDATION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "MIN_WAIT_TIME";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "VERSION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "addNewTranche";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  components: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "trancheIndex";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "_renegotiationOfferSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "addWhitelistedCallbackContract";
              inputs: readonly [{
                  name: "_contract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "cancelOffer";
              inputs: readonly [{
                  name: "_offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "cancelRenegotiationOffer";
              inputs: readonly [{
                  name: "_renegotiationId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "delegate";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "_delegate";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  internalType: "bytes32";
              }, {
                  name: "_value";
                  type: "bool";
                  internalType: "bool";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "emitLoan";
              inputs: readonly [{
                  name: "_loanExecutionData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  components: readonly [{
                      name: "executionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.ExecutionData";
                      components: readonly [{
                          name: "offerExecution";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.OfferExecution[]";
                          components: readonly [{
                              name: "offer";
                              type: "tuple";
                              internalType: "struct IMultiSourceLoan.LoanOffer";
                              components: readonly [{
                                  name: "offerId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lender";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "fee";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "capacity";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "nftCollateralAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "nftCollateralTokenId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "principalAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "principalAmount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "aprBps";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "expirationTime";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "duration";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "maxSeniorRepayment";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "validators";
                                  type: "tuple[]";
                                  internalType: "struct IBaseLoan.OfferValidator[]";
                                  components: readonly [{
                                      name: "validator";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "arguments";
                                      type: "bytes";
                                      internalType: "bytes";
                                  }];
                              }, {
                                  name: "lenderRefinanceDisabled";
                                  type: "bool";
                                  internalType: "bool";
                              }, {
                                  name: "borrower";
                                  type: "address";
                                  internalType: "address";
                              }];
                          }, {
                              name: "amount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lenderOfferSignature";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "tokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalReceiver";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "callbackData";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }, {
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "borrowerOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "executeFlashAction";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "_target";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_data";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "getCollectionManager";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getCurrencyManager";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getDelegateRegistry";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getFlashActionContract";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLiquidationAuctionDuration";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint48";
                  internalType: "uint48";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLiquidator";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLoanHash";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getLoanManagerRegistry";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "contract ILoanManagerRegistry";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getMaxTranches";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getMinImprovementApr";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getMinLockPeriod";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getPendingProtocolFee";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getPendingProtocolFeeSetTime";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getProtocolFee";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getTotalLoansIssued";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "getUsedCapacity";
              inputs: readonly [{
                  name: "_lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "isOfferCancelled";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "notActive";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "isRenegotiationOfferCancelled";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "renegotiationIf";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "notActive";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "isWhitelistedCallbackContract";
              inputs: readonly [{
                  name: "_contract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "liquidateLoan";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "multicall";
              inputs: readonly [{
                  name: "data";
                  type: "bytes[]";
                  internalType: "bytes[]";
              }];
              outputs: readonly [{
                  name: "results";
                  type: "bytes[]";
                  internalType: "bytes[]";
              }];
              stateMutability: "payable";
          }, {
              type: "function";
              name: "name";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "string";
                  internalType: "string";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "onERC721Received";
              inputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes4";
                  internalType: "bytes4";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "owner";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "pendingOwner";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "pendingOwnerTime";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "refinanceFromLoanExecutionData";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "_loanExecutionData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  components: readonly [{
                      name: "executionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.ExecutionData";
                      components: readonly [{
                          name: "offerExecution";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.OfferExecution[]";
                          components: readonly [{
                              name: "offer";
                              type: "tuple";
                              internalType: "struct IMultiSourceLoan.LoanOffer";
                              components: readonly [{
                                  name: "offerId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lender";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "fee";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "capacity";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "nftCollateralAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "nftCollateralTokenId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "principalAddress";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "principalAmount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "aprBps";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "expirationTime";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "duration";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "maxSeniorRepayment";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "validators";
                                  type: "tuple[]";
                                  internalType: "struct IBaseLoan.OfferValidator[]";
                                  components: readonly [{
                                      name: "validator";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "arguments";
                                      type: "bytes";
                                      internalType: "bytes";
                                  }];
                              }, {
                                  name: "lenderRefinanceDisabled";
                                  type: "bool";
                                  internalType: "bool";
                              }, {
                                  name: "borrower";
                                  type: "address";
                                  internalType: "address";
                              }];
                          }, {
                              name: "amount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lenderOfferSignature";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "tokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalReceiver";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "callbackData";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }, {
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "borrowerOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "refinanceFull";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  components: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "trancheIndex";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "_renegotiationOfferSignature";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "refinancePartial";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  components: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "trancheIndex";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  name: "_loan";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "removeWhitelistedCallbackContract";
              inputs: readonly [{
                  name: "_contract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "repayLoan";
              inputs: readonly [{
                  name: "_repaymentData";
                  type: "tuple";
                  internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                  components: readonly [{
                      name: "data";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "callbackData";
                          type: "bytes";
                          internalType: "bytes";
                      }, {
                          name: "shouldDelegate";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "borrowerSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "requestTransferOwner";
              inputs: readonly [{
                  name: "_newOwner";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "revokeDelegate";
              inputs: readonly [{
                  name: "_delegate";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_collection";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_tokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "setFlashActionContract";
              inputs: readonly [{
                  name: "_newFlashActionContract";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "setMinLockPeriod";
              inputs: readonly [{
                  name: "__minLockPeriod";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "setProtocolFee";
              inputs: readonly [];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "transferOwnership";
              inputs: readonly [];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateLiquidationAuctionDuration";
              inputs: readonly [{
                  name: "_newDuration";
                  type: "uint48";
                  internalType: "uint48";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateLiquidationContract";
              inputs: readonly [{
                  name: "__loanLiquidator";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateMinImprovementApr";
              inputs: readonly [{
                  name: "_newMinimum";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "updateProtocolFee";
              inputs: readonly [{
                  name: "_newProtocolFee";
                  type: "tuple";
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "event";
              name: "Delegated";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "delegate";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  indexed: false;
                  internalType: "bytes32";
              }, {
                  name: "value";
                  type: "bool";
                  indexed: false;
                  internalType: "bool";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "FlashActionContractUpdated";
              inputs: readonly [{
                  name: "newFlashActionContract";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "FlashActionExecuted";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "target";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "data";
                  type: "bytes";
                  indexed: false;
                  internalType: "bytes";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LiquidationAuctionDurationUpdated";
              inputs: readonly [{
                  name: "newDuration";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LiquidationContractUpdated";
              inputs: readonly [{
                  name: "liquidator";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanEmitted";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "offerId";
                  type: "uint256[]";
                  indexed: false;
                  internalType: "uint256[]";
              }, {
                  name: "loan";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "fee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanForeclosed";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanLiquidated";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "foreclosed";
                  type: "bool";
                  indexed: false;
                  internalType: "bool";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanRefinanced";
              inputs: readonly [{
                  name: "renegotiationId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "oldLoanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "newLoanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "loan";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "fee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanRefinancedFromNewOffers";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "newLoanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "loan";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct IMultiSourceLoan.Loan";
                  components: readonly [{
                      name: "borrower";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAddress";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "duration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "tranche";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Tranche[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "floor";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "protocolFee";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lenderRefinanceDisabled";
                      type: "bool";
                      internalType: "bool";
                  }];
              }, {
                  name: "offerIds";
                  type: "uint256[]";
                  indexed: false;
                  internalType: "uint256[]";
              }, {
                  name: "totalFee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanRepaid";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "totalRepayment";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "fee";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "LoanSentToLiquidator";
              inputs: readonly [{
                  name: "loanId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "liquidator";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "MinAprImprovementUpdated";
              inputs: readonly [{
                  name: "_minimum";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "MinBidLiquidationUpdated";
              inputs: readonly [{
                  name: "newMinBid";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "MinLockPeriodUpdated";
              inputs: readonly [{
                  name: "minLockPeriod";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "OfferCancelled";
              inputs: readonly [{
                  name: "lender";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "offerId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "OwnershipTransferred";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }, {
                  name: "newOwner";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "ProtocolFeePendingUpdate";
              inputs: readonly [{
                  name: "fee";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "ProtocolFeeUpdated";
              inputs: readonly [{
                  name: "fee";
                  type: "tuple";
                  indexed: false;
                  internalType: "struct WithProtocolFee.ProtocolFee";
                  components: readonly [{
                      name: "recipient";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "fraction";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "RenegotiationOfferCancelled";
              inputs: readonly [{
                  name: "lender";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "renegotiationId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "RevokeDelegate";
              inputs: readonly [{
                  name: "delegate";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "collection";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "_rights";
                  type: "bytes32";
                  indexed: false;
                  internalType: "bytes32";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "TransferOwnerRequested";
              inputs: readonly [{
                  name: "newOwner";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "WhitelistedCallbackContractAdded";
              inputs: readonly [{
                  name: "contractAdded";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "event";
              name: "WhitelistedCallbackContractRemoved";
              inputs: readonly [{
                  name: "contractRemoved";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }];
              anonymous: false;
          }, {
              type: "error";
              name: "AddressZeroError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "CancelledOrExecutedOfferError";
              inputs: readonly [{
                  name: "_lender";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "_offerId";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "CollectionNotWhitelistedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "CurrencyNotWhitelistedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "ECDSAInvalidSignature";
              inputs: readonly [];
          }, {
              type: "error";
              name: "ECDSAInvalidSignatureLength";
              inputs: readonly [{
                  name: "length";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "ECDSAInvalidSignatureS";
              inputs: readonly [{
                  name: "s";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
          }, {
              type: "error";
              name: "ExpiredOfferError";
              inputs: readonly [{
                  name: "_expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "InvalidAddressesError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidAmountError";
              inputs: readonly [{
                  name: "_amount";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "_principalAmount";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "InvalidBorrowerError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCallbackError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCallerError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCollateralError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCollateralIdError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidDurationError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidInputError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidLoanError";
              inputs: readonly [{
                  name: "_loanId";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "InvalidLockPeriodError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidMethodError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidRenegotiationOfferError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidSignatureError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidTrancheError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LenderRefinanceDisabledError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LoanExpiredError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LoanLockedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "LoanNotDueError";
              inputs: readonly [{
                  name: "_expirationTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "MaxCapacityExceededError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "MulticallFailed";
              inputs: readonly [{
                  name: "i";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "returndata";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }, {
              type: "error";
              name: "NFTNotReturnedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "NotStrictlyImprovedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "TooEarlyError";
              inputs: readonly [{
                  name: "_pendingProtocolFeeSetTime";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "TooManyTranchesError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "TooSoonError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "TrancheCannotBeRefinancedError";
              inputs: readonly [{
                  name: "minTimestamp";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "ZeroInterestError";
              inputs: readonly [];
          }], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "AllOffersCancelled" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "RevokeDelegate" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "MinLockPeriodUpdated" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "MinAprImprovementUpdated" | "MinBidLiquidationUpdated" | "TransferOwnerRequested" | "LoanRefinancedFromNewOffers")[]
              ? TFunctionName[number]
              : TFunctionName>)

          Type declaration

            • <TFunctionName>(eventName, logs): ParseEventLogsReturnType<readonly [{
                  inputs: readonly [{
                      internalType: "address";
                      name: "loanLiquidator";
                      type: "address";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "recipient";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fraction";
                          type: "uint256";
                      }];
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      name: "protocolFee";
                      type: "tuple";
                  }, {
                      internalType: "address";
                      name: "currencyManager";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "collectionManager";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "maxTranches";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "minLockPeriod";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "delegateRegistry";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "loanManagerRegistry";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "flashActionContract";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "minWaitTime";
                      type: "uint256";
                  }];
                  stateMutability: "nonpayable";
                  type: "constructor";
              }, {
                  inputs: readonly [];
                  name: "DOMAIN_SEPARATOR";
                  outputs: readonly [{
                      internalType: "bytes32";
                      name: "";
                      type: "bytes32";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "FEE_UPDATE_NOTICE";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "INITIAL_DOMAIN_SEPARATOR";
                  outputs: readonly [{
                      internalType: "bytes32";
                      name: "";
                      type: "bytes32";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "MAX_AUCTION_DURATION";
                  outputs: readonly [{
                      internalType: "uint48";
                      name: "";
                      type: "uint48";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "MIN_AUCTION_DURATION";
                  outputs: readonly [{
                      internalType: "uint48";
                      name: "";
                      type: "uint48";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "MIN_BID_LIQUIDATION";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "MIN_WAIT_TIME";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "VERSION";
                  outputs: readonly [{
                      internalType: "bytes";
                      name: "";
                      type: "bytes";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      components: readonly [{
                          internalType: "uint256";
                          name: "renegotiationId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fee";
                          type: "uint256";
                      }, {
                          internalType: "uint256[]";
                          name: "trancheIndex";
                          type: "uint256[]";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "expirationTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      name: "_renegotiationOffer";
                      type: "tuple";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }, {
                      internalType: "bytes";
                      name: "_renegotiationOfferSignature";
                      type: "bytes";
                  }];
                  name: "addNewTranche";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_contract";
                      type: "address";
                  }];
                  name: "addWhitelistedCallbackContract";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_minOfferId";
                      type: "uint256";
                  }];
                  name: "cancelAllOffers";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_offerId";
                      type: "uint256";
                  }];
                  name: "cancelOffer";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_renegotiationId";
                      type: "uint256";
                  }];
                  name: "cancelRenegotiationOffer";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_loanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "loan";
                      type: "tuple";
                  }, {
                      internalType: "address";
                      name: "_delegate";
                      type: "address";
                  }, {
                      internalType: "bytes32";
                      name: "_rights";
                      type: "bytes32";
                  }, {
                      internalType: "bool";
                      name: "_value";
                      type: "bool";
                  }];
                  name: "delegate";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      components: readonly [{
                          components: readonly [{
                              components: readonly [{
                                  components: readonly [{
                                      internalType: "uint256";
                                      name: "offerId";
                                      type: "uint256";
                                  }, {
                                      internalType: "address";
                                      name: "lender";
                                      type: "address";
                                  }, {
                                      internalType: "uint256";
                                      name: "fee";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "capacity";
                                      type: "uint256";
                                  }, {
                                      internalType: "address";
                                      name: "nftCollateralAddress";
                                      type: "address";
                                  }, {
                                      internalType: "uint256";
                                      name: "nftCollateralTokenId";
                                      type: "uint256";
                                  }, {
                                      internalType: "address";
                                      name: "principalAddress";
                                      type: "address";
                                  }, {
                                      internalType: "uint256";
                                      name: "principalAmount";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "aprBps";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "expirationTime";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "duration";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "maxSeniorRepayment";
                                      type: "uint256";
                                  }, {
                                      components: readonly [{
                                          internalType: "address";
                                          name: "validator";
                                          type: "address";
                                      }, {
                                          internalType: "bytes";
                                          name: "arguments";
                                          type: "bytes";
                                      }];
                                      internalType: "struct IBaseLoan.OfferValidator[]";
                                      name: "validators";
                                      type: "tuple[]";
                                  }];
                                  internalType: "struct IMultiSourceLoan.LoanOffer";
                                  name: "offer";
                                  type: "tuple";
                              }, {
                                  internalType: "uint256";
                                  name: "amount";
                                  type: "uint256";
                              }, {
                                  internalType: "bytes";
                                  name: "lenderOfferSignature";
                                  type: "bytes";
                              }];
                              internalType: "struct IMultiSourceLoan.OfferExecution[]";
                              name: "offerExecution";
                              type: "tuple[]";
                          }, {
                              internalType: "uint256";
                              name: "tokenId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "duration";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "expirationTime";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "principalReceiver";
                              type: "address";
                          }, {
                              internalType: "bytes";
                              name: "callbackData";
                              type: "bytes";
                          }];
                          internalType: "struct IMultiSourceLoan.ExecutionData";
                          name: "executionData";
                          type: "tuple";
                      }, {
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "bytes";
                          name: "borrowerOfferSignature";
                          type: "bytes";
                      }];
                      internalType: "struct IMultiSourceLoan.LoanExecutionData";
                      name: "_loanExecutionData";
                      type: "tuple";
                  }];
                  name: "emitLoan";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_loanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }, {
                      internalType: "address";
                      name: "_target";
                      type: "address";
                  }, {
                      internalType: "bytes";
                      name: "_data";
                      type: "bytes";
                  }];
                  name: "executeFlashAction";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getCollectionManager";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getCurrencyManager";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getDelegateRegistry";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getFlashActionContract";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getLiquidationAuctionDuration";
                  outputs: readonly [{
                      internalType: "uint48";
                      name: "";
                      type: "uint48";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getLiquidator";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_loanId";
                      type: "uint256";
                  }];
                  name: "getLoanHash";
                  outputs: readonly [{
                      internalType: "bytes32";
                      name: "";
                      type: "bytes32";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getLoanManagerRegistry";
                  outputs: readonly [{
                      internalType: "contract ILoanManagerRegistry";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getMaxTranches";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getMinImprovementApr";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getMinLockPeriod";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getPendingProtocolFee";
                  outputs: readonly [{
                      components: readonly [{
                          internalType: "address";
                          name: "recipient";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fraction";
                          type: "uint256";
                      }];
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getPendingProtocolFeeSetTime";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getProtocolFee";
                  outputs: readonly [{
                      components: readonly [{
                          internalType: "address";
                          name: "recipient";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fraction";
                          type: "uint256";
                      }];
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getTotalLoansIssued";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "_offerId";
                      type: "uint256";
                  }];
                  name: "getUsedCapacity";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "user";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "offerId";
                      type: "uint256";
                  }];
                  name: "isOfferCancelled";
                  outputs: readonly [{
                      internalType: "bool";
                      name: "notActive";
                      type: "bool";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "user";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "renegotiationIf";
                      type: "uint256";
                  }];
                  name: "isRenegotiationOfferCancelled";
                  outputs: readonly [{
                      internalType: "bool";
                      name: "notActive";
                      type: "bool";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_contract";
                      type: "address";
                  }];
                  name: "isWhitelistedCallbackContract";
                  outputs: readonly [{
                      internalType: "bool";
                      name: "";
                      type: "bool";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_loanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }];
                  name: "liquidateLoan";
                  outputs: readonly [{
                      internalType: "bytes";
                      name: "";
                      type: "bytes";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_loanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }];
                  name: "loanLiquidated";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "user";
                      type: "address";
                  }];
                  name: "minOfferId";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "minOfferId";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "bytes[]";
                      name: "data";
                      type: "bytes[]";
                  }];
                  name: "multicall";
                  outputs: readonly [{
                      internalType: "bytes[]";
                      name: "results";
                      type: "bytes[]";
                  }];
                  stateMutability: "payable";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "name";
                  outputs: readonly [{
                      internalType: "string";
                      name: "";
                      type: "string";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }, {
                      internalType: "bytes";
                      name: "";
                      type: "bytes";
                  }];
                  name: "onERC721Received";
                  outputs: readonly [{
                      internalType: "bytes4";
                      name: "";
                      type: "bytes4";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "owner";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "pendingOwner";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "pendingOwnerTime";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_loanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }, {
                      components: readonly [{
                          components: readonly [{
                              components: readonly [{
                                  components: readonly [{
                                      internalType: "uint256";
                                      name: "offerId";
                                      type: "uint256";
                                  }, {
                                      internalType: "address";
                                      name: "lender";
                                      type: "address";
                                  }, {
                                      internalType: "uint256";
                                      name: "fee";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "capacity";
                                      type: "uint256";
                                  }, {
                                      internalType: "address";
                                      name: "nftCollateralAddress";
                                      type: "address";
                                  }, {
                                      internalType: "uint256";
                                      name: "nftCollateralTokenId";
                                      type: "uint256";
                                  }, {
                                      internalType: "address";
                                      name: "principalAddress";
                                      type: "address";
                                  }, {
                                      internalType: "uint256";
                                      name: "principalAmount";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "aprBps";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "expirationTime";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "duration";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "maxSeniorRepayment";
                                      type: "uint256";
                                  }, {
                                      components: readonly [{
                                          internalType: "address";
                                          name: "validator";
                                          type: "address";
                                      }, {
                                          internalType: "bytes";
                                          name: "arguments";
                                          type: "bytes";
                                      }];
                                      internalType: "struct IBaseLoan.OfferValidator[]";
                                      name: "validators";
                                      type: "tuple[]";
                                  }];
                                  internalType: "struct IMultiSourceLoan.LoanOffer";
                                  name: "offer";
                                  type: "tuple";
                              }, {
                                  internalType: "uint256";
                                  name: "amount";
                                  type: "uint256";
                              }, {
                                  internalType: "bytes";
                                  name: "lenderOfferSignature";
                                  type: "bytes";
                              }];
                              internalType: "struct IMultiSourceLoan.OfferExecution[]";
                              name: "offerExecution";
                              type: "tuple[]";
                          }, {
                              internalType: "uint256";
                              name: "tokenId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "duration";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "expirationTime";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "principalReceiver";
                              type: "address";
                          }, {
                              internalType: "bytes";
                              name: "callbackData";
                              type: "bytes";
                          }];
                          internalType: "struct IMultiSourceLoan.ExecutionData";
                          name: "executionData";
                          type: "tuple";
                      }, {
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "bytes";
                          name: "borrowerOfferSignature";
                          type: "bytes";
                      }];
                      internalType: "struct IMultiSourceLoan.LoanExecutionData";
                      name: "_loanExecutionData";
                      type: "tuple";
                  }];
                  name: "refinanceFromLoanExecutionData";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      components: readonly [{
                          internalType: "uint256";
                          name: "renegotiationId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fee";
                          type: "uint256";
                      }, {
                          internalType: "uint256[]";
                          name: "trancheIndex";
                          type: "uint256[]";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "expirationTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      name: "_renegotiationOffer";
                      type: "tuple";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }, {
                      internalType: "bytes";
                      name: "_renegotiationOfferSignature";
                      type: "bytes";
                  }];
                  name: "refinanceFull";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      components: readonly [{
                          internalType: "uint256";
                          name: "renegotiationId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fee";
                          type: "uint256";
                      }, {
                          internalType: "uint256[]";
                          name: "trancheIndex";
                          type: "uint256[]";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "expirationTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      name: "_renegotiationOffer";
                      type: "tuple";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }];
                  name: "refinancePartial";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_contract";
                      type: "address";
                  }];
                  name: "removeWhitelistedCallbackContract";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      components: readonly [{
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "bytes";
                              name: "callbackData";
                              type: "bytes";
                          }, {
                              internalType: "bool";
                              name: "shouldDelegate";
                              type: "bool";
                          }];
                          internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                          name: "data";
                          type: "tuple";
                      }, {
                          components: readonly [{
                              internalType: "address";
                              name: "borrower";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "nftCollateralTokenId";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "nftCollateralAddress";
                              type: "address";
                          }, {
                              internalType: "address";
                              name: "principalAddress";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "duration";
                              type: "uint256";
                          }, {
                              components: readonly [{
                                  internalType: "uint256";
                                  name: "loanId";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "floor";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "principalAmount";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "lender";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "accruedInterest";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "startTime";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "aprBps";
                                  type: "uint256";
                              }];
                              internalType: "struct IMultiSourceLoan.Tranche[]";
                              name: "tranche";
                              type: "tuple[]";
                          }, {
                              internalType: "uint256";
                              name: "protocolFee";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Loan";
                          name: "loan";
                          type: "tuple";
                      }, {
                          internalType: "bytes";
                          name: "borrowerSignature";
                          type: "bytes";
                      }];
                      internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                      name: "_repaymentData";
                      type: "tuple";
                  }];
                  name: "repayLoan";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_newOwner";
                      type: "address";
                  }];
                  name: "requestTransferOwner";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_delegate";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "_collection";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "_tokenId";
                      type: "uint256";
                  }, {
                      internalType: "bytes32";
                      name: "_rights";
                      type: "bytes32";
                  }];
                  name: "revokeDelegate";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_newFlashActionContract";
                      type: "address";
                  }];
                  name: "setFlashActionContract";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "__minLockPeriod";
                      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 [{
                      internalType: "address";
                      name: "newOwner";
                      type: "address";
                  }];
                  name: "transferOwnership";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint48";
                      name: "_newDuration";
                      type: "uint48";
                  }];
                  name: "updateLiquidationAuctionDuration";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "__loanLiquidator";
                      type: "address";
                  }];
                  name: "updateLiquidationContract";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_newMinimum";
                      type: "uint256";
                  }];
                  name: "updateMinImprovementApr";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      components: readonly [{
                          internalType: "address";
                          name: "recipient";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fraction";
                          type: "uint256";
                      }];
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      name: "_newProtocolFee";
                      type: "tuple";
                  }];
                  name: "updateProtocolFee";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "minOfferId";
                      type: "uint256";
                  }];
                  name: "AllOffersCancelled";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "address";
                      name: "delegate";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "bytes32";
                      name: "_rights";
                      type: "bytes32";
                  }, {
                      indexed: false;
                      internalType: "bool";
                      name: "value";
                      type: "bool";
                  }];
                  name: "Delegated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "newFlashActionContract";
                      type: "address";
                  }];
                  name: "FlashActionContractUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "address";
                      name: "target";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "bytes";
                      name: "data";
                      type: "bytes";
                  }];
                  name: "FlashActionExecuted";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "newDuration";
                      type: "uint256";
                  }];
                  name: "LiquidationAuctionDurationUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "liquidator";
                      type: "address";
                  }];
                  name: "LiquidationContractUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "uint256[]";
                      name: "offerId";
                      type: "uint256[]";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "loan";
                      type: "tuple";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "fee";
                      type: "uint256";
                  }];
                  name: "LoanEmitted";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }];
                  name: "LoanForeclosed";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }];
                  name: "LoanLiquidated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "renegotiationId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "oldLoanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "newLoanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "loan";
                      type: "tuple";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "fee";
                      type: "uint256";
                  }];
                  name: "LoanRefinanced";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "newLoanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "loan";
                      type: "tuple";
                  }, {
                      indexed: false;
                      internalType: "uint256[]";
                      name: "offerIds";
                      type: "uint256[]";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "totalFee";
                      type: "uint256";
                  }];
                  name: "LoanRefinancedFromNewOffers";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "totalRepayment";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "fee";
                      type: "uint256";
                  }];
                  name: "LoanRepaid";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "address";
                      name: "liquidator";
                      type: "address";
                  }];
                  name: "LoanSentToLiquidator";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "_minimum";
                      type: "uint256";
                  }];
                  name: "MinAprImprovementUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "newMinBid";
                      type: "uint256";
                  }];
                  name: "MinBidLiquidationUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "minLockPeriod";
                      type: "uint256";
                  }];
                  name: "MinLockPeriodUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "offerId";
                      type: "uint256";
                  }];
                  name: "OfferCancelled";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: true;
                      internalType: "address";
                      name: "user";
                      type: "address";
                  }, {
                      indexed: true;
                      internalType: "address";
                      name: "newOwner";
                      type: "address";
                  }];
                  name: "OwnershipTransferred";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      components: readonly [{
                          internalType: "address";
                          name: "recipient";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fraction";
                          type: "uint256";
                      }];
                      indexed: false;
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      name: "fee";
                      type: "tuple";
                  }];
                  name: "ProtocolFeePendingUpdate";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      components: readonly [{
                          internalType: "address";
                          name: "recipient";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fraction";
                          type: "uint256";
                      }];
                      indexed: false;
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      name: "fee";
                      type: "tuple";
                  }];
                  name: "ProtocolFeeUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "renegotiationId";
                      type: "uint256";
                  }];
                  name: "RenegotiationOfferCancelled";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "delegate";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "address";
                      name: "collection";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "tokenId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "bytes32";
                      name: "_rights";
                      type: "bytes32";
                  }];
                  name: "RevokeDelegate";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "newOwner";
                      type: "address";
                  }];
                  name: "TransferOwnerRequested";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "contractAdded";
                      type: "address";
                  }];
                  name: "WhitelistedCallbackContractAdded";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "contractRemoved";
                      type: "address";
                  }];
                  name: "WhitelistedCallbackContractRemoved";
                  type: "event";
              }, {
                  inputs: readonly [];
                  name: "AddressZeroError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "_offerId";
                      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 [{
                      internalType: "uint256";
                      name: "length";
                      type: "uint256";
                  }];
                  name: "ECDSAInvalidSignatureLength";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "bytes32";
                      name: "s";
                      type: "bytes32";
                  }];
                  name: "ECDSAInvalidSignatureS";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_expirationTime";
                      type: "uint256";
                  }];
                  name: "ExpiredOfferError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "InvalidAddressesError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_amount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "_principalAmount";
                      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 [{
                      internalType: "uint256";
                      name: "_loanId";
                      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 [{
                      internalType: "address";
                      name: "_liquidator";
                      type: "address";
                  }];
                  name: "LiquidatorOnlyError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "LoanExpiredError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "LoanLockedError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_expirationTime";
                      type: "uint256";
                  }];
                  name: "LoanNotDueError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "_newMinOfferId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "_minOfferId";
                      type: "uint256";
                  }];
                  name: "LowOfferIdError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "_newMinRenegotiationOfferId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "_minOfferId";
                      type: "uint256";
                  }];
                  name: "LowRenegotiationOfferIdError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "MaxCapacityExceededError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "MismatchError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "i";
                      type: "uint256";
                  }, {
                      internalType: "bytes";
                      name: "returndata";
                      type: "bytes";
                  }];
                  name: "MulticallFailed";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "NFTNotReturnedError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "NotStrictlyImprovedError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_pendingProtocolFeeSetTime";
                      type: "uint256";
                  }];
                  name: "TooEarlyError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "TooManyTranchesError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "TooSoonError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "minTimestamp";
                      type: "uint256";
                  }];
                  name: "TrancheCannotBeRefinancedError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "ZeroInterestError";
                  type: "error";
              }] | readonly [{
                  type: "constructor";
                  inputs: readonly [{
                      name: "loanLiquidator";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "protocolFee";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "currencyManager";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "collectionManager";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "maxTranches";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "minLockPeriod";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "delegateRegistry";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "loanManagerRegistry";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "flashActionContract";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "minWaitTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "DOMAIN_SEPARATOR";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "FEE_UPDATE_NOTICE";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "INITIAL_DOMAIN_SEPARATOR";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MAX_AUCTION_DURATION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MIN_AUCTION_DURATION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MIN_BID_LIQUIDATION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MIN_WAIT_TIME";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "VERSION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "addNewTranche";
                  inputs: readonly [{
                      name: "_renegotiationOffer";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      components: readonly [{
                          name: "renegotiationId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "trancheIndex";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_renegotiationOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "addWhitelistedCallbackContract";
                  inputs: readonly [{
                      name: "_contract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "cancelOffer";
                  inputs: readonly [{
                      name: "_offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "cancelRenegotiationOffer";
                  inputs: readonly [{
                      name: "_renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "delegate";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_delegate";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      internalType: "bytes32";
                  }, {
                      name: "_value";
                      type: "bool";
                      internalType: "bool";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "emitLoan";
                  inputs: readonly [{
                      name: "_loanExecutionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.LoanExecutionData";
                      components: readonly [{
                          name: "executionData";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.ExecutionData";
                          components: readonly [{
                              name: "offerExecution";
                              type: "tuple[]";
                              internalType: "struct IMultiSourceLoan.OfferExecution[]";
                              components: readonly [{
                                  name: "offer";
                                  type: "tuple";
                                  internalType: "struct IMultiSourceLoan.LoanOffer";
                                  components: readonly [{
                                      name: "offerId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "lender";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "fee";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "capacity";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "nftCollateralAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "nftCollateralTokenId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "principalAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "principalAmount";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "aprBps";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "expirationTime";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "duration";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "maxSeniorRepayment";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "validators";
                                      type: "tuple[]";
                                      internalType: "struct IBaseLoan.OfferValidator[]";
                                      components: readonly [{
                                          name: "validator";
                                          type: "address";
                                          internalType: "address";
                                      }, {
                                          name: "arguments";
                                          type: "bytes";
                                          internalType: "bytes";
                                      }];
                                  }];
                              }, {
                                  name: "amount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lenderOfferSignature";
                                  type: "bytes";
                                  internalType: "bytes";
                              }];
                          }, {
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "tokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "expirationTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalReceiver";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "callbackData";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "borrowerOfferSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "executeFlashAction";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_target";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_data";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "getCollectionManager";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getCurrencyManager";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getDelegateRegistry";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getFlashActionContract";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLiquidationAuctionDuration";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLiquidator";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLoanHash";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLoanManagerRegistry";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "contract ILoanManagerRegistry";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getMaxTranches";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getMinImprovementApr";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getMinLockPeriod";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getPendingProtocolFee";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getPendingProtocolFeeSetTime";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getProtocolFee";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getTotalLoansIssued";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getUsedCapacity";
                  inputs: readonly [{
                      name: "_lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "isOfferCancelled";
                  inputs: readonly [{
                      name: "user";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "notActive";
                      type: "bool";
                      internalType: "bool";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "isRenegotiationOfferCancelled";
                  inputs: readonly [{
                      name: "user";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "renegotiationIf";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "notActive";
                      type: "bool";
                      internalType: "bool";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "isWhitelistedCallbackContract";
                  inputs: readonly [{
                      name: "_contract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bool";
                      internalType: "bool";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "liquidateLoan";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "loanLiquidated";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "multicall";
                  inputs: readonly [{
                      name: "data";
                      type: "bytes[]";
                      internalType: "bytes[]";
                  }];
                  outputs: readonly [{
                      name: "results";
                      type: "bytes[]";
                      internalType: "bytes[]";
                  }];
                  stateMutability: "payable";
              }, {
                  type: "function";
                  name: "name";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "string";
                      internalType: "string";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "onERC721Received";
                  inputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bytes4";
                      internalType: "bytes4";
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "owner";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "pendingOwner";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "pendingOwnerTime";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "refinanceFromLoanExecutionData";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loanExecutionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.LoanExecutionData";
                      components: readonly [{
                          name: "executionData";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.ExecutionData";
                          components: readonly [{
                              name: "offerExecution";
                              type: "tuple[]";
                              internalType: "struct IMultiSourceLoan.OfferExecution[]";
                              components: readonly [{
                                  name: "offer";
                                  type: "tuple";
                                  internalType: "struct IMultiSourceLoan.LoanOffer";
                                  components: readonly [{
                                      name: "offerId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "lender";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "fee";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "capacity";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "nftCollateralAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "nftCollateralTokenId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "principalAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "principalAmount";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "aprBps";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "expirationTime";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "duration";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "maxSeniorRepayment";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "validators";
                                      type: "tuple[]";
                                      internalType: "struct IBaseLoan.OfferValidator[]";
                                      components: readonly [{
                                          name: "validator";
                                          type: "address";
                                          internalType: "address";
                                      }, {
                                          name: "arguments";
                                          type: "bytes";
                                          internalType: "bytes";
                                      }];
                                  }];
                              }, {
                                  name: "amount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lenderOfferSignature";
                                  type: "bytes";
                                  internalType: "bytes";
                              }];
                          }, {
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "tokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "expirationTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalReceiver";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "callbackData";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "borrowerOfferSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "refinanceFull";
                  inputs: readonly [{
                      name: "_renegotiationOffer";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      components: readonly [{
                          name: "renegotiationId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "trancheIndex";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_renegotiationOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "refinancePartial";
                  inputs: readonly [{
                      name: "_renegotiationOffer";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      components: readonly [{
                          name: "renegotiationId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "trancheIndex";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "removeWhitelistedCallbackContract";
                  inputs: readonly [{
                      name: "_contract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "repayLoan";
                  inputs: readonly [{
                      name: "_repaymentData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                      components: readonly [{
                          name: "data";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "callbackData";
                              type: "bytes";
                              internalType: "bytes";
                          }, {
                              name: "shouldDelegate";
                              type: "bool";
                              internalType: "bool";
                          }];
                      }, {
                          name: "loan";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.Loan";
                          components: readonly [{
                              name: "borrower";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "nftCollateralTokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "principalAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "tranche";
                              type: "tuple[]";
                              internalType: "struct IMultiSourceLoan.Tranche[]";
                              components: readonly [{
                                  name: "loanId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "floor";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "principalAmount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lender";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "accruedInterest";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "startTime";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "aprBps";
                                  type: "uint256";
                                  internalType: "uint256";
                              }];
                          }, {
                              name: "protocolFee";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "borrowerSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "requestTransferOwner";
                  inputs: readonly [{
                      name: "_newOwner";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "revokeDelegate";
                  inputs: readonly [{
                      name: "_delegate";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_collection";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "setFlashActionContract";
                  inputs: readonly [{
                      name: "_newFlashActionContract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "setMinLockPeriod";
                  inputs: readonly [{
                      name: "__minLockPeriod";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "setProtocolFee";
                  inputs: readonly [];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "transferOwnership";
                  inputs: readonly [];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "transferOwnership";
                  inputs: readonly [{
                      name: "newOwner";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateLiquidationAuctionDuration";
                  inputs: readonly [{
                      name: "_newDuration";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateLiquidationContract";
                  inputs: readonly [{
                      name: "__loanLiquidator";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateMinImprovementApr";
                  inputs: readonly [{
                      name: "_newMinimum";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateProtocolFee";
                  inputs: readonly [{
                      name: "_newProtocolFee";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "event";
                  name: "Delegated";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "delegate";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      indexed: false;
                      internalType: "bytes32";
                  }, {
                      name: "value";
                      type: "bool";
                      indexed: false;
                      internalType: "bool";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "FlashActionContractUpdated";
                  inputs: readonly [{
                      name: "newFlashActionContract";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "FlashActionExecuted";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "target";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "data";
                      type: "bytes";
                      indexed: false;
                      internalType: "bytes";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LiquidationAuctionDurationUpdated";
                  inputs: readonly [{
                      name: "newDuration";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LiquidationContractUpdated";
                  inputs: readonly [{
                      name: "liquidator";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanEmitted";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "offerId";
                      type: "uint256[]";
                      indexed: false;
                      internalType: "uint256[]";
                  }, {
                      name: "loan";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "fee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanForeclosed";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanLiquidated";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanRefinanced";
                  inputs: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "oldLoanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "newLoanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "loan";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "fee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanRefinancedFromNewOffers";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "newLoanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "loan";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "offerIds";
                      type: "uint256[]";
                      indexed: false;
                      internalType: "uint256[]";
                  }, {
                      name: "totalFee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanRepaid";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "totalRepayment";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "fee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanSentToLiquidator";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "liquidator";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "MinAprImprovementUpdated";
                  inputs: readonly [{
                      name: "_minimum";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "MinBidLiquidationUpdated";
                  inputs: readonly [{
                      name: "newMinBid";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "MinLockPeriodUpdated";
                  inputs: readonly [{
                      name: "minLockPeriod";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "OfferCancelled";
                  inputs: readonly [{
                      name: "lender";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "offerId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "OwnershipTransferred";
                  inputs: readonly [{
                      name: "user";
                      type: "address";
                      indexed: true;
                      internalType: "address";
                  }, {
                      name: "newOwner";
                      type: "address";
                      indexed: true;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "ProtocolFeePendingUpdate";
                  inputs: readonly [{
                      name: "fee";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "ProtocolFeeUpdated";
                  inputs: readonly [{
                      name: "fee";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "RenegotiationOfferCancelled";
                  inputs: readonly [{
                      name: "lender";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "renegotiationId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "RevokeDelegate";
                  inputs: readonly [{
                      name: "delegate";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "collection";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      indexed: false;
                      internalType: "bytes32";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "TransferOwnerRequested";
                  inputs: readonly [{
                      name: "newOwner";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "WhitelistedCallbackContractAdded";
                  inputs: readonly [{
                      name: "contractAdded";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "WhitelistedCallbackContractRemoved";
                  inputs: readonly [{
                      name: "contractRemoved";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "error";
                  name: "AddressZeroError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "CancelledOrExecutedOfferError";
                  inputs: readonly [{
                      name: "_lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "CollectionNotWhitelistedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "CurrencyNotWhitelistedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "ECDSAInvalidSignature";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "ECDSAInvalidSignatureLength";
                  inputs: readonly [{
                      name: "length";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "ECDSAInvalidSignatureS";
                  inputs: readonly [{
                      name: "s";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
              }, {
                  type: "error";
                  name: "ExpiredOfferError";
                  inputs: readonly [{
                      name: "_expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "InvalidAddressesError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidAmountError";
                  inputs: readonly [{
                      name: "_amount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "InvalidCallbackError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCallerError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCollateralError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCollateralIdError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidDurationError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidInputError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidLoanError";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "InvalidMethodError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidParametersError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidRenegotiationOfferError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidSignatureError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidTrancheError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LiquidatorOnlyError";
                  inputs: readonly [{
                      name: "_liquidator";
                      type: "address";
                      internalType: "address";
                  }];
              }, {
                  type: "error";
                  name: "LoanExpiredError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LoanLockedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LoanNotDueError";
                  inputs: readonly [{
                      name: "_expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "MaxCapacityExceededError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "MismatchError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "MulticallFailed";
                  inputs: readonly [{
                      name: "i";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "returndata";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }, {
                  type: "error";
                  name: "NFTNotReturnedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "NotStrictlyImprovedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "TooEarlyError";
                  inputs: readonly [{
                      name: "_pendingProtocolFeeSetTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "TooManyTranchesError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "TooSoonError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "TrancheCannotBeRefinancedError";
                  inputs: readonly [{
                      name: "minTimestamp";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "ZeroInterestError";
                  inputs: readonly [];
              }] | readonly [{
                  type: "constructor";
                  inputs: readonly [{
                      name: "loanLiquidator";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "protocolFee";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "currencyManager";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "collectionManager";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "maxTranches";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "minLockPeriod";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "delegateRegistry";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "loanManagerRegistry";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "flashActionContract";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "minWaitTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "DOMAIN_SEPARATOR";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "FEE_UPDATE_NOTICE";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "INITIAL_DOMAIN_SEPARATOR";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MAX_AUCTION_DURATION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MIN_AUCTION_DURATION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MIN_BID_LIQUIDATION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MIN_WAIT_TIME";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "VERSION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "addNewTranche";
                  inputs: readonly [{
                      name: "_renegotiationOffer";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      components: readonly [{
                          name: "renegotiationId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "trancheIndex";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "_renegotiationOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "addWhitelistedCallbackContract";
                  inputs: readonly [{
                      name: "_contract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "cancelOffer";
                  inputs: readonly [{
                      name: "_offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "cancelRenegotiationOffer";
                  inputs: readonly [{
                      name: "_renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "delegate";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "_delegate";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      internalType: "bytes32";
                  }, {
                      name: "_value";
                      type: "bool";
                      internalType: "bool";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "emitLoan";
                  inputs: readonly [{
                      name: "_loanExecutionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.LoanExecutionData";
                      components: readonly [{
                          name: "executionData";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.ExecutionData";
                          components: readonly [{
                              name: "offerExecution";
                              type: "tuple[]";
                              internalType: "struct IMultiSourceLoan.OfferExecution[]";
                              components: readonly [{
                                  name: "offer";
                                  type: "tuple";
                                  internalType: "struct IMultiSourceLoan.LoanOffer";
                                  components: readonly [{
                                      name: "offerId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "lender";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "fee";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "capacity";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "nftCollateralAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "nftCollateralTokenId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "principalAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "principalAmount";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "aprBps";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "expirationTime";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "duration";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "maxSeniorRepayment";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "validators";
                                      type: "tuple[]";
                                      internalType: "struct IBaseLoan.OfferValidator[]";
                                      components: readonly [{
                                          name: "validator";
                                          type: "address";
                                          internalType: "address";
                                      }, {
                                          name: "arguments";
                                          type: "bytes";
                                          internalType: "bytes";
                                      }];
                                  }, {
                                      name: "lenderRefinanceDisabled";
                                      type: "bool";
                                      internalType: "bool";
                                  }, {
                                      name: "borrower";
                                      type: "address";
                                      internalType: "address";
                                  }];
                              }, {
                                  name: "amount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lenderOfferSignature";
                                  type: "bytes";
                                  internalType: "bytes";
                              }];
                          }, {
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "tokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "expirationTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalReceiver";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "callbackData";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "borrowerOfferSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "executeFlashAction";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "_target";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_data";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "getCollectionManager";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getCurrencyManager";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getDelegateRegistry";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getFlashActionContract";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLiquidationAuctionDuration";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLiquidator";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLoanHash";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLoanManagerRegistry";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "contract ILoanManagerRegistry";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getMaxTranches";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getMinImprovementApr";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getMinLockPeriod";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getPendingProtocolFee";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getPendingProtocolFeeSetTime";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getProtocolFee";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getTotalLoansIssued";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getUsedCapacity";
                  inputs: readonly [{
                      name: "_lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "isOfferCancelled";
                  inputs: readonly [{
                      name: "user";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "notActive";
                      type: "bool";
                      internalType: "bool";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "isRenegotiationOfferCancelled";
                  inputs: readonly [{
                      name: "user";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "renegotiationIf";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "notActive";
                      type: "bool";
                      internalType: "bool";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "isWhitelistedCallbackContract";
                  inputs: readonly [{
                      name: "_contract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bool";
                      internalType: "bool";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "liquidateLoan";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "multicall";
                  inputs: readonly [{
                      name: "data";
                      type: "bytes[]";
                      internalType: "bytes[]";
                  }];
                  outputs: readonly [{
                      name: "results";
                      type: "bytes[]";
                      internalType: "bytes[]";
                  }];
                  stateMutability: "payable";
              }, {
                  type: "function";
                  name: "name";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "string";
                      internalType: "string";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "onERC721Received";
                  inputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bytes4";
                      internalType: "bytes4";
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "owner";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "pendingOwner";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "pendingOwnerTime";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "refinanceFromLoanExecutionData";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "_loanExecutionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.LoanExecutionData";
                      components: readonly [{
                          name: "executionData";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.ExecutionData";
                          components: readonly [{
                              name: "offerExecution";
                              type: "tuple[]";
                              internalType: "struct IMultiSourceLoan.OfferExecution[]";
                              components: readonly [{
                                  name: "offer";
                                  type: "tuple";
                                  internalType: "struct IMultiSourceLoan.LoanOffer";
                                  components: readonly [{
                                      name: "offerId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "lender";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "fee";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "capacity";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "nftCollateralAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "nftCollateralTokenId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "principalAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "principalAmount";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "aprBps";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "expirationTime";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "duration";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "maxSeniorRepayment";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "validators";
                                      type: "tuple[]";
                                      internalType: "struct IBaseLoan.OfferValidator[]";
                                      components: readonly [{
                                          name: "validator";
                                          type: "address";
                                          internalType: "address";
                                      }, {
                                          name: "arguments";
                                          type: "bytes";
                                          internalType: "bytes";
                                      }];
                                  }, {
                                      name: "lenderRefinanceDisabled";
                                      type: "bool";
                                      internalType: "bool";
                                  }, {
                                      name: "borrower";
                                      type: "address";
                                      internalType: "address";
                                  }];
                              }, {
                                  name: "amount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lenderOfferSignature";
                                  type: "bytes";
                                  internalType: "bytes";
                              }];
                          }, {
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "tokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "expirationTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalReceiver";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "callbackData";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "borrowerOfferSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "refinanceFull";
                  inputs: readonly [{
                      name: "_renegotiationOffer";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      components: readonly [{
                          name: "renegotiationId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "trancheIndex";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "_renegotiationOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "refinancePartial";
                  inputs: readonly [{
                      name: "_renegotiationOffer";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      components: readonly [{
                          name: "renegotiationId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "trancheIndex";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "removeWhitelistedCallbackContract";
                  inputs: readonly [{
                      name: "_contract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "repayLoan";
                  inputs: readonly [{
                      name: "_repaymentData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                      components: readonly [{
                          name: "data";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "callbackData";
                              type: "bytes";
                              internalType: "bytes";
                          }, {
                              name: "shouldDelegate";
                              type: "bool";
                              internalType: "bool";
                          }];
                      }, {
                          name: "loan";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.Loan";
                          components: readonly [{
                              name: "borrower";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "nftCollateralTokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "principalAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "tranche";
                              type: "tuple[]";
                              internalType: "struct IMultiSourceLoan.Tranche[]";
                              components: readonly [{
                                  name: "loanId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "floor";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "principalAmount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lender";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "accruedInterest";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "startTime";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "aprBps";
                                  type: "uint256";
                                  internalType: "uint256";
                              }];
                          }, {
                              name: "protocolFee";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lenderRefinanceDisabled";
                              type: "bool";
                              internalType: "bool";
                          }];
                      }, {
                          name: "borrowerSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "requestTransferOwner";
                  inputs: readonly [{
                      name: "_newOwner";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "revokeDelegate";
                  inputs: readonly [{
                      name: "_delegate";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_collection";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "setFlashActionContract";
                  inputs: readonly [{
                      name: "_newFlashActionContract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "setMinLockPeriod";
                  inputs: readonly [{
                      name: "__minLockPeriod";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "setProtocolFee";
                  inputs: readonly [];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "transferOwnership";
                  inputs: readonly [];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateLiquidationAuctionDuration";
                  inputs: readonly [{
                      name: "_newDuration";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateLiquidationContract";
                  inputs: readonly [{
                      name: "__loanLiquidator";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateMinImprovementApr";
                  inputs: readonly [{
                      name: "_newMinimum";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateProtocolFee";
                  inputs: readonly [{
                      name: "_newProtocolFee";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "event";
                  name: "Delegated";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "delegate";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      indexed: false;
                      internalType: "bytes32";
                  }, {
                      name: "value";
                      type: "bool";
                      indexed: false;
                      internalType: "bool";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "FlashActionContractUpdated";
                  inputs: readonly [{
                      name: "newFlashActionContract";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "FlashActionExecuted";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "target";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "data";
                      type: "bytes";
                      indexed: false;
                      internalType: "bytes";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LiquidationAuctionDurationUpdated";
                  inputs: readonly [{
                      name: "newDuration";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LiquidationContractUpdated";
                  inputs: readonly [{
                      name: "liquidator";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanEmitted";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "offerId";
                      type: "uint256[]";
                      indexed: false;
                      internalType: "uint256[]";
                  }, {
                      name: "loan";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "fee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanForeclosed";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanLiquidated";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "foreclosed";
                      type: "bool";
                      indexed: false;
                      internalType: "bool";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanRefinanced";
                  inputs: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "oldLoanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "newLoanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "loan";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "fee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanRefinancedFromNewOffers";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "newLoanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "loan";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "offerIds";
                      type: "uint256[]";
                      indexed: false;
                      internalType: "uint256[]";
                  }, {
                      name: "totalFee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanRepaid";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "totalRepayment";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "fee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanSentToLiquidator";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "liquidator";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "MinAprImprovementUpdated";
                  inputs: readonly [{
                      name: "_minimum";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "MinBidLiquidationUpdated";
                  inputs: readonly [{
                      name: "newMinBid";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "MinLockPeriodUpdated";
                  inputs: readonly [{
                      name: "minLockPeriod";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "OfferCancelled";
                  inputs: readonly [{
                      name: "lender";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "offerId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "OwnershipTransferred";
                  inputs: readonly [{
                      name: "user";
                      type: "address";
                      indexed: true;
                      internalType: "address";
                  }, {
                      name: "newOwner";
                      type: "address";
                      indexed: true;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "ProtocolFeePendingUpdate";
                  inputs: readonly [{
                      name: "fee";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "ProtocolFeeUpdated";
                  inputs: readonly [{
                      name: "fee";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "RenegotiationOfferCancelled";
                  inputs: readonly [{
                      name: "lender";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "renegotiationId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "RevokeDelegate";
                  inputs: readonly [{
                      name: "delegate";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "collection";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      indexed: false;
                      internalType: "bytes32";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "TransferOwnerRequested";
                  inputs: readonly [{
                      name: "newOwner";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "WhitelistedCallbackContractAdded";
                  inputs: readonly [{
                      name: "contractAdded";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "WhitelistedCallbackContractRemoved";
                  inputs: readonly [{
                      name: "contractRemoved";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "error";
                  name: "AddressZeroError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "CancelledOrExecutedOfferError";
                  inputs: readonly [{
                      name: "_lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "CollectionNotWhitelistedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "CurrencyNotWhitelistedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "ECDSAInvalidSignature";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "ECDSAInvalidSignatureLength";
                  inputs: readonly [{
                      name: "length";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "ECDSAInvalidSignatureS";
                  inputs: readonly [{
                      name: "s";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
              }, {
                  type: "error";
                  name: "ExpiredOfferError";
                  inputs: readonly [{
                      name: "_expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "InvalidAddressesError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidAmountError";
                  inputs: readonly [{
                      name: "_amount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "InvalidBorrowerError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCallbackError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCallerError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCollateralError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCollateralIdError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidDurationError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidInputError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidLoanError";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "InvalidLockPeriodError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidMethodError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidRenegotiationOfferError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidSignatureError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidTrancheError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LenderRefinanceDisabledError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LoanExpiredError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LoanLockedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LoanNotDueError";
                  inputs: readonly [{
                      name: "_expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "MaxCapacityExceededError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "MulticallFailed";
                  inputs: readonly [{
                      name: "i";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "returndata";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }, {
                  type: "error";
                  name: "NFTNotReturnedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "NotStrictlyImprovedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "TooEarlyError";
                  inputs: readonly [{
                      name: "_pendingProtocolFeeSetTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "TooManyTranchesError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "TooSoonError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "TrancheCannotBeRefinancedError";
                  inputs: readonly [{
                      name: "minTimestamp";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "ZeroInterestError";
                  inputs: readonly [];
              }], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "AllOffersCancelled" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "RevokeDelegate" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "MinLockPeriodUpdated" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "MinAprImprovementUpdated" | "MinBidLiquidationUpdated" | "TransferOwnerRequested" | "LoanRefinancedFromNewOffers")[]
                  ? TFunctionName[number]
                  : TFunctionName>
            • Type Parameters

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

              Parameters

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

              Returns ParseEventLogsReturnType<readonly [{
                  inputs: readonly [{
                      internalType: "address";
                      name: "loanLiquidator";
                      type: "address";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "recipient";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fraction";
                          type: "uint256";
                      }];
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      name: "protocolFee";
                      type: "tuple";
                  }, {
                      internalType: "address";
                      name: "currencyManager";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "collectionManager";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "maxTranches";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "minLockPeriod";
                      type: "uint256";
                  }, {
                      internalType: "address";
                      name: "delegateRegistry";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "loanManagerRegistry";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "flashActionContract";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "minWaitTime";
                      type: "uint256";
                  }];
                  stateMutability: "nonpayable";
                  type: "constructor";
              }, {
                  inputs: readonly [];
                  name: "DOMAIN_SEPARATOR";
                  outputs: readonly [{
                      internalType: "bytes32";
                      name: "";
                      type: "bytes32";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "FEE_UPDATE_NOTICE";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "INITIAL_DOMAIN_SEPARATOR";
                  outputs: readonly [{
                      internalType: "bytes32";
                      name: "";
                      type: "bytes32";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "MAX_AUCTION_DURATION";
                  outputs: readonly [{
                      internalType: "uint48";
                      name: "";
                      type: "uint48";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "MIN_AUCTION_DURATION";
                  outputs: readonly [{
                      internalType: "uint48";
                      name: "";
                      type: "uint48";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "MIN_BID_LIQUIDATION";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "MIN_WAIT_TIME";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "VERSION";
                  outputs: readonly [{
                      internalType: "bytes";
                      name: "";
                      type: "bytes";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      components: readonly [{
                          internalType: "uint256";
                          name: "renegotiationId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fee";
                          type: "uint256";
                      }, {
                          internalType: "uint256[]";
                          name: "trancheIndex";
                          type: "uint256[]";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "expirationTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      name: "_renegotiationOffer";
                      type: "tuple";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }, {
                      internalType: "bytes";
                      name: "_renegotiationOfferSignature";
                      type: "bytes";
                  }];
                  name: "addNewTranche";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_contract";
                      type: "address";
                  }];
                  name: "addWhitelistedCallbackContract";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_minOfferId";
                      type: "uint256";
                  }];
                  name: "cancelAllOffers";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_offerId";
                      type: "uint256";
                  }];
                  name: "cancelOffer";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_renegotiationId";
                      type: "uint256";
                  }];
                  name: "cancelRenegotiationOffer";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_loanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "loan";
                      type: "tuple";
                  }, {
                      internalType: "address";
                      name: "_delegate";
                      type: "address";
                  }, {
                      internalType: "bytes32";
                      name: "_rights";
                      type: "bytes32";
                  }, {
                      internalType: "bool";
                      name: "_value";
                      type: "bool";
                  }];
                  name: "delegate";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      components: readonly [{
                          components: readonly [{
                              components: readonly [{
                                  components: readonly [{
                                      internalType: "uint256";
                                      name: "offerId";
                                      type: "uint256";
                                  }, {
                                      internalType: "address";
                                      name: "lender";
                                      type: "address";
                                  }, {
                                      internalType: "uint256";
                                      name: "fee";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "capacity";
                                      type: "uint256";
                                  }, {
                                      internalType: "address";
                                      name: "nftCollateralAddress";
                                      type: "address";
                                  }, {
                                      internalType: "uint256";
                                      name: "nftCollateralTokenId";
                                      type: "uint256";
                                  }, {
                                      internalType: "address";
                                      name: "principalAddress";
                                      type: "address";
                                  }, {
                                      internalType: "uint256";
                                      name: "principalAmount";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "aprBps";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "expirationTime";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "duration";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "maxSeniorRepayment";
                                      type: "uint256";
                                  }, {
                                      components: readonly [{
                                          internalType: "address";
                                          name: "validator";
                                          type: "address";
                                      }, {
                                          internalType: "bytes";
                                          name: "arguments";
                                          type: "bytes";
                                      }];
                                      internalType: "struct IBaseLoan.OfferValidator[]";
                                      name: "validators";
                                      type: "tuple[]";
                                  }];
                                  internalType: "struct IMultiSourceLoan.LoanOffer";
                                  name: "offer";
                                  type: "tuple";
                              }, {
                                  internalType: "uint256";
                                  name: "amount";
                                  type: "uint256";
                              }, {
                                  internalType: "bytes";
                                  name: "lenderOfferSignature";
                                  type: "bytes";
                              }];
                              internalType: "struct IMultiSourceLoan.OfferExecution[]";
                              name: "offerExecution";
                              type: "tuple[]";
                          }, {
                              internalType: "uint256";
                              name: "tokenId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "duration";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "expirationTime";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "principalReceiver";
                              type: "address";
                          }, {
                              internalType: "bytes";
                              name: "callbackData";
                              type: "bytes";
                          }];
                          internalType: "struct IMultiSourceLoan.ExecutionData";
                          name: "executionData";
                          type: "tuple";
                      }, {
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "bytes";
                          name: "borrowerOfferSignature";
                          type: "bytes";
                      }];
                      internalType: "struct IMultiSourceLoan.LoanExecutionData";
                      name: "_loanExecutionData";
                      type: "tuple";
                  }];
                  name: "emitLoan";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_loanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }, {
                      internalType: "address";
                      name: "_target";
                      type: "address";
                  }, {
                      internalType: "bytes";
                      name: "_data";
                      type: "bytes";
                  }];
                  name: "executeFlashAction";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getCollectionManager";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getCurrencyManager";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getDelegateRegistry";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getFlashActionContract";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getLiquidationAuctionDuration";
                  outputs: readonly [{
                      internalType: "uint48";
                      name: "";
                      type: "uint48";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getLiquidator";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_loanId";
                      type: "uint256";
                  }];
                  name: "getLoanHash";
                  outputs: readonly [{
                      internalType: "bytes32";
                      name: "";
                      type: "bytes32";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getLoanManagerRegistry";
                  outputs: readonly [{
                      internalType: "contract ILoanManagerRegistry";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getMaxTranches";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getMinImprovementApr";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getMinLockPeriod";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getPendingProtocolFee";
                  outputs: readonly [{
                      components: readonly [{
                          internalType: "address";
                          name: "recipient";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fraction";
                          type: "uint256";
                      }];
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getPendingProtocolFeeSetTime";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getProtocolFee";
                  outputs: readonly [{
                      components: readonly [{
                          internalType: "address";
                          name: "recipient";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fraction";
                          type: "uint256";
                      }];
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "getTotalLoansIssued";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "_offerId";
                      type: "uint256";
                  }];
                  name: "getUsedCapacity";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "user";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "offerId";
                      type: "uint256";
                  }];
                  name: "isOfferCancelled";
                  outputs: readonly [{
                      internalType: "bool";
                      name: "notActive";
                      type: "bool";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "user";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "renegotiationIf";
                      type: "uint256";
                  }];
                  name: "isRenegotiationOfferCancelled";
                  outputs: readonly [{
                      internalType: "bool";
                      name: "notActive";
                      type: "bool";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_contract";
                      type: "address";
                  }];
                  name: "isWhitelistedCallbackContract";
                  outputs: readonly [{
                      internalType: "bool";
                      name: "";
                      type: "bool";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_loanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }];
                  name: "liquidateLoan";
                  outputs: readonly [{
                      internalType: "bytes";
                      name: "";
                      type: "bytes";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_loanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }];
                  name: "loanLiquidated";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "user";
                      type: "address";
                  }];
                  name: "minOfferId";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "minOfferId";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "bytes[]";
                      name: "data";
                      type: "bytes[]";
                  }];
                  name: "multicall";
                  outputs: readonly [{
                      internalType: "bytes[]";
                      name: "results";
                      type: "bytes[]";
                  }];
                  stateMutability: "payable";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "name";
                  outputs: readonly [{
                      internalType: "string";
                      name: "";
                      type: "string";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }, {
                      internalType: "bytes";
                      name: "";
                      type: "bytes";
                  }];
                  name: "onERC721Received";
                  outputs: readonly [{
                      internalType: "bytes4";
                      name: "";
                      type: "bytes4";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "owner";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "pendingOwner";
                  outputs: readonly [{
                      internalType: "address";
                      name: "";
                      type: "address";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [];
                  name: "pendingOwnerTime";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }];
                  stateMutability: "view";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_loanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }, {
                      components: readonly [{
                          components: readonly [{
                              components: readonly [{
                                  components: readonly [{
                                      internalType: "uint256";
                                      name: "offerId";
                                      type: "uint256";
                                  }, {
                                      internalType: "address";
                                      name: "lender";
                                      type: "address";
                                  }, {
                                      internalType: "uint256";
                                      name: "fee";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "capacity";
                                      type: "uint256";
                                  }, {
                                      internalType: "address";
                                      name: "nftCollateralAddress";
                                      type: "address";
                                  }, {
                                      internalType: "uint256";
                                      name: "nftCollateralTokenId";
                                      type: "uint256";
                                  }, {
                                      internalType: "address";
                                      name: "principalAddress";
                                      type: "address";
                                  }, {
                                      internalType: "uint256";
                                      name: "principalAmount";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "aprBps";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "expirationTime";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "duration";
                                      type: "uint256";
                                  }, {
                                      internalType: "uint256";
                                      name: "maxSeniorRepayment";
                                      type: "uint256";
                                  }, {
                                      components: readonly [{
                                          internalType: "address";
                                          name: "validator";
                                          type: "address";
                                      }, {
                                          internalType: "bytes";
                                          name: "arguments";
                                          type: "bytes";
                                      }];
                                      internalType: "struct IBaseLoan.OfferValidator[]";
                                      name: "validators";
                                      type: "tuple[]";
                                  }];
                                  internalType: "struct IMultiSourceLoan.LoanOffer";
                                  name: "offer";
                                  type: "tuple";
                              }, {
                                  internalType: "uint256";
                                  name: "amount";
                                  type: "uint256";
                              }, {
                                  internalType: "bytes";
                                  name: "lenderOfferSignature";
                                  type: "bytes";
                              }];
                              internalType: "struct IMultiSourceLoan.OfferExecution[]";
                              name: "offerExecution";
                              type: "tuple[]";
                          }, {
                              internalType: "uint256";
                              name: "tokenId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "duration";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "expirationTime";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "principalReceiver";
                              type: "address";
                          }, {
                              internalType: "bytes";
                              name: "callbackData";
                              type: "bytes";
                          }];
                          internalType: "struct IMultiSourceLoan.ExecutionData";
                          name: "executionData";
                          type: "tuple";
                      }, {
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "bytes";
                          name: "borrowerOfferSignature";
                          type: "bytes";
                      }];
                      internalType: "struct IMultiSourceLoan.LoanExecutionData";
                      name: "_loanExecutionData";
                      type: "tuple";
                  }];
                  name: "refinanceFromLoanExecutionData";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      components: readonly [{
                          internalType: "uint256";
                          name: "renegotiationId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fee";
                          type: "uint256";
                      }, {
                          internalType: "uint256[]";
                          name: "trancheIndex";
                          type: "uint256[]";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "expirationTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      name: "_renegotiationOffer";
                      type: "tuple";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }, {
                      internalType: "bytes";
                      name: "_renegotiationOfferSignature";
                      type: "bytes";
                  }];
                  name: "refinanceFull";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      components: readonly [{
                          internalType: "uint256";
                          name: "renegotiationId";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "loanId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "lender";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fee";
                          type: "uint256";
                      }, {
                          internalType: "uint256[]";
                          name: "trancheIndex";
                          type: "uint256[]";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "aprBps";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "expirationTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      name: "_renegotiationOffer";
                      type: "tuple";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "_loan";
                      type: "tuple";
                  }];
                  name: "refinancePartial";
                  outputs: readonly [{
                      internalType: "uint256";
                      name: "";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "";
                      type: "tuple";
                  }];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_contract";
                      type: "address";
                  }];
                  name: "removeWhitelistedCallbackContract";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      components: readonly [{
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "bytes";
                              name: "callbackData";
                              type: "bytes";
                          }, {
                              internalType: "bool";
                              name: "shouldDelegate";
                              type: "bool";
                          }];
                          internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                          name: "data";
                          type: "tuple";
                      }, {
                          components: readonly [{
                              internalType: "address";
                              name: "borrower";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "nftCollateralTokenId";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "nftCollateralAddress";
                              type: "address";
                          }, {
                              internalType: "address";
                              name: "principalAddress";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "duration";
                              type: "uint256";
                          }, {
                              components: readonly [{
                                  internalType: "uint256";
                                  name: "loanId";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "floor";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "principalAmount";
                                  type: "uint256";
                              }, {
                                  internalType: "address";
                                  name: "lender";
                                  type: "address";
                              }, {
                                  internalType: "uint256";
                                  name: "accruedInterest";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "startTime";
                                  type: "uint256";
                              }, {
                                  internalType: "uint256";
                                  name: "aprBps";
                                  type: "uint256";
                              }];
                              internalType: "struct IMultiSourceLoan.Tranche[]";
                              name: "tranche";
                              type: "tuple[]";
                          }, {
                              internalType: "uint256";
                              name: "protocolFee";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Loan";
                          name: "loan";
                          type: "tuple";
                      }, {
                          internalType: "bytes";
                          name: "borrowerSignature";
                          type: "bytes";
                      }];
                      internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                      name: "_repaymentData";
                      type: "tuple";
                  }];
                  name: "repayLoan";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_newOwner";
                      type: "address";
                  }];
                  name: "requestTransferOwner";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_delegate";
                      type: "address";
                  }, {
                      internalType: "address";
                      name: "_collection";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "_tokenId";
                      type: "uint256";
                  }, {
                      internalType: "bytes32";
                      name: "_rights";
                      type: "bytes32";
                  }];
                  name: "revokeDelegate";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_newFlashActionContract";
                      type: "address";
                  }];
                  name: "setFlashActionContract";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "__minLockPeriod";
                      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 [{
                      internalType: "address";
                      name: "newOwner";
                      type: "address";
                  }];
                  name: "transferOwnership";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint48";
                      name: "_newDuration";
                      type: "uint48";
                  }];
                  name: "updateLiquidationAuctionDuration";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "__loanLiquidator";
                      type: "address";
                  }];
                  name: "updateLiquidationContract";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_newMinimum";
                      type: "uint256";
                  }];
                  name: "updateMinImprovementApr";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  inputs: readonly [{
                      components: readonly [{
                          internalType: "address";
                          name: "recipient";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fraction";
                          type: "uint256";
                      }];
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      name: "_newProtocolFee";
                      type: "tuple";
                  }];
                  name: "updateProtocolFee";
                  outputs: readonly [];
                  stateMutability: "nonpayable";
                  type: "function";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "minOfferId";
                      type: "uint256";
                  }];
                  name: "AllOffersCancelled";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "address";
                      name: "delegate";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "bytes32";
                      name: "_rights";
                      type: "bytes32";
                  }, {
                      indexed: false;
                      internalType: "bool";
                      name: "value";
                      type: "bool";
                  }];
                  name: "Delegated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "newFlashActionContract";
                      type: "address";
                  }];
                  name: "FlashActionContractUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "address";
                      name: "target";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "bytes";
                      name: "data";
                      type: "bytes";
                  }];
                  name: "FlashActionExecuted";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "newDuration";
                      type: "uint256";
                  }];
                  name: "LiquidationAuctionDurationUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "liquidator";
                      type: "address";
                  }];
                  name: "LiquidationContractUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "uint256[]";
                      name: "offerId";
                      type: "uint256[]";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "loan";
                      type: "tuple";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "fee";
                      type: "uint256";
                  }];
                  name: "LoanEmitted";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }];
                  name: "LoanForeclosed";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }];
                  name: "LoanLiquidated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "renegotiationId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "oldLoanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "newLoanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "loan";
                      type: "tuple";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "fee";
                      type: "uint256";
                  }];
                  name: "LoanRefinanced";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "newLoanId";
                      type: "uint256";
                  }, {
                      components: readonly [{
                          internalType: "address";
                          name: "borrower";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "nftCollateralTokenId";
                          type: "uint256";
                      }, {
                          internalType: "address";
                          name: "nftCollateralAddress";
                          type: "address";
                      }, {
                          internalType: "address";
                          name: "principalAddress";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "principalAmount";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "startTime";
                          type: "uint256";
                      }, {
                          internalType: "uint256";
                          name: "duration";
                          type: "uint256";
                      }, {
                          components: readonly [{
                              internalType: "uint256";
                              name: "loanId";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "floor";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "principalAmount";
                              type: "uint256";
                          }, {
                              internalType: "address";
                              name: "lender";
                              type: "address";
                          }, {
                              internalType: "uint256";
                              name: "accruedInterest";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "startTime";
                              type: "uint256";
                          }, {
                              internalType: "uint256";
                              name: "aprBps";
                              type: "uint256";
                          }];
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          name: "tranche";
                          type: "tuple[]";
                      }, {
                          internalType: "uint256";
                          name: "protocolFee";
                          type: "uint256";
                      }];
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      name: "loan";
                      type: "tuple";
                  }, {
                      indexed: false;
                      internalType: "uint256[]";
                      name: "offerIds";
                      type: "uint256[]";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "totalFee";
                      type: "uint256";
                  }];
                  name: "LoanRefinancedFromNewOffers";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "totalRepayment";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "fee";
                      type: "uint256";
                  }];
                  name: "LoanRepaid";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "loanId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "address";
                      name: "liquidator";
                      type: "address";
                  }];
                  name: "LoanSentToLiquidator";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "_minimum";
                      type: "uint256";
                  }];
                  name: "MinAprImprovementUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "newMinBid";
                      type: "uint256";
                  }];
                  name: "MinBidLiquidationUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "uint256";
                      name: "minLockPeriod";
                      type: "uint256";
                  }];
                  name: "MinLockPeriodUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "offerId";
                      type: "uint256";
                  }];
                  name: "OfferCancelled";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: true;
                      internalType: "address";
                      name: "user";
                      type: "address";
                  }, {
                      indexed: true;
                      internalType: "address";
                      name: "newOwner";
                      type: "address";
                  }];
                  name: "OwnershipTransferred";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      components: readonly [{
                          internalType: "address";
                          name: "recipient";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fraction";
                          type: "uint256";
                      }];
                      indexed: false;
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      name: "fee";
                      type: "tuple";
                  }];
                  name: "ProtocolFeePendingUpdate";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      components: readonly [{
                          internalType: "address";
                          name: "recipient";
                          type: "address";
                      }, {
                          internalType: "uint256";
                          name: "fraction";
                          type: "uint256";
                      }];
                      indexed: false;
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      name: "fee";
                      type: "tuple";
                  }];
                  name: "ProtocolFeeUpdated";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "lender";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "renegotiationId";
                      type: "uint256";
                  }];
                  name: "RenegotiationOfferCancelled";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "delegate";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "address";
                      name: "collection";
                      type: "address";
                  }, {
                      indexed: false;
                      internalType: "uint256";
                      name: "tokenId";
                      type: "uint256";
                  }, {
                      indexed: false;
                      internalType: "bytes32";
                      name: "_rights";
                      type: "bytes32";
                  }];
                  name: "RevokeDelegate";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "newOwner";
                      type: "address";
                  }];
                  name: "TransferOwnerRequested";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "contractAdded";
                      type: "address";
                  }];
                  name: "WhitelistedCallbackContractAdded";
                  type: "event";
              }, {
                  anonymous: false;
                  inputs: readonly [{
                      indexed: false;
                      internalType: "address";
                      name: "contractRemoved";
                      type: "address";
                  }];
                  name: "WhitelistedCallbackContractRemoved";
                  type: "event";
              }, {
                  inputs: readonly [];
                  name: "AddressZeroError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "_offerId";
                      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 [{
                      internalType: "uint256";
                      name: "length";
                      type: "uint256";
                  }];
                  name: "ECDSAInvalidSignatureLength";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "bytes32";
                      name: "s";
                      type: "bytes32";
                  }];
                  name: "ECDSAInvalidSignatureS";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_expirationTime";
                      type: "uint256";
                  }];
                  name: "ExpiredOfferError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "InvalidAddressesError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_amount";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "_principalAmount";
                      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 [{
                      internalType: "uint256";
                      name: "_loanId";
                      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 [{
                      internalType: "address";
                      name: "_liquidator";
                      type: "address";
                  }];
                  name: "LiquidatorOnlyError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "LoanExpiredError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "LoanLockedError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_expirationTime";
                      type: "uint256";
                  }];
                  name: "LoanNotDueError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "_newMinOfferId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "_minOfferId";
                      type: "uint256";
                  }];
                  name: "LowOfferIdError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "address";
                      name: "_lender";
                      type: "address";
                  }, {
                      internalType: "uint256";
                      name: "_newMinRenegotiationOfferId";
                      type: "uint256";
                  }, {
                      internalType: "uint256";
                      name: "_minOfferId";
                      type: "uint256";
                  }];
                  name: "LowRenegotiationOfferIdError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "MaxCapacityExceededError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "MismatchError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "i";
                      type: "uint256";
                  }, {
                      internalType: "bytes";
                      name: "returndata";
                      type: "bytes";
                  }];
                  name: "MulticallFailed";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "NFTNotReturnedError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "NotStrictlyImprovedError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "_pendingProtocolFeeSetTime";
                      type: "uint256";
                  }];
                  name: "TooEarlyError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "TooManyTranchesError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "TooSoonError";
                  type: "error";
              }, {
                  inputs: readonly [{
                      internalType: "uint256";
                      name: "minTimestamp";
                      type: "uint256";
                  }];
                  name: "TrancheCannotBeRefinancedError";
                  type: "error";
              }, {
                  inputs: readonly [];
                  name: "ZeroInterestError";
                  type: "error";
              }] | readonly [{
                  type: "constructor";
                  inputs: readonly [{
                      name: "loanLiquidator";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "protocolFee";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "currencyManager";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "collectionManager";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "maxTranches";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "minLockPeriod";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "delegateRegistry";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "loanManagerRegistry";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "flashActionContract";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "minWaitTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "DOMAIN_SEPARATOR";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "FEE_UPDATE_NOTICE";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "INITIAL_DOMAIN_SEPARATOR";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MAX_AUCTION_DURATION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MIN_AUCTION_DURATION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MIN_BID_LIQUIDATION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MIN_WAIT_TIME";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "VERSION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "addNewTranche";
                  inputs: readonly [{
                      name: "_renegotiationOffer";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      components: readonly [{
                          name: "renegotiationId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "trancheIndex";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_renegotiationOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "addWhitelistedCallbackContract";
                  inputs: readonly [{
                      name: "_contract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "cancelOffer";
                  inputs: readonly [{
                      name: "_offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "cancelRenegotiationOffer";
                  inputs: readonly [{
                      name: "_renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "delegate";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_delegate";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      internalType: "bytes32";
                  }, {
                      name: "_value";
                      type: "bool";
                      internalType: "bool";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "emitLoan";
                  inputs: readonly [{
                      name: "_loanExecutionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.LoanExecutionData";
                      components: readonly [{
                          name: "executionData";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.ExecutionData";
                          components: readonly [{
                              name: "offerExecution";
                              type: "tuple[]";
                              internalType: "struct IMultiSourceLoan.OfferExecution[]";
                              components: readonly [{
                                  name: "offer";
                                  type: "tuple";
                                  internalType: "struct IMultiSourceLoan.LoanOffer";
                                  components: readonly [{
                                      name: "offerId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "lender";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "fee";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "capacity";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "nftCollateralAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "nftCollateralTokenId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "principalAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "principalAmount";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "aprBps";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "expirationTime";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "duration";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "maxSeniorRepayment";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "validators";
                                      type: "tuple[]";
                                      internalType: "struct IBaseLoan.OfferValidator[]";
                                      components: readonly [{
                                          name: "validator";
                                          type: "address";
                                          internalType: "address";
                                      }, {
                                          name: "arguments";
                                          type: "bytes";
                                          internalType: "bytes";
                                      }];
                                  }];
                              }, {
                                  name: "amount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lenderOfferSignature";
                                  type: "bytes";
                                  internalType: "bytes";
                              }];
                          }, {
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "tokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "expirationTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalReceiver";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "callbackData";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "borrowerOfferSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "executeFlashAction";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_target";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_data";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "getCollectionManager";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getCurrencyManager";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getDelegateRegistry";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getFlashActionContract";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLiquidationAuctionDuration";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLiquidator";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLoanHash";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLoanManagerRegistry";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "contract ILoanManagerRegistry";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getMaxTranches";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getMinImprovementApr";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getMinLockPeriod";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getPendingProtocolFee";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getPendingProtocolFeeSetTime";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getProtocolFee";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getTotalLoansIssued";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getUsedCapacity";
                  inputs: readonly [{
                      name: "_lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "isOfferCancelled";
                  inputs: readonly [{
                      name: "user";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "notActive";
                      type: "bool";
                      internalType: "bool";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "isRenegotiationOfferCancelled";
                  inputs: readonly [{
                      name: "user";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "renegotiationIf";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "notActive";
                      type: "bool";
                      internalType: "bool";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "isWhitelistedCallbackContract";
                  inputs: readonly [{
                      name: "_contract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bool";
                      internalType: "bool";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "liquidateLoan";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "loanLiquidated";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "multicall";
                  inputs: readonly [{
                      name: "data";
                      type: "bytes[]";
                      internalType: "bytes[]";
                  }];
                  outputs: readonly [{
                      name: "results";
                      type: "bytes[]";
                      internalType: "bytes[]";
                  }];
                  stateMutability: "payable";
              }, {
                  type: "function";
                  name: "name";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "string";
                      internalType: "string";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "onERC721Received";
                  inputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bytes4";
                      internalType: "bytes4";
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "owner";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "pendingOwner";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "pendingOwnerTime";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "refinanceFromLoanExecutionData";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loanExecutionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.LoanExecutionData";
                      components: readonly [{
                          name: "executionData";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.ExecutionData";
                          components: readonly [{
                              name: "offerExecution";
                              type: "tuple[]";
                              internalType: "struct IMultiSourceLoan.OfferExecution[]";
                              components: readonly [{
                                  name: "offer";
                                  type: "tuple";
                                  internalType: "struct IMultiSourceLoan.LoanOffer";
                                  components: readonly [{
                                      name: "offerId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "lender";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "fee";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "capacity";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "nftCollateralAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "nftCollateralTokenId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "principalAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "principalAmount";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "aprBps";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "expirationTime";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "duration";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "maxSeniorRepayment";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "validators";
                                      type: "tuple[]";
                                      internalType: "struct IBaseLoan.OfferValidator[]";
                                      components: readonly [{
                                          name: "validator";
                                          type: "address";
                                          internalType: "address";
                                      }, {
                                          name: "arguments";
                                          type: "bytes";
                                          internalType: "bytes";
                                      }];
                                  }];
                              }, {
                                  name: "amount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lenderOfferSignature";
                                  type: "bytes";
                                  internalType: "bytes";
                              }];
                          }, {
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "tokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "expirationTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalReceiver";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "callbackData";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "borrowerOfferSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "refinanceFull";
                  inputs: readonly [{
                      name: "_renegotiationOffer";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      components: readonly [{
                          name: "renegotiationId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "trancheIndex";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_renegotiationOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "refinancePartial";
                  inputs: readonly [{
                      name: "_renegotiationOffer";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      components: readonly [{
                          name: "renegotiationId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "trancheIndex";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "removeWhitelistedCallbackContract";
                  inputs: readonly [{
                      name: "_contract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "repayLoan";
                  inputs: readonly [{
                      name: "_repaymentData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                      components: readonly [{
                          name: "data";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "callbackData";
                              type: "bytes";
                              internalType: "bytes";
                          }, {
                              name: "shouldDelegate";
                              type: "bool";
                              internalType: "bool";
                          }];
                      }, {
                          name: "loan";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.Loan";
                          components: readonly [{
                              name: "borrower";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "nftCollateralTokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "principalAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "tranche";
                              type: "tuple[]";
                              internalType: "struct IMultiSourceLoan.Tranche[]";
                              components: readonly [{
                                  name: "loanId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "floor";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "principalAmount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lender";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "accruedInterest";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "startTime";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "aprBps";
                                  type: "uint256";
                                  internalType: "uint256";
                              }];
                          }, {
                              name: "protocolFee";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "borrowerSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "requestTransferOwner";
                  inputs: readonly [{
                      name: "_newOwner";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "revokeDelegate";
                  inputs: readonly [{
                      name: "_delegate";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_collection";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "setFlashActionContract";
                  inputs: readonly [{
                      name: "_newFlashActionContract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "setMinLockPeriod";
                  inputs: readonly [{
                      name: "__minLockPeriod";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "setProtocolFee";
                  inputs: readonly [];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "transferOwnership";
                  inputs: readonly [];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "transferOwnership";
                  inputs: readonly [{
                      name: "newOwner";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateLiquidationAuctionDuration";
                  inputs: readonly [{
                      name: "_newDuration";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateLiquidationContract";
                  inputs: readonly [{
                      name: "__loanLiquidator";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateMinImprovementApr";
                  inputs: readonly [{
                      name: "_newMinimum";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateProtocolFee";
                  inputs: readonly [{
                      name: "_newProtocolFee";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "event";
                  name: "Delegated";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "delegate";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      indexed: false;
                      internalType: "bytes32";
                  }, {
                      name: "value";
                      type: "bool";
                      indexed: false;
                      internalType: "bool";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "FlashActionContractUpdated";
                  inputs: readonly [{
                      name: "newFlashActionContract";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "FlashActionExecuted";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "target";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "data";
                      type: "bytes";
                      indexed: false;
                      internalType: "bytes";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LiquidationAuctionDurationUpdated";
                  inputs: readonly [{
                      name: "newDuration";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LiquidationContractUpdated";
                  inputs: readonly [{
                      name: "liquidator";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanEmitted";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "offerId";
                      type: "uint256[]";
                      indexed: false;
                      internalType: "uint256[]";
                  }, {
                      name: "loan";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "fee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanForeclosed";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanLiquidated";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanRefinanced";
                  inputs: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "oldLoanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "newLoanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "loan";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "fee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanRefinancedFromNewOffers";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "newLoanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "loan";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "offerIds";
                      type: "uint256[]";
                      indexed: false;
                      internalType: "uint256[]";
                  }, {
                      name: "totalFee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanRepaid";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "totalRepayment";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "fee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanSentToLiquidator";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "liquidator";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "MinAprImprovementUpdated";
                  inputs: readonly [{
                      name: "_minimum";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "MinBidLiquidationUpdated";
                  inputs: readonly [{
                      name: "newMinBid";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "MinLockPeriodUpdated";
                  inputs: readonly [{
                      name: "minLockPeriod";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "OfferCancelled";
                  inputs: readonly [{
                      name: "lender";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "offerId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "OwnershipTransferred";
                  inputs: readonly [{
                      name: "user";
                      type: "address";
                      indexed: true;
                      internalType: "address";
                  }, {
                      name: "newOwner";
                      type: "address";
                      indexed: true;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "ProtocolFeePendingUpdate";
                  inputs: readonly [{
                      name: "fee";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "ProtocolFeeUpdated";
                  inputs: readonly [{
                      name: "fee";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "RenegotiationOfferCancelled";
                  inputs: readonly [{
                      name: "lender";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "renegotiationId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "RevokeDelegate";
                  inputs: readonly [{
                      name: "delegate";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "collection";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      indexed: false;
                      internalType: "bytes32";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "TransferOwnerRequested";
                  inputs: readonly [{
                      name: "newOwner";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "WhitelistedCallbackContractAdded";
                  inputs: readonly [{
                      name: "contractAdded";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "WhitelistedCallbackContractRemoved";
                  inputs: readonly [{
                      name: "contractRemoved";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "error";
                  name: "AddressZeroError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "CancelledOrExecutedOfferError";
                  inputs: readonly [{
                      name: "_lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "CollectionNotWhitelistedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "CurrencyNotWhitelistedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "ECDSAInvalidSignature";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "ECDSAInvalidSignatureLength";
                  inputs: readonly [{
                      name: "length";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "ECDSAInvalidSignatureS";
                  inputs: readonly [{
                      name: "s";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
              }, {
                  type: "error";
                  name: "ExpiredOfferError";
                  inputs: readonly [{
                      name: "_expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "InvalidAddressesError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidAmountError";
                  inputs: readonly [{
                      name: "_amount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "InvalidCallbackError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCallerError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCollateralError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCollateralIdError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidDurationError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidInputError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidLoanError";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "InvalidMethodError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidParametersError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidRenegotiationOfferError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidSignatureError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidTrancheError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LiquidatorOnlyError";
                  inputs: readonly [{
                      name: "_liquidator";
                      type: "address";
                      internalType: "address";
                  }];
              }, {
                  type: "error";
                  name: "LoanExpiredError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LoanLockedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LoanNotDueError";
                  inputs: readonly [{
                      name: "_expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "MaxCapacityExceededError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "MismatchError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "MulticallFailed";
                  inputs: readonly [{
                      name: "i";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "returndata";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }, {
                  type: "error";
                  name: "NFTNotReturnedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "NotStrictlyImprovedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "TooEarlyError";
                  inputs: readonly [{
                      name: "_pendingProtocolFeeSetTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "TooManyTranchesError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "TooSoonError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "TrancheCannotBeRefinancedError";
                  inputs: readonly [{
                      name: "minTimestamp";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "ZeroInterestError";
                  inputs: readonly [];
              }] | readonly [{
                  type: "constructor";
                  inputs: readonly [{
                      name: "loanLiquidator";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "protocolFee";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "currencyManager";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "collectionManager";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "maxTranches";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "minLockPeriod";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "delegateRegistry";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "loanManagerRegistry";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "flashActionContract";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "minWaitTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "DOMAIN_SEPARATOR";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "FEE_UPDATE_NOTICE";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "INITIAL_DOMAIN_SEPARATOR";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MAX_AUCTION_DURATION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MIN_AUCTION_DURATION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MIN_BID_LIQUIDATION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "MIN_WAIT_TIME";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "VERSION";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "addNewTranche";
                  inputs: readonly [{
                      name: "_renegotiationOffer";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      components: readonly [{
                          name: "renegotiationId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "trancheIndex";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "_renegotiationOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "addWhitelistedCallbackContract";
                  inputs: readonly [{
                      name: "_contract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "cancelOffer";
                  inputs: readonly [{
                      name: "_offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "cancelRenegotiationOffer";
                  inputs: readonly [{
                      name: "_renegotiationId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "delegate";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "_delegate";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      internalType: "bytes32";
                  }, {
                      name: "_value";
                      type: "bool";
                      internalType: "bool";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "emitLoan";
                  inputs: readonly [{
                      name: "_loanExecutionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.LoanExecutionData";
                      components: readonly [{
                          name: "executionData";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.ExecutionData";
                          components: readonly [{
                              name: "offerExecution";
                              type: "tuple[]";
                              internalType: "struct IMultiSourceLoan.OfferExecution[]";
                              components: readonly [{
                                  name: "offer";
                                  type: "tuple";
                                  internalType: "struct IMultiSourceLoan.LoanOffer";
                                  components: readonly [{
                                      name: "offerId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "lender";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "fee";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "capacity";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "nftCollateralAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "nftCollateralTokenId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "principalAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "principalAmount";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "aprBps";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "expirationTime";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "duration";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "maxSeniorRepayment";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "validators";
                                      type: "tuple[]";
                                      internalType: "struct IBaseLoan.OfferValidator[]";
                                      components: readonly [{
                                          name: "validator";
                                          type: "address";
                                          internalType: "address";
                                      }, {
                                          name: "arguments";
                                          type: "bytes";
                                          internalType: "bytes";
                                      }];
                                  }, {
                                      name: "lenderRefinanceDisabled";
                                      type: "bool";
                                      internalType: "bool";
                                  }, {
                                      name: "borrower";
                                      type: "address";
                                      internalType: "address";
                                  }];
                              }, {
                                  name: "amount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lenderOfferSignature";
                                  type: "bytes";
                                  internalType: "bytes";
                              }];
                          }, {
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "tokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "expirationTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalReceiver";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "callbackData";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "borrowerOfferSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "executeFlashAction";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "_target";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_data";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "getCollectionManager";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getCurrencyManager";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getDelegateRegistry";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getFlashActionContract";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLiquidationAuctionDuration";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLiquidator";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLoanHash";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getLoanManagerRegistry";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "contract ILoanManagerRegistry";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getMaxTranches";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getMinImprovementApr";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getMinLockPeriod";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getPendingProtocolFee";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getPendingProtocolFeeSetTime";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getProtocolFee";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getTotalLoansIssued";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "getUsedCapacity";
                  inputs: readonly [{
                      name: "_lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "isOfferCancelled";
                  inputs: readonly [{
                      name: "user";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "notActive";
                      type: "bool";
                      internalType: "bool";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "isRenegotiationOfferCancelled";
                  inputs: readonly [{
                      name: "user";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "renegotiationIf";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [{
                      name: "notActive";
                      type: "bool";
                      internalType: "bool";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "isWhitelistedCallbackContract";
                  inputs: readonly [{
                      name: "_contract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bool";
                      internalType: "bool";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "liquidateLoan";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "multicall";
                  inputs: readonly [{
                      name: "data";
                      type: "bytes[]";
                      internalType: "bytes[]";
                  }];
                  outputs: readonly [{
                      name: "results";
                      type: "bytes[]";
                      internalType: "bytes[]";
                  }];
                  stateMutability: "payable";
              }, {
                  type: "function";
                  name: "name";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "string";
                      internalType: "string";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "onERC721Received";
                  inputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "bytes4";
                      internalType: "bytes4";
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "owner";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "pendingOwner";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "address";
                      internalType: "address";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "pendingOwnerTime";
                  inputs: readonly [];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  stateMutability: "view";
              }, {
                  type: "function";
                  name: "refinanceFromLoanExecutionData";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "_loanExecutionData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.LoanExecutionData";
                      components: readonly [{
                          name: "executionData";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.ExecutionData";
                          components: readonly [{
                              name: "offerExecution";
                              type: "tuple[]";
                              internalType: "struct IMultiSourceLoan.OfferExecution[]";
                              components: readonly [{
                                  name: "offer";
                                  type: "tuple";
                                  internalType: "struct IMultiSourceLoan.LoanOffer";
                                  components: readonly [{
                                      name: "offerId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "lender";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "fee";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "capacity";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "nftCollateralAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "nftCollateralTokenId";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "principalAddress";
                                      type: "address";
                                      internalType: "address";
                                  }, {
                                      name: "principalAmount";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "aprBps";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "expirationTime";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "duration";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "maxSeniorRepayment";
                                      type: "uint256";
                                      internalType: "uint256";
                                  }, {
                                      name: "validators";
                                      type: "tuple[]";
                                      internalType: "struct IBaseLoan.OfferValidator[]";
                                      components: readonly [{
                                          name: "validator";
                                          type: "address";
                                          internalType: "address";
                                      }, {
                                          name: "arguments";
                                          type: "bytes";
                                          internalType: "bytes";
                                      }];
                                  }, {
                                      name: "lenderRefinanceDisabled";
                                      type: "bool";
                                      internalType: "bool";
                                  }, {
                                      name: "borrower";
                                      type: "address";
                                      internalType: "address";
                                  }];
                              }, {
                                  name: "amount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lenderOfferSignature";
                                  type: "bytes";
                                  internalType: "bytes";
                              }];
                          }, {
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "tokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "expirationTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalReceiver";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "callbackData";
                              type: "bytes";
                              internalType: "bytes";
                          }];
                      }, {
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "borrowerOfferSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "refinanceFull";
                  inputs: readonly [{
                      name: "_renegotiationOffer";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      components: readonly [{
                          name: "renegotiationId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "trancheIndex";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "_renegotiationOfferSignature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "refinancePartial";
                  inputs: readonly [{
                      name: "_renegotiationOffer";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                      components: readonly [{
                          name: "renegotiationId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "trancheIndex";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "expirationTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }, {
                      name: "_loan";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  outputs: readonly [{
                      name: "";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "removeWhitelistedCallbackContract";
                  inputs: readonly [{
                      name: "_contract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "repayLoan";
                  inputs: readonly [{
                      name: "_repaymentData";
                      type: "tuple";
                      internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                      components: readonly [{
                          name: "data";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "callbackData";
                              type: "bytes";
                              internalType: "bytes";
                          }, {
                              name: "shouldDelegate";
                              type: "bool";
                              internalType: "bool";
                          }];
                      }, {
                          name: "loan";
                          type: "tuple";
                          internalType: "struct IMultiSourceLoan.Loan";
                          components: readonly [{
                              name: "borrower";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "nftCollateralTokenId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "principalAddress";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "duration";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "tranche";
                              type: "tuple[]";
                              internalType: "struct IMultiSourceLoan.Tranche[]";
                              components: readonly [{
                                  name: "loanId";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "floor";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "principalAmount";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "lender";
                                  type: "address";
                                  internalType: "address";
                              }, {
                                  name: "accruedInterest";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "startTime";
                                  type: "uint256";
                                  internalType: "uint256";
                              }, {
                                  name: "aprBps";
                                  type: "uint256";
                                  internalType: "uint256";
                              }];
                          }, {
                              name: "protocolFee";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lenderRefinanceDisabled";
                              type: "bool";
                              internalType: "bool";
                          }];
                      }, {
                          name: "borrowerSignature";
                          type: "bytes";
                          internalType: "bytes";
                      }];
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "requestTransferOwner";
                  inputs: readonly [{
                      name: "_newOwner";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "revokeDelegate";
                  inputs: readonly [{
                      name: "_delegate";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_collection";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "setFlashActionContract";
                  inputs: readonly [{
                      name: "_newFlashActionContract";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "setMinLockPeriod";
                  inputs: readonly [{
                      name: "__minLockPeriod";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "setProtocolFee";
                  inputs: readonly [];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "transferOwnership";
                  inputs: readonly [];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateLiquidationAuctionDuration";
                  inputs: readonly [{
                      name: "_newDuration";
                      type: "uint48";
                      internalType: "uint48";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateLiquidationContract";
                  inputs: readonly [{
                      name: "__loanLiquidator";
                      type: "address";
                      internalType: "address";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateMinImprovementApr";
                  inputs: readonly [{
                      name: "_newMinimum";
                      type: "uint256";
                      internalType: "uint256";
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "function";
                  name: "updateProtocolFee";
                  inputs: readonly [{
                      name: "_newProtocolFee";
                      type: "tuple";
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  outputs: readonly [];
                  stateMutability: "nonpayable";
              }, {
                  type: "event";
                  name: "Delegated";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "delegate";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      indexed: false;
                      internalType: "bytes32";
                  }, {
                      name: "value";
                      type: "bool";
                      indexed: false;
                      internalType: "bool";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "FlashActionContractUpdated";
                  inputs: readonly [{
                      name: "newFlashActionContract";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "FlashActionExecuted";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "target";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "data";
                      type: "bytes";
                      indexed: false;
                      internalType: "bytes";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LiquidationAuctionDurationUpdated";
                  inputs: readonly [{
                      name: "newDuration";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LiquidationContractUpdated";
                  inputs: readonly [{
                      name: "liquidator";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanEmitted";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "offerId";
                      type: "uint256[]";
                      indexed: false;
                      internalType: "uint256[]";
                  }, {
                      name: "loan";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "fee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanForeclosed";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanLiquidated";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "foreclosed";
                      type: "bool";
                      indexed: false;
                      internalType: "bool";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanRefinanced";
                  inputs: readonly [{
                      name: "renegotiationId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "oldLoanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "newLoanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "loan";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "fee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanRefinancedFromNewOffers";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "newLoanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "loan";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct IMultiSourceLoan.Loan";
                      components: readonly [{
                          name: "borrower";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAddress";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "duration";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "tranche";
                          type: "tuple[]";
                          internalType: "struct IMultiSourceLoan.Tranche[]";
                          components: readonly [{
                              name: "loanId";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "floor";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "principalAmount";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "lender";
                              type: "address";
                              internalType: "address";
                          }, {
                              name: "accruedInterest";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "startTime";
                              type: "uint256";
                              internalType: "uint256";
                          }, {
                              name: "aprBps";
                              type: "uint256";
                              internalType: "uint256";
                          }];
                      }, {
                          name: "protocolFee";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lenderRefinanceDisabled";
                          type: "bool";
                          internalType: "bool";
                      }];
                  }, {
                      name: "offerIds";
                      type: "uint256[]";
                      indexed: false;
                      internalType: "uint256[]";
                  }, {
                      name: "totalFee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanRepaid";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "totalRepayment";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "fee";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "LoanSentToLiquidator";
                  inputs: readonly [{
                      name: "loanId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "liquidator";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "MinAprImprovementUpdated";
                  inputs: readonly [{
                      name: "_minimum";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "MinBidLiquidationUpdated";
                  inputs: readonly [{
                      name: "newMinBid";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "MinLockPeriodUpdated";
                  inputs: readonly [{
                      name: "minLockPeriod";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "OfferCancelled";
                  inputs: readonly [{
                      name: "lender";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "offerId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "OwnershipTransferred";
                  inputs: readonly [{
                      name: "user";
                      type: "address";
                      indexed: true;
                      internalType: "address";
                  }, {
                      name: "newOwner";
                      type: "address";
                      indexed: true;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "ProtocolFeePendingUpdate";
                  inputs: readonly [{
                      name: "fee";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "ProtocolFeeUpdated";
                  inputs: readonly [{
                      name: "fee";
                      type: "tuple";
                      indexed: false;
                      internalType: "struct WithProtocolFee.ProtocolFee";
                      components: readonly [{
                          name: "recipient";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "fraction";
                          type: "uint256";
                          internalType: "uint256";
                      }];
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "RenegotiationOfferCancelled";
                  inputs: readonly [{
                      name: "lender";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "renegotiationId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "RevokeDelegate";
                  inputs: readonly [{
                      name: "delegate";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "collection";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      indexed: false;
                      internalType: "uint256";
                  }, {
                      name: "_rights";
                      type: "bytes32";
                      indexed: false;
                      internalType: "bytes32";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "TransferOwnerRequested";
                  inputs: readonly [{
                      name: "newOwner";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "WhitelistedCallbackContractAdded";
                  inputs: readonly [{
                      name: "contractAdded";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "event";
                  name: "WhitelistedCallbackContractRemoved";
                  inputs: readonly [{
                      name: "contractRemoved";
                      type: "address";
                      indexed: false;
                      internalType: "address";
                  }];
                  anonymous: false;
              }, {
                  type: "error";
                  name: "AddressZeroError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "CancelledOrExecutedOfferError";
                  inputs: readonly [{
                      name: "_lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "_offerId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "CollectionNotWhitelistedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "CurrencyNotWhitelistedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "ECDSAInvalidSignature";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "ECDSAInvalidSignatureLength";
                  inputs: readonly [{
                      name: "length";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "ECDSAInvalidSignatureS";
                  inputs: readonly [{
                      name: "s";
                      type: "bytes32";
                      internalType: "bytes32";
                  }];
              }, {
                  type: "error";
                  name: "ExpiredOfferError";
                  inputs: readonly [{
                      name: "_expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "InvalidAddressesError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidAmountError";
                  inputs: readonly [{
                      name: "_amount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "_principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "InvalidBorrowerError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCallbackError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCallerError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCollateralError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidCollateralIdError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidDurationError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidInputError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidLoanError";
                  inputs: readonly [{
                      name: "_loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "InvalidLockPeriodError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidMethodError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidRenegotiationOfferError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidSignatureError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "InvalidTrancheError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LenderRefinanceDisabledError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LoanExpiredError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LoanLockedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "LoanNotDueError";
                  inputs: readonly [{
                      name: "_expirationTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "MaxCapacityExceededError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "MulticallFailed";
                  inputs: readonly [{
                      name: "i";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "returndata";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }, {
                  type: "error";
                  name: "NFTNotReturnedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "NotStrictlyImprovedError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "TooEarlyError";
                  inputs: readonly [{
                      name: "_pendingProtocolFeeSetTime";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "TooManyTranchesError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "TooSoonError";
                  inputs: readonly [];
              }, {
                  type: "error";
                  name: "TrancheCannotBeRefinancedError";
                  inputs: readonly [{
                      name: "minTimestamp";
                      type: "uint256";
                      internalType: "uint256";
                  }];
              }, {
                  type: "error";
                  name: "ZeroInterestError";
                  inputs: readonly [];
              }], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "AllOffersCancelled" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "RevokeDelegate" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "MinLockPeriodUpdated" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "MinAprImprovementUpdated" | "MinBidLiquidationUpdated" | "TransferOwnerRequested" | "LoanRefinancedFromNewOffers")[]
                  ? TFunctionName[number]
                  : TFunctionName>