Hierarchy

Constructors

Methods

  • Parameters

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

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

  • Parameters

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

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

  • Parameters

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

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

  • Parameters

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

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

  • Parameters

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

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

  • Parameters

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

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            lender: `0x${string}`;
            minRenegotiationId: 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;
                source: readonly {
                    loanId: bigint;
                    lender: `0x${string}`;
                    principalAmount: bigint;
                    accruedInterest: bigint;
                    startTime: bigint;
                    aprBps: bigint;
                }[];
                id: string;
            };
            loanId: bigint;
            offerId: string;
        }>);
    }>

  • Parameters

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

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

  • Parameters

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

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

  • Parameters

    Returns Promise<number>

  • Parameters

    • __namedParameters: {
          renegotiationId: bigint;
          refinancings: {
              loan: LoanV5;
              newAprBps: bigint;
              sources: {
                  source: {
                      loanId: bigint;
                      lender: `0x${string}`;
                      principalAmount: bigint;
                      accruedInterest: bigint;
                      startTime: bigint;
                      aprBps: bigint;
                  };
                  refinancingPrincipal: bigint;
              }[];
          }[];
      }
      • renegotiationId: bigint
      • refinancings: {
            loan: LoanV5;
            newAprBps: bigint;
            sources: {
                source: {
                    loanId: bigint;
                    lender: `0x${string}`;
                    principalAmount: bigint;
                    accruedInterest: bigint;
                    startTime: bigint;
                    aprBps: bigint;
                };
                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;
                    source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
                };
                fee: bigint;
            }[];
        }>);
    }>

  • Parameters

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

    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;
                source: readonly {
                    loanId: bigint;
                    lender: `0x${string}`;
                    principalAmount: bigint;
                    accruedInterest: bigint;
                    startTime: bigint;
                    aprBps: bigint;
                }[];
                id: string;
            };
            loanId: bigint;
            renegotiationId: string;
        }>);
    }>

  • Parameters

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

    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;
                source: readonly {
                    loanId: bigint;
                    lender: `0x${string}`;
                    principalAmount: bigint;
                    accruedInterest: bigint;
                    startTime: bigint;
                    aprBps: bigint;
                }[];
                id: string;
            };
            loanId: bigint;
            renegotiationId: string;
        }>);
    }>

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

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

  • Parameters

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

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

  • Parameters

    • __namedParameters: {
          loan: LoanV5;
          loanId: bigint;
          to: `0x${string}`;
          rights?: `0x${string}`;
          enable: boolean;
      }
      • loan: LoanV5
      • 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;
                source: readonly {
                    loanId: bigint;
                    lender: `0x${string}`;
                    principalAmount: bigint;
                    accruedInterest: bigint;
                    startTime: bigint;
                    aprBps: bigint;
                }[];
            };
            value: boolean;
        }>);
    }>

  • Parameters

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

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

  • Parameters

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

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

Properties

abi: readonly [{
    stateMutability: "nonpayable";
    type: "constructor";
    inputs: readonly [{
        name: "loanLiquidator";
        internalType: "address";
        type: "address";
    }, {
        name: "protocolFee";
        internalType: "struct IBaseLoan.ProtocolFee";
        type: "tuple";
        components: readonly [{
            name: "recipient";
            internalType: "address";
            type: "address";
        }, {
            name: "fraction";
            internalType: "uint256";
            type: "uint256";
        }];
    }, {
        name: "currencyManager";
        internalType: "address";
        type: "address";
    }, {
        name: "collectionManager";
        internalType: "address";
        type: "address";
    }, {
        name: "maxSources";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "minLockPeriod";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "delegateRegistry";
        internalType: "address";
        type: "address";
    }, {
        name: "flashActionContract";
        internalType: "address";
        type: "address";
    }];
}, {
    type: "error";
    inputs: readonly [];
    name: "AddressZeroError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_lender";
        internalType: "address";
        type: "address";
    }, {
        name: "_offerId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "CancelledOrExecutedOfferError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_lender";
        internalType: "address";
        type: "address";
    }, {
        name: "_renegotiationId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "CancelledRenegotiationOfferError";
}, {
    type: "error";
    inputs: readonly [];
    name: "CannotLiquidateError";
}, {
    type: "error";
    inputs: readonly [];
    name: "CollectionNotWhitelistedError";
}, {
    type: "error";
    inputs: readonly [];
    name: "CurrencyNotWhitelistedError";
}, {
    type: "error";
    inputs: readonly [];
    name: "ECDSAInvalidSignature";
}, {
    type: "error";
    inputs: readonly [{
        name: "length";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "ECDSAInvalidSignatureLength";
}, {
    type: "error";
    inputs: readonly [{
        name: "s";
        internalType: "bytes32";
        type: "bytes32";
    }];
    name: "ECDSAInvalidSignatureS";
}, {
    type: "error";
    inputs: readonly [{
        name: "_expirationTime";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "ExpiredOfferError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_expirationTime";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "ExpiredRenegotiationOfferError";
}, {
    type: "error";
    inputs: readonly [];
    name: "ExtensionNotAvailableError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_amount";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "_principalAmount";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "InvalidAmountError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidBorrowerError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidCallbackError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidCollateralIdError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidDurationError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidLenderError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidLiquidationError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_loanId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "InvalidLoanError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidMethodError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_fraction";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "InvalidProtocolFeeError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidRenegotiationOfferError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidSignatureError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidValueError";
}, {
    type: "error";
    inputs: readonly [];
    name: "LengthMismatchError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_liquidator";
        internalType: "address";
        type: "address";
    }];
    name: "LiquidatorOnlyError";
}, {
    type: "error";
    inputs: readonly [];
    name: "LoanExpiredError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_expirationTime";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "LoanNotDueError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_lender";
        internalType: "address";
        type: "address";
    }, {
        name: "_newMinOfferId";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "_minOfferId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "LowOfferIdError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_lender";
        internalType: "address";
        type: "address";
    }, {
        name: "_newMinRenegotiationOfferId";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "_minOfferId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "LowRenegotiationOfferIdError";
}, {
    type: "error";
    inputs: readonly [];
    name: "MaxCapacityExceededError";
}, {
    type: "error";
    inputs: readonly [{
        name: "minLockPeriod";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "MinLockPeriodTooHighError";
}, {
    type: "error";
    inputs: readonly [{
        name: "i";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "returndata";
        internalType: "bytes";
        type: "bytes";
    }];
    name: "MulticallFailed";
}, {
    type: "error";
    inputs: readonly [];
    name: "NFTNotReturnedError";
}, {
    type: "error";
    inputs: readonly [];
    name: "NotStrictlyImprovedError";
}, {
    type: "error";
    inputs: readonly [];
    name: "OnlyBorrowerCallableError";
}, {
    type: "error";
    inputs: readonly [];
    name: "OnlyLenderCallableError";
}, {
    type: "error";
    inputs: readonly [];
    name: "OnlyLenderOrBorrowerCallableError";
}, {
    type: "error";
    inputs: readonly [];
    name: "PartialOfferCannotChangeDurationError";
}, {
    type: "error";
    inputs: readonly [];
    name: "PartialOfferCannotHaveFeeError";
}, {
    type: "error";
    inputs: readonly [];
    name: "RefinanceFullError";
}, {
    type: "error";
    inputs: readonly [{
        name: "minTimestamp";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "SourceCannotBeRefinancedError";
}, {
    type: "error";
    inputs: readonly [{
        name: "sourcePrincipal";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "loanPrincipal";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "TargetPrincipalTooLowError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_pendingProtocolFeeSetTime";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "TooEarlyError";
}, {
    type: "error";
    inputs: readonly [{
        name: "sources";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "TooManySourcesError";
}, {
    type: "error";
    inputs: readonly [];
    name: "ZeroDurationError";
}, {
    type: "error";
    inputs: readonly [];
    name: "ZeroInterestError";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "lender";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "minOfferId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "AllOffersCancelled";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "lender";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "minRenegotiationId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "AllRenegotiationOffersCancelled";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "borrower";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "offerId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "BorrowerOfferCancelled";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "newdelegateRegistry";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "DelegateRegistryUpdated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "loanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "delegate";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "value";
        internalType: "bool";
        type: "bool";
        indexed: false;
    }];
    name: "Delegated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "newFlashActionContract";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "FlashActionContractUpdated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "loanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "target";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "data";
        internalType: "bytes";
        type: "bytes";
        indexed: false;
    }];
    name: "FlashActionExecuted";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "minimum";
        internalType: "struct IBaseLoan.ImprovementMinimum";
        type: "tuple";
        components: readonly [{
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "interest";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }];
        indexed: false;
    }];
    name: "ImprovementMinimumUpdated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "newDuration";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LiquidationAuctionDurationUpdated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "liquidator";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "LiquidationContractUpdated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "loanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "offerId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "loan";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
        indexed: false;
    }, {
        name: "lender";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "borrower";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "fee";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LoanEmitted";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "oldLoanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "newLoanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "loan";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
        indexed: false;
    }, {
        name: "_extension";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LoanExtended";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "loanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LoanForeclosed";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "loanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LoanLiquidated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "renegotiationId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "oldLoanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "newLoanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "loan";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
        indexed: false;
    }, {
        name: "fee";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LoanRefinanced";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "loanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "totalRepayment";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "fee";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LoanRepaid";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "loanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "liquidator";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "LoanSentToLiquidator";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "newMax";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "MaxSourcesUpdated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "minLockPeriod";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "MinLockPeriodUpdated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "lender";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "offerId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "OfferCancelled";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "user";
        internalType: "address";
        type: "address";
        indexed: true;
    }, {
        name: "newOwner";
        internalType: "address";
        type: "address";
        indexed: true;
    }];
    name: "OwnershipTransferred";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "fee";
        internalType: "struct IBaseLoan.ProtocolFee";
        type: "tuple";
        components: readonly [{
            name: "recipient";
            internalType: "address";
            type: "address";
        }, {
            name: "fraction";
            internalType: "uint256";
            type: "uint256";
        }];
        indexed: false;
    }];
    name: "ProtocolFeePendingUpdate";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "fee";
        internalType: "struct IBaseLoan.ProtocolFee";
        type: "tuple";
        components: readonly [{
            name: "recipient";
            internalType: "address";
            type: "address";
        }, {
            name: "fraction";
            internalType: "uint256";
            type: "uint256";
        }];
        indexed: false;
    }];
    name: "ProtocolFeeUpdated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "lender";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "renegotiationId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "RenegotiationOfferCancelled";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "delegate";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "collection";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "tokenId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "RevokeDelegate";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "contractAdded";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "tax";
        internalType: "struct WithCallbacks.Taxes";
        type: "tuple";
        components: readonly [{
            name: "buyTax";
            internalType: "uint128";
            type: "uint128";
        }, {
            name: "sellTax";
            internalType: "uint128";
            type: "uint128";
        }];
        indexed: false;
    }];
    name: "WhitelistedCallbackContractAdded";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "contractRemoved";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "WhitelistedCallbackContractRemoved";
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "DOMAIN_SEPARATOR";
    outputs: readonly [{
        name: "";
        internalType: "bytes32";
        type: "bytes32";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "FEE_UPDATE_NOTICE";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "INITIAL_DOMAIN_SEPARATOR";
    outputs: readonly [{
        name: "";
        internalType: "bytes32";
        type: "bytes32";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "MAX_PROTOCOL_FEE";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "MIN_AUCTION_DURATION";
    outputs: readonly [{
        name: "";
        internalType: "uint48";
        type: "uint48";
    }];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_contract";
        internalType: "address";
        type: "address";
    }, {
        name: "_tax";
        internalType: "struct WithCallbacks.Taxes";
        type: "tuple";
        components: readonly [{
            name: "buyTax";
            internalType: "uint128";
            type: "uint128";
        }, {
            name: "sellTax";
            internalType: "uint128";
            type: "uint128";
        }];
    }];
    name: "addWhitelistedCallbackContract";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_minOfferId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelAllOffers";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_minRenegotiationId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelAllRenegotiationOffers";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_offerId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelOffer";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_offerIds";
        internalType: "uint256[]";
        type: "uint256[]";
    }];
    name: "cancelOffers";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_renegotiationId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelRenegotiationOffer";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_renegotiationIds";
        internalType: "uint256[]";
        type: "uint256[]";
    }];
    name: "cancelRenegotiationOffers";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_loanId";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "loan";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
    }, {
        name: "_delegate";
        internalType: "address";
        type: "address";
    }, {
        name: "_rights";
        internalType: "bytes32";
        type: "bytes32";
    }, {
        name: "_value";
        internalType: "bool";
        type: "bool";
    }];
    name: "delegate";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_executionData";
        internalType: "struct IMultiSourceLoan.LoanExecutionData";
        type: "tuple";
        components: readonly [{
            name: "executionData";
            internalType: "struct IBaseLoan.ExecutionData";
            type: "tuple";
            components: readonly [{
                name: "offer";
                internalType: "struct IBaseLoan.LoanOffer";
                type: "tuple";
                components: readonly [{
                    name: "offerId";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "lender";
                    internalType: "address";
                    type: "address";
                }, {
                    name: "fee";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "borrower";
                    internalType: "address";
                    type: "address";
                }, {
                    name: "capacity";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "nftCollateralAddress";
                    internalType: "address";
                    type: "address";
                }, {
                    name: "nftCollateralTokenId";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "principalAddress";
                    internalType: "address";
                    type: "address";
                }, {
                    name: "principalAmount";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "aprBps";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "expirationTime";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "duration";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "validators";
                    internalType: "struct IBaseLoan.OfferValidator[]";
                    type: "tuple[]";
                    components: readonly [{
                        name: "validator";
                        internalType: "address";
                        type: "address";
                    }, {
                        name: "arguments";
                        internalType: "bytes";
                        type: "bytes";
                    }];
                }];
            }, {
                name: "tokenId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "amount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "expirationTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "callbackData";
                internalType: "bytes";
                type: "bytes";
            }];
        }, {
            name: "lender";
            internalType: "address";
            type: "address";
        }, {
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "lenderOfferSignature";
            internalType: "bytes";
            type: "bytes";
        }, {
            name: "borrowerOfferSignature";
            internalType: "bytes";
            type: "bytes";
        }];
    }];
    name: "emitLoan";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
    }];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_loanId";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "_loan";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
    }, {
        name: "_target";
        internalType: "address";
        type: "address";
    }, {
        name: "_data";
        internalType: "bytes";
        type: "bytes";
    }];
    name: "executeFlashAction";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_loanId";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "_loan";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
    }, {
        name: "_extension";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "extendLoan";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getCollectionManager";
    outputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getCurrencyManager";
    outputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getDelegateRegistry";
    outputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getFlashActionContract";
    outputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getImprovementMinimum";
    outputs: readonly [{
        name: "";
        internalType: "struct IBaseLoan.ImprovementMinimum";
        type: "tuple";
        components: readonly [{
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "interest";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }];
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getLiquidationAuctionDuration";
    outputs: readonly [{
        name: "";
        internalType: "uint48";
        type: "uint48";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getLiquidator";
    outputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [{
        name: "_loanId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "getLoanHash";
    outputs: readonly [{
        name: "";
        internalType: "bytes32";
        type: "bytes32";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getMaxSources";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getMinLockPeriod";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [{
        name: "_loanPrincipal";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "getMinSourcePrincipal";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getPendingProtocolFee";
    outputs: readonly [{
        name: "";
        internalType: "struct IBaseLoan.ProtocolFee";
        type: "tuple";
        components: readonly [{
            name: "recipient";
            internalType: "address";
            type: "address";
        }, {
            name: "fraction";
            internalType: "uint256";
            type: "uint256";
        }];
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getPendingProtocolFeeSetTime";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getProtocolFee";
    outputs: readonly [{
        name: "";
        internalType: "struct IBaseLoan.ProtocolFee";
        type: "tuple";
        components: readonly [{
            name: "recipient";
            internalType: "address";
            type: "address";
        }, {
            name: "fraction";
            internalType: "uint256";
            type: "uint256";
        }];
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getTotalLoansIssued";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [{
        name: "_lender";
        internalType: "address";
        type: "address";
    }, {
        name: "_offerId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "getUsedCapacity";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }, {
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "isBorrowerOfferCancelled";
    outputs: readonly [{
        name: "";
        internalType: "bool";
        type: "bool";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }, {
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "isOfferCancelled";
    outputs: readonly [{
        name: "";
        internalType: "bool";
        type: "bool";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }, {
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "isRenegotiationOfferCancelled";
    outputs: readonly [{
        name: "";
        internalType: "bool";
        type: "bool";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [{
        name: "_contract";
        internalType: "address";
        type: "address";
    }];
    name: "isWhitelistedCallbackContract";
    outputs: readonly [{
        name: "";
        internalType: "bool";
        type: "bool";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
    name: "lenderMinRenegotiationOfferId";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_loanId";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "_loan";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
    }];
    name: "liquidateLoan";
    outputs: readonly [{
        name: "";
        internalType: "bytes";
        type: "bytes";
    }];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_loanId";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "_loan";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
    }];
    name: "loanLiquidated";
    outputs: readonly [];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
    name: "minOfferId";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
}, {
    stateMutability: "payable";
    type: "function";
    inputs: readonly [{
        name: "data";
        internalType: "bytes[]";
        type: "bytes[]";
    }];
    name: "multicall";
    outputs: readonly [{
        name: "results";
        internalType: "bytes[]";
        type: "bytes[]";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "name";
    outputs: readonly [{
        name: "";
        internalType: "string";
        type: "string";
    }];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }, {
        name: "";
        internalType: "address";
        type: "address";
    }, {
        name: "";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "";
        internalType: "bytes";
        type: "bytes";
    }];
    name: "onERC721Received";
    outputs: readonly [{
        name: "";
        internalType: "bytes4";
        type: "bytes4";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "owner";
    outputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_renegotiationOffer";
        internalType: "struct IMultiSourceLoan.RenegotiationOffer";
        type: "tuple";
        components: readonly [{
            name: "renegotiationId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "loanId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "lender";
            internalType: "address";
            type: "address";
        }, {
            name: "fee";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "targetPrincipal";
            internalType: "uint256[]";
            type: "uint256[]";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "aprBps";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "expirationTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }];
    }, {
        name: "_loan";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
    }, {
        name: "_renegotiationOfferSignature";
        internalType: "bytes";
        type: "bytes";
    }];
    name: "refinanceFull";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
    }];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_renegotiationOffer";
        internalType: "struct IMultiSourceLoan.RenegotiationOffer";
        type: "tuple";
        components: readonly [{
            name: "renegotiationId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "loanId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "lender";
            internalType: "address";
            type: "address";
        }, {
            name: "fee";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "targetPrincipal";
            internalType: "uint256[]";
            type: "uint256[]";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "aprBps";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "expirationTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }];
    }, {
        name: "_loan";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
    }];
    name: "refinancePartial";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "";
        internalType: "struct IMultiSourceLoan.Loan";
        type: "tuple";
        components: readonly [{
            name: "borrower";
            internalType: "address";
            type: "address";
        }, {
            name: "nftCollateralTokenId";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "nftCollateralAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAddress";
            internalType: "address";
            type: "address";
        }, {
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "startTime";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "source";
            internalType: "struct IMultiSourceLoan.Source[]";
            type: "tuple[]";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "lender";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "accruedInterest";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "aprBps";
                internalType: "uint256";
                type: "uint256";
            }];
        }];
    }];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_contract";
        internalType: "address";
        type: "address";
    }];
    name: "removeWhitelistedCallbackContract";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_repaymentData";
        internalType: "struct IMultiSourceLoan.LoanRepaymentData";
        type: "tuple";
        components: readonly [{
            name: "data";
            internalType: "struct IMultiSourceLoan.SignableRepaymentData";
            type: "tuple";
            components: readonly [{
                name: "loanId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "callbackData";
                internalType: "bytes";
                type: "bytes";
            }, {
                name: "shouldDelegate";
                internalType: "bool";
                type: "bool";
            }];
        }, {
            name: "loan";
            internalType: "struct IMultiSourceLoan.Loan";
            type: "tuple";
            components: readonly [{
                name: "borrower";
                internalType: "address";
                type: "address";
            }, {
                name: "nftCollateralTokenId";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "nftCollateralAddress";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAddress";
                internalType: "address";
                type: "address";
            }, {
                name: "principalAmount";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "startTime";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "duration";
                internalType: "uint256";
                type: "uint256";
            }, {
                name: "source";
                internalType: "struct IMultiSourceLoan.Source[]";
                type: "tuple[]";
                components: readonly [{
                    name: "loanId";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "lender";
                    internalType: "address";
                    type: "address";
                }, {
                    name: "principalAmount";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "accruedInterest";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "startTime";
                    internalType: "uint256";
                    type: "uint256";
                }, {
                    name: "aprBps";
                    internalType: "uint256";
                    type: "uint256";
                }];
            }];
        }, {
            name: "borrowerSignature";
            internalType: "bytes";
            type: "bytes";
        }];
    }];
    name: "repayLoan";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_delegate";
        internalType: "address";
        type: "address";
    }, {
        name: "_collection";
        internalType: "address";
        type: "address";
    }, {
        name: "_tokenId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "revokeDelegate";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_newDelegateRegistry";
        internalType: "address";
        type: "address";
    }];
    name: "setDelegateRegistry";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_newFlashActionContract";
        internalType: "address";
        type: "address";
    }];
    name: "setFlashActionContract";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "__maxSources";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "setMaxSources";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "__minLockPeriod";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "setMinLockPeriod";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [];
    name: "setProtocolFee";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "newOwner";
        internalType: "address";
        type: "address";
    }];
    name: "transferOwnership";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_newMinimum";
        internalType: "struct IBaseLoan.ImprovementMinimum";
        type: "tuple";
        components: readonly [{
            name: "principalAmount";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "interest";
            internalType: "uint256";
            type: "uint256";
        }, {
            name: "duration";
            internalType: "uint256";
            type: "uint256";
        }];
    }];
    name: "updateImprovementMinimum";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_newDuration";
        internalType: "uint48";
        type: "uint48";
    }];
    name: "updateLiquidationAuctionDuration";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "loanLiquidator";
        internalType: "contract ILoanLiquidator";
        type: "address";
    }];
    name: "updateLiquidationContract";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_newProtocolFee";
        internalType: "struct IBaseLoan.ProtocolFee";
        type: "tuple";
        components: readonly [{
            name: "recipient";
            internalType: "address";
            type: "address";
        }, {
            name: "fraction";
            internalType: "uint256";
            type: "uint256";
        }];
    }];
    name: "updateProtocolFee";
    outputs: readonly [];
}]
address: `0x${string}`
bcClient: {}

Type declaration

    wallet: {}

    Type declaration

      contract: GetContractReturnType<readonly [{
          stateMutability: "nonpayable";
          type: "constructor";
          inputs: readonly [{
              name: "loanLiquidator";
              internalType: "address";
              type: "address";
          }, {
              name: "protocolFee";
              internalType: "struct IBaseLoan.ProtocolFee";
              type: "tuple";
              components: readonly [{
                  name: "recipient";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              name: "currencyManager";
              internalType: "address";
              type: "address";
          }, {
              name: "collectionManager";
              internalType: "address";
              type: "address";
          }, {
              name: "maxSources";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "minLockPeriod";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "delegateRegistry";
              internalType: "address";
              type: "address";
          }, {
              name: "flashActionContract";
              internalType: "address";
              type: "address";
          }];
      }, {
          type: "error";
          inputs: readonly [];
          name: "AddressZeroError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_offerId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "CancelledOrExecutedOfferError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_renegotiationId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "CancelledRenegotiationOfferError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "CannotLiquidateError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "CollectionNotWhitelistedError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "CurrencyNotWhitelistedError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "ECDSAInvalidSignature";
      }, {
          type: "error";
          inputs: readonly [{
              name: "length";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "ECDSAInvalidSignatureLength";
      }, {
          type: "error";
          inputs: readonly [{
              name: "s";
              internalType: "bytes32";
              type: "bytes32";
          }];
          name: "ECDSAInvalidSignatureS";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_expirationTime";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "ExpiredOfferError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_expirationTime";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "ExpiredRenegotiationOfferError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "ExtensionNotAvailableError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_amount";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_principalAmount";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "InvalidAmountError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidBorrowerError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidCallbackError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidCollateralIdError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidDurationError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidLenderError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidLiquidationError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "InvalidLoanError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidMethodError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_fraction";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "InvalidProtocolFeeError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidRenegotiationOfferError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidSignatureError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidValueError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "LengthMismatchError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_liquidator";
              internalType: "address";
              type: "address";
          }];
          name: "LiquidatorOnlyError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "LoanExpiredError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_expirationTime";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "LoanNotDueError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_newMinOfferId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_minOfferId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "LowOfferIdError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_newMinRenegotiationOfferId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_minOfferId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "LowRenegotiationOfferIdError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "MaxCapacityExceededError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "minLockPeriod";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "MinLockPeriodTooHighError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "i";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "returndata";
              internalType: "bytes";
              type: "bytes";
          }];
          name: "MulticallFailed";
      }, {
          type: "error";
          inputs: readonly [];
          name: "NFTNotReturnedError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "NotStrictlyImprovedError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "OnlyBorrowerCallableError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "OnlyLenderCallableError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "OnlyLenderOrBorrowerCallableError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "PartialOfferCannotChangeDurationError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "PartialOfferCannotHaveFeeError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "RefinanceFullError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "minTimestamp";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "SourceCannotBeRefinancedError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "sourcePrincipal";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "loanPrincipal";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "TargetPrincipalTooLowError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_pendingProtocolFeeSetTime";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "TooEarlyError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "sources";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "TooManySourcesError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "ZeroDurationError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "ZeroInterestError";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "lender";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "minOfferId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "AllOffersCancelled";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "lender";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "minRenegotiationId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "AllRenegotiationOffersCancelled";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "borrower";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "offerId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "BorrowerOfferCancelled";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "newdelegateRegistry";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "DelegateRegistryUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "delegate";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "value";
              internalType: "bool";
              type: "bool";
              indexed: false;
          }];
          name: "Delegated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "newFlashActionContract";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "FlashActionContractUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "target";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "data";
              internalType: "bytes";
              type: "bytes";
              indexed: false;
          }];
          name: "FlashActionExecuted";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "minimum";
              internalType: "struct IBaseLoan.ImprovementMinimum";
              type: "tuple";
              components: readonly [{
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "interest";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }];
              indexed: false;
          }];
          name: "ImprovementMinimumUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "newDuration";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LiquidationAuctionDurationUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "liquidator";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "LiquidationContractUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "offerId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
              indexed: false;
          }, {
              name: "lender";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "borrower";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "fee";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanEmitted";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "oldLoanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "newLoanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
              indexed: false;
          }, {
              name: "_extension";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanExtended";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanForeclosed";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanLiquidated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "renegotiationId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "oldLoanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "newLoanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
              indexed: false;
          }, {
              name: "fee";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanRefinanced";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "totalRepayment";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "fee";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanRepaid";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "liquidator";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "LoanSentToLiquidator";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "newMax";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "MaxSourcesUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "minLockPeriod";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "MinLockPeriodUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "lender";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "offerId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "OfferCancelled";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "user";
              internalType: "address";
              type: "address";
              indexed: true;
          }, {
              name: "newOwner";
              internalType: "address";
              type: "address";
              indexed: true;
          }];
          name: "OwnershipTransferred";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "fee";
              internalType: "struct IBaseLoan.ProtocolFee";
              type: "tuple";
              components: readonly [{
                  name: "recipient";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
              indexed: false;
          }];
          name: "ProtocolFeePendingUpdate";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "fee";
              internalType: "struct IBaseLoan.ProtocolFee";
              type: "tuple";
              components: readonly [{
                  name: "recipient";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
              indexed: false;
          }];
          name: "ProtocolFeeUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "lender";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "renegotiationId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "RenegotiationOfferCancelled";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "delegate";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "collection";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "tokenId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "RevokeDelegate";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "contractAdded";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "tax";
              internalType: "struct WithCallbacks.Taxes";
              type: "tuple";
              components: readonly [{
                  name: "buyTax";
                  internalType: "uint128";
                  type: "uint128";
              }, {
                  name: "sellTax";
                  internalType: "uint128";
                  type: "uint128";
              }];
              indexed: false;
          }];
          name: "WhitelistedCallbackContractAdded";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "contractRemoved";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "WhitelistedCallbackContractRemoved";
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "DOMAIN_SEPARATOR";
          outputs: readonly [{
              name: "";
              internalType: "bytes32";
              type: "bytes32";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "FEE_UPDATE_NOTICE";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "INITIAL_DOMAIN_SEPARATOR";
          outputs: readonly [{
              name: "";
              internalType: "bytes32";
              type: "bytes32";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "MAX_PROTOCOL_FEE";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "MIN_AUCTION_DURATION";
          outputs: readonly [{
              name: "";
              internalType: "uint48";
              type: "uint48";
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_contract";
              internalType: "address";
              type: "address";
          }, {
              name: "_tax";
              internalType: "struct WithCallbacks.Taxes";
              type: "tuple";
              components: readonly [{
                  name: "buyTax";
                  internalType: "uint128";
                  type: "uint128";
              }, {
                  name: "sellTax";
                  internalType: "uint128";
                  type: "uint128";
              }];
          }];
          name: "addWhitelistedCallbackContract";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_minOfferId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "cancelAllOffers";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_minRenegotiationId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "cancelAllRenegotiationOffers";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_offerId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "cancelOffer";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_offerIds";
              internalType: "uint256[]";
              type: "uint256[]";
          }];
          name: "cancelOffers";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_renegotiationId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "cancelRenegotiationOffer";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_renegotiationIds";
              internalType: "uint256[]";
              type: "uint256[]";
          }];
          name: "cancelRenegotiationOffers";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              name: "_delegate";
              internalType: "address";
              type: "address";
          }, {
              name: "_rights";
              internalType: "bytes32";
              type: "bytes32";
          }, {
              name: "_value";
              internalType: "bool";
              type: "bool";
          }];
          name: "delegate";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_executionData";
              internalType: "struct IMultiSourceLoan.LoanExecutionData";
              type: "tuple";
              components: readonly [{
                  name: "executionData";
                  internalType: "struct IBaseLoan.ExecutionData";
                  type: "tuple";
                  components: readonly [{
                      name: "offer";
                      internalType: "struct IBaseLoan.LoanOffer";
                      type: "tuple";
                      components: readonly [{
                          name: "offerId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "fee";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "borrower";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "capacity";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "principalAddress";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "expirationTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "duration";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "validators";
                          internalType: "struct IBaseLoan.OfferValidator[]";
                          type: "tuple[]";
                          components: readonly [{
                              name: "validator";
                              internalType: "address";
                              type: "address";
                          }, {
                              name: "arguments";
                              internalType: "bytes";
                              type: "bytes";
                          }];
                      }];
                  }, {
                      name: "tokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "amount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "expirationTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "callbackData";
                      internalType: "bytes";
                      type: "bytes";
                  }];
              }, {
                  name: "lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "lenderOfferSignature";
                  internalType: "bytes";
                  type: "bytes";
              }, {
                  name: "borrowerOfferSignature";
                  internalType: "bytes";
                  type: "bytes";
              }];
          }];
          name: "emitLoan";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              name: "_target";
              internalType: "address";
              type: "address";
          }, {
              name: "_data";
              internalType: "bytes";
              type: "bytes";
          }];
          name: "executeFlashAction";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              name: "_extension";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "extendLoan";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getCollectionManager";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getCurrencyManager";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getDelegateRegistry";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getFlashActionContract";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getImprovementMinimum";
          outputs: readonly [{
              name: "";
              internalType: "struct IBaseLoan.ImprovementMinimum";
              type: "tuple";
              components: readonly [{
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "interest";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getLiquidationAuctionDuration";
          outputs: readonly [{
              name: "";
              internalType: "uint48";
              type: "uint48";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getLiquidator";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "getLoanHash";
          outputs: readonly [{
              name: "";
              internalType: "bytes32";
              type: "bytes32";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getMaxSources";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getMinLockPeriod";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "_loanPrincipal";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "getMinSourcePrincipal";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getPendingProtocolFee";
          outputs: readonly [{
              name: "";
              internalType: "struct IBaseLoan.ProtocolFee";
              type: "tuple";
              components: readonly [{
                  name: "recipient";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getPendingProtocolFeeSetTime";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getProtocolFee";
          outputs: readonly [{
              name: "";
              internalType: "struct IBaseLoan.ProtocolFee";
              type: "tuple";
              components: readonly [{
                  name: "recipient";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getTotalLoansIssued";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_offerId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "getUsedCapacity";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }, {
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "isBorrowerOfferCancelled";
          outputs: readonly [{
              name: "";
              internalType: "bool";
              type: "bool";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }, {
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "isOfferCancelled";
          outputs: readonly [{
              name: "";
              internalType: "bool";
              type: "bool";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }, {
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "isRenegotiationOfferCancelled";
          outputs: readonly [{
              name: "";
              internalType: "bool";
              type: "bool";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "_contract";
              internalType: "address";
              type: "address";
          }];
          name: "isWhitelistedCallbackContract";
          outputs: readonly [{
              name: "";
              internalType: "bool";
              type: "bool";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
          name: "lenderMinRenegotiationOfferId";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
          name: "liquidateLoan";
          outputs: readonly [{
              name: "";
              internalType: "bytes";
              type: "bytes";
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
          name: "loanLiquidated";
          outputs: readonly [];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
          name: "minOfferId";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "payable";
          type: "function";
          inputs: readonly [{
              name: "data";
              internalType: "bytes[]";
              type: "bytes[]";
          }];
          name: "multicall";
          outputs: readonly [{
              name: "results";
              internalType: "bytes[]";
              type: "bytes[]";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "name";
          outputs: readonly [{
              name: "";
              internalType: "string";
              type: "string";
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }, {
              name: "";
              internalType: "address";
              type: "address";
          }, {
              name: "";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "";
              internalType: "bytes";
              type: "bytes";
          }];
          name: "onERC721Received";
          outputs: readonly [{
              name: "";
              internalType: "bytes4";
              type: "bytes4";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "owner";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_renegotiationOffer";
              internalType: "struct IMultiSourceLoan.RenegotiationOffer";
              type: "tuple";
              components: readonly [{
                  name: "renegotiationId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fee";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "targetPrincipal";
                  internalType: "uint256[]";
                  type: "uint256[]";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "aprBps";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "expirationTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              name: "_loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              name: "_renegotiationOfferSignature";
              internalType: "bytes";
              type: "bytes";
          }];
          name: "refinanceFull";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_renegotiationOffer";
              internalType: "struct IMultiSourceLoan.RenegotiationOffer";
              type: "tuple";
              components: readonly [{
                  name: "renegotiationId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fee";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "targetPrincipal";
                  internalType: "uint256[]";
                  type: "uint256[]";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "aprBps";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "expirationTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              name: "_loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
          name: "refinancePartial";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_contract";
              internalType: "address";
              type: "address";
          }];
          name: "removeWhitelistedCallbackContract";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_repaymentData";
              internalType: "struct IMultiSourceLoan.LoanRepaymentData";
              type: "tuple";
              components: readonly [{
                  name: "data";
                  internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                  type: "tuple";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "callbackData";
                      internalType: "bytes";
                      type: "bytes";
                  }, {
                      name: "shouldDelegate";
                      internalType: "bool";
                      type: "bool";
                  }];
              }, {
                  name: "loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }, {
                  name: "borrowerSignature";
                  internalType: "bytes";
                  type: "bytes";
              }];
          }];
          name: "repayLoan";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_delegate";
              internalType: "address";
              type: "address";
          }, {
              name: "_collection";
              internalType: "address";
              type: "address";
          }, {
              name: "_tokenId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "revokeDelegate";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newDelegateRegistry";
              internalType: "address";
              type: "address";
          }];
          name: "setDelegateRegistry";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newFlashActionContract";
              internalType: "address";
              type: "address";
          }];
          name: "setFlashActionContract";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "__maxSources";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "setMaxSources";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "__minLockPeriod";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "setMinLockPeriod";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [];
          name: "setProtocolFee";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "newOwner";
              internalType: "address";
              type: "address";
          }];
          name: "transferOwnership";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newMinimum";
              internalType: "struct IBaseLoan.ImprovementMinimum";
              type: "tuple";
              components: readonly [{
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "interest";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }];
          name: "updateImprovementMinimum";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newDuration";
              internalType: "uint48";
              type: "uint48";
          }];
          name: "updateLiquidationAuctionDuration";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "loanLiquidator";
              internalType: "contract ILoanLiquidator";
              type: "address";
          }];
          name: "updateLiquidationContract";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newProtocolFee";
              internalType: "struct IBaseLoan.ProtocolFee";
              type: "tuple";
              components: readonly [{
                  name: "recipient";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }];
          name: "updateProtocolFee";
          outputs: readonly [];
      }], {} | {}>
      safeContractWrite: {
          transferOwnership: ((args, options?) => Promise<`0x${string}`>);
          liquidateLoan: ((args, options?) => Promise<`0x${string}`>);
          onERC721Received: ((args, options?) => Promise<`0x${string}`>);
          addWhitelistedCallbackContract: ((args, options?) => Promise<`0x${string}`>);
          cancelAllOffers: ((args, options?) => Promise<`0x${string}`>);
          cancelAllRenegotiationOffers: ((args, options?) => Promise<`0x${string}`>);
          cancelOffer: ((args, options?) => Promise<`0x${string}`>);
          cancelOffers: ((args, options?) => Promise<`0x${string}`>);
          cancelRenegotiationOffer: ((args, options?) => Promise<`0x${string}`>);
          cancelRenegotiationOffers: ((args, options?) => Promise<`0x${string}`>);
          loanLiquidated: ((args, options?) => Promise<`0x${string}`>);
          removeWhitelistedCallbackContract: ((args, options?) => Promise<`0x${string}`>);
          setProtocolFee: ((args, options?) => Promise<`0x${string}`>);
          updateImprovementMinimum: ((args, options?) => Promise<`0x${string}`>);
          updateLiquidationAuctionDuration: ((args, options?) => Promise<`0x${string}`>);
          updateLiquidationContract: ((args, options?) => Promise<`0x${string}`>);
          updateProtocolFee: ((args, options?) => Promise<`0x${string}`>);
          emitLoan: ((args, options?) => Promise<`0x${string}`>);
          refinanceFull: ((args, options?) => Promise<`0x${string}`>);
          refinancePartial: ((args, options?) => Promise<`0x${string}`>);
          repayLoan: ((args, options?) => Promise<`0x${string}`>);
          setMaxSources: ((args, options?) => Promise<`0x${string}`>);
          multicall: ((args, options?) => Promise<`0x${string}`>);
          delegate: ((args, options?) => Promise<`0x${string}`>);
          revokeDelegate: ((args, options?) => Promise<`0x${string}`>);
          executeFlashAction: ((args, options?) => Promise<`0x${string}`>);
          extendLoan: ((args, options?) => Promise<`0x${string}`>);
          setDelegateRegistry: ((args, options?) => Promise<`0x${string}`>);
          setFlashActionContract: ((args, options?) => Promise<`0x${string}`>);
          setMinLockPeriod: ((args, options?) => Promise<`0x${string}`>);
      }

      Type declaration

      • transferOwnership: ((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}`>

      • 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;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }] | readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }] & readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

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

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

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

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

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

            • args: readonly [`0x${string}`, {
                  buyTax: bigint;
                  sellTax: bigint;
              }] | readonly [`0x${string}`, {
                  buyTax: bigint;
                  sellTax: bigint;
              }] & readonly [`0x${string}`, {
                  buyTax: bigint;
                  sellTax: bigint;
              }]
            • 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}`>

      • cancelAllRenegotiationOffers: ((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}`>

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

            • args: readonly [readonly bigint[]] | readonly [readonly bigint[]] & readonly [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}`>

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

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

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

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

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

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

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

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

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

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

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

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

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

            • args: readonly [{
                  principalAmount: bigint;
                  interest: bigint;
                  duration: bigint;
              }] | readonly [{
                  principalAmount: bigint;
                  interest: bigint;
                  duration: bigint;
              }] & readonly [{
                  principalAmount: bigint;
                  interest: bigint;
                  duration: bigint;
              }]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            • args: readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  targetPrincipal: 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;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }, `0x${string}`] | readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  targetPrincipal: 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;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }, `0x${string}`] & readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  targetPrincipal: 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;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }, `0x${string}`]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

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

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

            • args: readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  targetPrincipal: 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;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }] | readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  targetPrincipal: 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;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }] & readonly [{
                  renegotiationId: bigint;
                  loanId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  targetPrincipal: 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;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

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

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

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

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

      • setMaxSources: ((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}`>

      • 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;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }, `0x${string}`, `0x${string}`, Widen<boolean>] | readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: 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;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }, `0x${string}`, `0x${string}`, Widen<boolean>]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

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

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

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

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

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

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

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

      • extendLoan: ((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;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }, bigint] | readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }, bigint] & readonly [bigint, {
                  borrower: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  nftCollateralAddress: `0x${string}`;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  startTime: bigint;
                  duration: bigint;
                  source: readonly ({ loanId: bigint; lender: `0x${string}`; principalAmount: bigint; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
              }, bigint]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

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

      • setDelegateRegistry: ((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}`>

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

      parseEventLogs: (<TFunctionName>(eventName, logs) => ParseEventLogsReturnType<readonly [{
          stateMutability: "nonpayable";
          type: "constructor";
          inputs: readonly [{
              name: "loanLiquidator";
              internalType: "address";
              type: "address";
          }, {
              name: "protocolFee";
              internalType: "struct IBaseLoan.ProtocolFee";
              type: "tuple";
              components: readonly [{
                  name: "recipient";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              name: "currencyManager";
              internalType: "address";
              type: "address";
          }, {
              name: "collectionManager";
              internalType: "address";
              type: "address";
          }, {
              name: "maxSources";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "minLockPeriod";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "delegateRegistry";
              internalType: "address";
              type: "address";
          }, {
              name: "flashActionContract";
              internalType: "address";
              type: "address";
          }];
      }, {
          type: "error";
          inputs: readonly [];
          name: "AddressZeroError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_offerId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "CancelledOrExecutedOfferError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_renegotiationId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "CancelledRenegotiationOfferError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "CannotLiquidateError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "CollectionNotWhitelistedError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "CurrencyNotWhitelistedError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "ECDSAInvalidSignature";
      }, {
          type: "error";
          inputs: readonly [{
              name: "length";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "ECDSAInvalidSignatureLength";
      }, {
          type: "error";
          inputs: readonly [{
              name: "s";
              internalType: "bytes32";
              type: "bytes32";
          }];
          name: "ECDSAInvalidSignatureS";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_expirationTime";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "ExpiredOfferError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_expirationTime";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "ExpiredRenegotiationOfferError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "ExtensionNotAvailableError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_amount";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_principalAmount";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "InvalidAmountError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidBorrowerError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidCallbackError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidCollateralIdError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidDurationError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidLenderError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidLiquidationError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "InvalidLoanError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidMethodError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_fraction";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "InvalidProtocolFeeError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidRenegotiationOfferError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidSignatureError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidValueError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "LengthMismatchError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_liquidator";
              internalType: "address";
              type: "address";
          }];
          name: "LiquidatorOnlyError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "LoanExpiredError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_expirationTime";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "LoanNotDueError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_newMinOfferId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_minOfferId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "LowOfferIdError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_newMinRenegotiationOfferId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_minOfferId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "LowRenegotiationOfferIdError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "MaxCapacityExceededError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "minLockPeriod";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "MinLockPeriodTooHighError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "i";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "returndata";
              internalType: "bytes";
              type: "bytes";
          }];
          name: "MulticallFailed";
      }, {
          type: "error";
          inputs: readonly [];
          name: "NFTNotReturnedError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "NotStrictlyImprovedError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "OnlyBorrowerCallableError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "OnlyLenderCallableError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "OnlyLenderOrBorrowerCallableError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "PartialOfferCannotChangeDurationError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "PartialOfferCannotHaveFeeError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "RefinanceFullError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "minTimestamp";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "SourceCannotBeRefinancedError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "sourcePrincipal";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "loanPrincipal";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "TargetPrincipalTooLowError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_pendingProtocolFeeSetTime";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "TooEarlyError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "sources";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "TooManySourcesError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "ZeroDurationError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "ZeroInterestError";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "lender";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "minOfferId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "AllOffersCancelled";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "lender";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "minRenegotiationId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "AllRenegotiationOffersCancelled";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "borrower";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "offerId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "BorrowerOfferCancelled";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "newdelegateRegistry";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "DelegateRegistryUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "delegate";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "value";
              internalType: "bool";
              type: "bool";
              indexed: false;
          }];
          name: "Delegated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "newFlashActionContract";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "FlashActionContractUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "target";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "data";
              internalType: "bytes";
              type: "bytes";
              indexed: false;
          }];
          name: "FlashActionExecuted";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "minimum";
              internalType: "struct IBaseLoan.ImprovementMinimum";
              type: "tuple";
              components: readonly [{
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "interest";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }];
              indexed: false;
          }];
          name: "ImprovementMinimumUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "newDuration";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LiquidationAuctionDurationUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "liquidator";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "LiquidationContractUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "offerId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
              indexed: false;
          }, {
              name: "lender";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "borrower";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "fee";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanEmitted";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "oldLoanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "newLoanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
              indexed: false;
          }, {
              name: "_extension";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanExtended";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanForeclosed";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanLiquidated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "renegotiationId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "oldLoanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "newLoanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
              indexed: false;
          }, {
              name: "fee";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanRefinanced";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "totalRepayment";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "fee";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanRepaid";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "liquidator";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "LoanSentToLiquidator";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "newMax";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "MaxSourcesUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "minLockPeriod";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "MinLockPeriodUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "lender";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "offerId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "OfferCancelled";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "user";
              internalType: "address";
              type: "address";
              indexed: true;
          }, {
              name: "newOwner";
              internalType: "address";
              type: "address";
              indexed: true;
          }];
          name: "OwnershipTransferred";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "fee";
              internalType: "struct IBaseLoan.ProtocolFee";
              type: "tuple";
              components: readonly [{
                  name: "recipient";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
              indexed: false;
          }];
          name: "ProtocolFeePendingUpdate";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "fee";
              internalType: "struct IBaseLoan.ProtocolFee";
              type: "tuple";
              components: readonly [{
                  name: "recipient";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
              indexed: false;
          }];
          name: "ProtocolFeeUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "lender";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "renegotiationId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "RenegotiationOfferCancelled";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "delegate";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "collection";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "tokenId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "RevokeDelegate";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "contractAdded";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "tax";
              internalType: "struct WithCallbacks.Taxes";
              type: "tuple";
              components: readonly [{
                  name: "buyTax";
                  internalType: "uint128";
                  type: "uint128";
              }, {
                  name: "sellTax";
                  internalType: "uint128";
                  type: "uint128";
              }];
              indexed: false;
          }];
          name: "WhitelistedCallbackContractAdded";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "contractRemoved";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "WhitelistedCallbackContractRemoved";
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "DOMAIN_SEPARATOR";
          outputs: readonly [{
              name: "";
              internalType: "bytes32";
              type: "bytes32";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "FEE_UPDATE_NOTICE";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "INITIAL_DOMAIN_SEPARATOR";
          outputs: readonly [{
              name: "";
              internalType: "bytes32";
              type: "bytes32";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "MAX_PROTOCOL_FEE";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "MIN_AUCTION_DURATION";
          outputs: readonly [{
              name: "";
              internalType: "uint48";
              type: "uint48";
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_contract";
              internalType: "address";
              type: "address";
          }, {
              name: "_tax";
              internalType: "struct WithCallbacks.Taxes";
              type: "tuple";
              components: readonly [{
                  name: "buyTax";
                  internalType: "uint128";
                  type: "uint128";
              }, {
                  name: "sellTax";
                  internalType: "uint128";
                  type: "uint128";
              }];
          }];
          name: "addWhitelistedCallbackContract";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_minOfferId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "cancelAllOffers";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_minRenegotiationId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "cancelAllRenegotiationOffers";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_offerId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "cancelOffer";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_offerIds";
              internalType: "uint256[]";
              type: "uint256[]";
          }];
          name: "cancelOffers";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_renegotiationId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "cancelRenegotiationOffer";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_renegotiationIds";
              internalType: "uint256[]";
              type: "uint256[]";
          }];
          name: "cancelRenegotiationOffers";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              name: "_delegate";
              internalType: "address";
              type: "address";
          }, {
              name: "_rights";
              internalType: "bytes32";
              type: "bytes32";
          }, {
              name: "_value";
              internalType: "bool";
              type: "bool";
          }];
          name: "delegate";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_executionData";
              internalType: "struct IMultiSourceLoan.LoanExecutionData";
              type: "tuple";
              components: readonly [{
                  name: "executionData";
                  internalType: "struct IBaseLoan.ExecutionData";
                  type: "tuple";
                  components: readonly [{
                      name: "offer";
                      internalType: "struct IBaseLoan.LoanOffer";
                      type: "tuple";
                      components: readonly [{
                          name: "offerId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "fee";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "borrower";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "capacity";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "principalAddress";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "expirationTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "duration";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "validators";
                          internalType: "struct IBaseLoan.OfferValidator[]";
                          type: "tuple[]";
                          components: readonly [{
                              name: "validator";
                              internalType: "address";
                              type: "address";
                          }, {
                              name: "arguments";
                              internalType: "bytes";
                              type: "bytes";
                          }];
                      }];
                  }, {
                      name: "tokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "amount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "expirationTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "callbackData";
                      internalType: "bytes";
                      type: "bytes";
                  }];
              }, {
                  name: "lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "lenderOfferSignature";
                  internalType: "bytes";
                  type: "bytes";
              }, {
                  name: "borrowerOfferSignature";
                  internalType: "bytes";
                  type: "bytes";
              }];
          }];
          name: "emitLoan";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              name: "_target";
              internalType: "address";
              type: "address";
          }, {
              name: "_data";
              internalType: "bytes";
              type: "bytes";
          }];
          name: "executeFlashAction";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              name: "_extension";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "extendLoan";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getCollectionManager";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getCurrencyManager";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getDelegateRegistry";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getFlashActionContract";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getImprovementMinimum";
          outputs: readonly [{
              name: "";
              internalType: "struct IBaseLoan.ImprovementMinimum";
              type: "tuple";
              components: readonly [{
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "interest";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getLiquidationAuctionDuration";
          outputs: readonly [{
              name: "";
              internalType: "uint48";
              type: "uint48";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getLiquidator";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "getLoanHash";
          outputs: readonly [{
              name: "";
              internalType: "bytes32";
              type: "bytes32";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getMaxSources";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getMinLockPeriod";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "_loanPrincipal";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "getMinSourcePrincipal";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getPendingProtocolFee";
          outputs: readonly [{
              name: "";
              internalType: "struct IBaseLoan.ProtocolFee";
              type: "tuple";
              components: readonly [{
                  name: "recipient";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getPendingProtocolFeeSetTime";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getProtocolFee";
          outputs: readonly [{
              name: "";
              internalType: "struct IBaseLoan.ProtocolFee";
              type: "tuple";
              components: readonly [{
                  name: "recipient";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getTotalLoansIssued";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_offerId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "getUsedCapacity";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }, {
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "isBorrowerOfferCancelled";
          outputs: readonly [{
              name: "";
              internalType: "bool";
              type: "bool";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }, {
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "isOfferCancelled";
          outputs: readonly [{
              name: "";
              internalType: "bool";
              type: "bool";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }, {
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "isRenegotiationOfferCancelled";
          outputs: readonly [{
              name: "";
              internalType: "bool";
              type: "bool";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "_contract";
              internalType: "address";
              type: "address";
          }];
          name: "isWhitelistedCallbackContract";
          outputs: readonly [{
              name: "";
              internalType: "bool";
              type: "bool";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
          name: "lenderMinRenegotiationOfferId";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
          name: "liquidateLoan";
          outputs: readonly [{
              name: "";
              internalType: "bytes";
              type: "bytes";
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
          name: "loanLiquidated";
          outputs: readonly [];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
          name: "minOfferId";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          stateMutability: "payable";
          type: "function";
          inputs: readonly [{
              name: "data";
              internalType: "bytes[]";
              type: "bytes[]";
          }];
          name: "multicall";
          outputs: readonly [{
              name: "results";
              internalType: "bytes[]";
              type: "bytes[]";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "name";
          outputs: readonly [{
              name: "";
              internalType: "string";
              type: "string";
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }, {
              name: "";
              internalType: "address";
              type: "address";
          }, {
              name: "";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "";
              internalType: "bytes";
              type: "bytes";
          }];
          name: "onERC721Received";
          outputs: readonly [{
              name: "";
              internalType: "bytes4";
              type: "bytes4";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "owner";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_renegotiationOffer";
              internalType: "struct IMultiSourceLoan.RenegotiationOffer";
              type: "tuple";
              components: readonly [{
                  name: "renegotiationId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fee";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "targetPrincipal";
                  internalType: "uint256[]";
                  type: "uint256[]";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "aprBps";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "expirationTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              name: "_loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              name: "_renegotiationOfferSignature";
              internalType: "bytes";
              type: "bytes";
          }];
          name: "refinanceFull";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_renegotiationOffer";
              internalType: "struct IMultiSourceLoan.RenegotiationOffer";
              type: "tuple";
              components: readonly [{
                  name: "renegotiationId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fee";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "targetPrincipal";
                  internalType: "uint256[]";
                  type: "uint256[]";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "aprBps";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "expirationTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              name: "_loan";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
          name: "refinancePartial";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "";
              internalType: "struct IMultiSourceLoan.Loan";
              type: "tuple";
              components: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "nftCollateralTokenId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "nftCollateralAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "startTime";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "source";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  type: "tuple[]";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "accruedInterest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_contract";
              internalType: "address";
              type: "address";
          }];
          name: "removeWhitelistedCallbackContract";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_repaymentData";
              internalType: "struct IMultiSourceLoan.LoanRepaymentData";
              type: "tuple";
              components: readonly [{
                  name: "data";
                  internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                  type: "tuple";
                  components: readonly [{
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "callbackData";
                      internalType: "bytes";
                      type: "bytes";
                  }, {
                      name: "shouldDelegate";
                      internalType: "bool";
                      type: "bool";
                  }];
              }, {
                  name: "loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }, {
                  name: "borrowerSignature";
                  internalType: "bytes";
                  type: "bytes";
              }];
          }];
          name: "repayLoan";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_delegate";
              internalType: "address";
              type: "address";
          }, {
              name: "_collection";
              internalType: "address";
              type: "address";
          }, {
              name: "_tokenId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "revokeDelegate";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newDelegateRegistry";
              internalType: "address";
              type: "address";
          }];
          name: "setDelegateRegistry";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newFlashActionContract";
              internalType: "address";
              type: "address";
          }];
          name: "setFlashActionContract";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "__maxSources";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "setMaxSources";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "__minLockPeriod";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "setMinLockPeriod";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [];
          name: "setProtocolFee";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "newOwner";
              internalType: "address";
              type: "address";
          }];
          name: "transferOwnership";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newMinimum";
              internalType: "struct IBaseLoan.ImprovementMinimum";
              type: "tuple";
              components: readonly [{
                  name: "principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "interest";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "duration";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }];
          name: "updateImprovementMinimum";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newDuration";
              internalType: "uint48";
              type: "uint48";
          }];
          name: "updateLiquidationAuctionDuration";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "loanLiquidator";
              internalType: "contract ILoanLiquidator";
              type: "address";
          }];
          name: "updateLiquidationContract";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newProtocolFee";
              internalType: "struct IBaseLoan.ProtocolFee";
              type: "tuple";
              components: readonly [{
                  name: "recipient";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }];
          name: "updateProtocolFee";
          outputs: readonly [];
      }], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "AllOffersCancelled" | "AllRenegotiationOffersCancelled" | "ImprovementMinimumUpdated" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "MaxSourcesUpdated" | "BorrowerOfferCancelled" | "RevokeDelegate" | "DelegateRegistryUpdated" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "LoanExtended" | "MinLockPeriodUpdated")[]
          ? TFunctionName[number]
          : TFunctionName>)

      Type declaration

        • <TFunctionName>(eventName, logs): ParseEventLogsReturnType<readonly [{
              stateMutability: "nonpayable";
              type: "constructor";
              inputs: readonly [{
                  name: "loanLiquidator";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "protocolFee";
                  internalType: "struct IBaseLoan.ProtocolFee";
                  type: "tuple";
                  components: readonly [{
                      name: "recipient";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fraction";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }, {
                  name: "currencyManager";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "collectionManager";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "maxSources";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "minLockPeriod";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "delegateRegistry";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "flashActionContract";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              type: "error";
              inputs: readonly [];
              name: "AddressZeroError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_offerId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "CancelledOrExecutedOfferError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_renegotiationId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "CancelledRenegotiationOfferError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "CannotLiquidateError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "CollectionNotWhitelistedError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "CurrencyNotWhitelistedError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "ECDSAInvalidSignature";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "length";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "ECDSAInvalidSignatureLength";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "s";
                  internalType: "bytes32";
                  type: "bytes32";
              }];
              name: "ECDSAInvalidSignatureS";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_expirationTime";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "ExpiredOfferError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_expirationTime";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "ExpiredRenegotiationOfferError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "ExtensionNotAvailableError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_amount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "InvalidAmountError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidBorrowerError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidCallbackError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidCollateralIdError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidDurationError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidLenderError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidLiquidationError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "InvalidLoanError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidMethodError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "InvalidProtocolFeeError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidRenegotiationOfferError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidSignatureError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidValueError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "LengthMismatchError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_liquidator";
                  internalType: "address";
                  type: "address";
              }];
              name: "LiquidatorOnlyError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "LoanExpiredError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_expirationTime";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "LoanNotDueError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_newMinOfferId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_minOfferId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "LowOfferIdError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_newMinRenegotiationOfferId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_minOfferId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "LowRenegotiationOfferIdError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "MaxCapacityExceededError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "minLockPeriod";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "MinLockPeriodTooHighError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "i";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "returndata";
                  internalType: "bytes";
                  type: "bytes";
              }];
              name: "MulticallFailed";
          }, {
              type: "error";
              inputs: readonly [];
              name: "NFTNotReturnedError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "NotStrictlyImprovedError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "OnlyBorrowerCallableError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "OnlyLenderCallableError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "OnlyLenderOrBorrowerCallableError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "PartialOfferCannotChangeDurationError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "PartialOfferCannotHaveFeeError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "RefinanceFullError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "minTimestamp";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "SourceCannotBeRefinancedError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "sourcePrincipal";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "loanPrincipal";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "TargetPrincipalTooLowError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_pendingProtocolFeeSetTime";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "TooEarlyError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "sources";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "TooManySourcesError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "ZeroDurationError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "ZeroInterestError";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "lender";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "minOfferId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "AllOffersCancelled";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "lender";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "minRenegotiationId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "AllRenegotiationOffersCancelled";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "offerId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "BorrowerOfferCancelled";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "newdelegateRegistry";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "DelegateRegistryUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "delegate";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "value";
                  internalType: "bool";
                  type: "bool";
                  indexed: false;
              }];
              name: "Delegated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "newFlashActionContract";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "FlashActionContractUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "target";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "data";
                  internalType: "bytes";
                  type: "bytes";
                  indexed: false;
              }];
              name: "FlashActionExecuted";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "minimum";
                  internalType: "struct IBaseLoan.ImprovementMinimum";
                  type: "tuple";
                  components: readonly [{
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "interest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }];
                  indexed: false;
              }];
              name: "ImprovementMinimumUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "newDuration";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LiquidationAuctionDurationUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "liquidator";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "LiquidationContractUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "offerId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
                  indexed: false;
              }, {
                  name: "lender";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "borrower";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "fee";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LoanEmitted";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "oldLoanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "newLoanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
                  indexed: false;
              }, {
                  name: "_extension";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LoanExtended";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LoanForeclosed";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LoanLiquidated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "renegotiationId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "oldLoanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "newLoanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
                  indexed: false;
              }, {
                  name: "fee";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LoanRefinanced";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "totalRepayment";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "fee";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LoanRepaid";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "liquidator";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "LoanSentToLiquidator";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "newMax";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "MaxSourcesUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "minLockPeriod";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "MinLockPeriodUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "lender";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "offerId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "OfferCancelled";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "user";
                  internalType: "address";
                  type: "address";
                  indexed: true;
              }, {
                  name: "newOwner";
                  internalType: "address";
                  type: "address";
                  indexed: true;
              }];
              name: "OwnershipTransferred";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "fee";
                  internalType: "struct IBaseLoan.ProtocolFee";
                  type: "tuple";
                  components: readonly [{
                      name: "recipient";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fraction";
                      internalType: "uint256";
                      type: "uint256";
                  }];
                  indexed: false;
              }];
              name: "ProtocolFeePendingUpdate";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "fee";
                  internalType: "struct IBaseLoan.ProtocolFee";
                  type: "tuple";
                  components: readonly [{
                      name: "recipient";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fraction";
                      internalType: "uint256";
                      type: "uint256";
                  }];
                  indexed: false;
              }];
              name: "ProtocolFeeUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "lender";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "renegotiationId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "RenegotiationOfferCancelled";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "delegate";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "collection";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "tokenId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "RevokeDelegate";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "contractAdded";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "tax";
                  internalType: "struct WithCallbacks.Taxes";
                  type: "tuple";
                  components: readonly [{
                      name: "buyTax";
                      internalType: "uint128";
                      type: "uint128";
                  }, {
                      name: "sellTax";
                      internalType: "uint128";
                      type: "uint128";
                  }];
                  indexed: false;
              }];
              name: "WhitelistedCallbackContractAdded";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "contractRemoved";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "WhitelistedCallbackContractRemoved";
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "DOMAIN_SEPARATOR";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes32";
                  type: "bytes32";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "FEE_UPDATE_NOTICE";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "INITIAL_DOMAIN_SEPARATOR";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes32";
                  type: "bytes32";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "MAX_PROTOCOL_FEE";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "MIN_AUCTION_DURATION";
              outputs: readonly [{
                  name: "";
                  internalType: "uint48";
                  type: "uint48";
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_contract";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_tax";
                  internalType: "struct WithCallbacks.Taxes";
                  type: "tuple";
                  components: readonly [{
                      name: "buyTax";
                      internalType: "uint128";
                      type: "uint128";
                  }, {
                      name: "sellTax";
                      internalType: "uint128";
                      type: "uint128";
                  }];
              }];
              name: "addWhitelistedCallbackContract";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_minOfferId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "cancelAllOffers";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_minRenegotiationId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "cancelAllRenegotiationOffers";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_offerId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "cancelOffer";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_offerIds";
                  internalType: "uint256[]";
                  type: "uint256[]";
              }];
              name: "cancelOffers";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_renegotiationId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "cancelRenegotiationOffer";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_renegotiationIds";
                  internalType: "uint256[]";
                  type: "uint256[]";
              }];
              name: "cancelRenegotiationOffers";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }, {
                  name: "_delegate";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_rights";
                  internalType: "bytes32";
                  type: "bytes32";
              }, {
                  name: "_value";
                  internalType: "bool";
                  type: "bool";
              }];
              name: "delegate";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_executionData";
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  type: "tuple";
                  components: readonly [{
                      name: "executionData";
                      internalType: "struct IBaseLoan.ExecutionData";
                      type: "tuple";
                      components: readonly [{
                          name: "offer";
                          internalType: "struct IBaseLoan.LoanOffer";
                          type: "tuple";
                          components: readonly [{
                              name: "offerId";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "lender";
                              internalType: "address";
                              type: "address";
                          }, {
                              name: "fee";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "borrower";
                              internalType: "address";
                              type: "address";
                          }, {
                              name: "capacity";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              internalType: "address";
                              type: "address";
                          }, {
                              name: "nftCollateralTokenId";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "principalAddress";
                              internalType: "address";
                              type: "address";
                          }, {
                              name: "principalAmount";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "aprBps";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "expirationTime";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "duration";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "validators";
                              internalType: "struct IBaseLoan.OfferValidator[]";
                              type: "tuple[]";
                              components: readonly [{
                                  name: "validator";
                                  internalType: "address";
                                  type: "address";
                              }, {
                                  name: "arguments";
                                  internalType: "bytes";
                                  type: "bytes";
                              }];
                          }];
                      }, {
                          name: "tokenId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "amount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "expirationTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "callbackData";
                          internalType: "bytes";
                          type: "bytes";
                      }];
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "lenderOfferSignature";
                      internalType: "bytes";
                      type: "bytes";
                  }, {
                      name: "borrowerOfferSignature";
                      internalType: "bytes";
                      type: "bytes";
                  }];
              }];
              name: "emitLoan";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }, {
                  name: "_target";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_data";
                  internalType: "bytes";
                  type: "bytes";
              }];
              name: "executeFlashAction";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }, {
                  name: "_extension";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "extendLoan";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getCollectionManager";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getCurrencyManager";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getDelegateRegistry";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getFlashActionContract";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getImprovementMinimum";
              outputs: readonly [{
                  name: "";
                  internalType: "struct IBaseLoan.ImprovementMinimum";
                  type: "tuple";
                  components: readonly [{
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "interest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getLiquidationAuctionDuration";
              outputs: readonly [{
                  name: "";
                  internalType: "uint48";
                  type: "uint48";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getLiquidator";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "getLoanHash";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes32";
                  type: "bytes32";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getMaxSources";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getMinLockPeriod";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "_loanPrincipal";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "getMinSourcePrincipal";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getPendingProtocolFee";
              outputs: readonly [{
                  name: "";
                  internalType: "struct IBaseLoan.ProtocolFee";
                  type: "tuple";
                  components: readonly [{
                      name: "recipient";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fraction";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getPendingProtocolFeeSetTime";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getProtocolFee";
              outputs: readonly [{
                  name: "";
                  internalType: "struct IBaseLoan.ProtocolFee";
                  type: "tuple";
                  components: readonly [{
                      name: "recipient";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fraction";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getTotalLoansIssued";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "_lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_offerId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "getUsedCapacity";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "isBorrowerOfferCancelled";
              outputs: readonly [{
                  name: "";
                  internalType: "bool";
                  type: "bool";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "isOfferCancelled";
              outputs: readonly [{
                  name: "";
                  internalType: "bool";
                  type: "bool";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "isRenegotiationOfferCancelled";
              outputs: readonly [{
                  name: "";
                  internalType: "bool";
                  type: "bool";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "_contract";
                  internalType: "address";
                  type: "address";
              }];
              name: "isWhitelistedCallbackContract";
              outputs: readonly [{
                  name: "";
                  internalType: "bool";
                  type: "bool";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
              name: "lenderMinRenegotiationOfferId";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
              name: "liquidateLoan";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes";
                  type: "bytes";
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
              name: "loanLiquidated";
              outputs: readonly [];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
              name: "minOfferId";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "payable";
              type: "function";
              inputs: readonly [{
                  name: "data";
                  internalType: "bytes[]";
                  type: "bytes[]";
              }];
              name: "multicall";
              outputs: readonly [{
                  name: "results";
                  internalType: "bytes[]";
                  type: "bytes[]";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "name";
              outputs: readonly [{
                  name: "";
                  internalType: "string";
                  type: "string";
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "";
                  internalType: "bytes";
                  type: "bytes";
              }];
              name: "onERC721Received";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes4";
                  type: "bytes4";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "owner";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  type: "tuple";
                  components: readonly [{
                      name: "renegotiationId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fee";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "targetPrincipal";
                      internalType: "uint256[]";
                      type: "uint256[]";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "expirationTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }, {
                  name: "_loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }, {
                  name: "_renegotiationOfferSignature";
                  internalType: "bytes";
                  type: "bytes";
              }];
              name: "refinanceFull";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  type: "tuple";
                  components: readonly [{
                      name: "renegotiationId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fee";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "targetPrincipal";
                      internalType: "uint256[]";
                      type: "uint256[]";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "expirationTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }, {
                  name: "_loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
              name: "refinancePartial";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_contract";
                  internalType: "address";
                  type: "address";
              }];
              name: "removeWhitelistedCallbackContract";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_repaymentData";
                  internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                  type: "tuple";
                  components: readonly [{
                      name: "data";
                      internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                      type: "tuple";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "callbackData";
                          internalType: "bytes";
                          type: "bytes";
                      }, {
                          name: "shouldDelegate";
                          internalType: "bool";
                          type: "bool";
                      }];
                  }, {
                      name: "loan";
                      internalType: "struct IMultiSourceLoan.Loan";
                      type: "tuple";
                      components: readonly [{
                          name: "borrower";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAddress";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "duration";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "source";
                          internalType: "struct IMultiSourceLoan.Source[]";
                          type: "tuple[]";
                          components: readonly [{
                              name: "loanId";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "lender";
                              internalType: "address";
                              type: "address";
                          }, {
                              name: "principalAmount";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "accruedInterest";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "startTime";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "aprBps";
                              internalType: "uint256";
                              type: "uint256";
                          }];
                      }];
                  }, {
                      name: "borrowerSignature";
                      internalType: "bytes";
                      type: "bytes";
                  }];
              }];
              name: "repayLoan";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_delegate";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_collection";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_tokenId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "revokeDelegate";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newDelegateRegistry";
                  internalType: "address";
                  type: "address";
              }];
              name: "setDelegateRegistry";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newFlashActionContract";
                  internalType: "address";
                  type: "address";
              }];
              name: "setFlashActionContract";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "__maxSources";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "setMaxSources";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "__minLockPeriod";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "setMinLockPeriod";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [];
              name: "setProtocolFee";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "newOwner";
                  internalType: "address";
                  type: "address";
              }];
              name: "transferOwnership";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newMinimum";
                  internalType: "struct IBaseLoan.ImprovementMinimum";
                  type: "tuple";
                  components: readonly [{
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "interest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
              name: "updateImprovementMinimum";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newDuration";
                  internalType: "uint48";
                  type: "uint48";
              }];
              name: "updateLiquidationAuctionDuration";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "loanLiquidator";
                  internalType: "contract ILoanLiquidator";
                  type: "address";
              }];
              name: "updateLiquidationContract";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newProtocolFee";
                  internalType: "struct IBaseLoan.ProtocolFee";
                  type: "tuple";
                  components: readonly [{
                      name: "recipient";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fraction";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
              name: "updateProtocolFee";
              outputs: readonly [];
          }], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "AllOffersCancelled" | "AllRenegotiationOffersCancelled" | "ImprovementMinimumUpdated" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "MaxSourcesUpdated" | "BorrowerOfferCancelled" | "RevokeDelegate" | "DelegateRegistryUpdated" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "LoanExtended" | "MinLockPeriodUpdated")[]
              ? TFunctionName[number]
              : TFunctionName>
        • Type Parameters

          • TFunctionName extends "OwnershipTransferred" | "AllOffersCancelled" | "AllRenegotiationOffersCancelled" | "ImprovementMinimumUpdated" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "MaxSourcesUpdated" | "BorrowerOfferCancelled" | "RevokeDelegate" | "DelegateRegistryUpdated" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "LoanExtended" | "MinLockPeriodUpdated"

          Parameters

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

          Returns ParseEventLogsReturnType<readonly [{
              stateMutability: "nonpayable";
              type: "constructor";
              inputs: readonly [{
                  name: "loanLiquidator";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "protocolFee";
                  internalType: "struct IBaseLoan.ProtocolFee";
                  type: "tuple";
                  components: readonly [{
                      name: "recipient";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fraction";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }, {
                  name: "currencyManager";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "collectionManager";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "maxSources";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "minLockPeriod";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "delegateRegistry";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "flashActionContract";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              type: "error";
              inputs: readonly [];
              name: "AddressZeroError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_offerId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "CancelledOrExecutedOfferError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_renegotiationId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "CancelledRenegotiationOfferError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "CannotLiquidateError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "CollectionNotWhitelistedError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "CurrencyNotWhitelistedError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "ECDSAInvalidSignature";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "length";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "ECDSAInvalidSignatureLength";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "s";
                  internalType: "bytes32";
                  type: "bytes32";
              }];
              name: "ECDSAInvalidSignatureS";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_expirationTime";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "ExpiredOfferError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_expirationTime";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "ExpiredRenegotiationOfferError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "ExtensionNotAvailableError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_amount";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_principalAmount";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "InvalidAmountError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidBorrowerError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidCallbackError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidCollateralIdError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidDurationError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidLenderError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidLiquidationError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "InvalidLoanError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidMethodError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_fraction";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "InvalidProtocolFeeError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidRenegotiationOfferError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidSignatureError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidValueError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "LengthMismatchError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_liquidator";
                  internalType: "address";
                  type: "address";
              }];
              name: "LiquidatorOnlyError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "LoanExpiredError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_expirationTime";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "LoanNotDueError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_newMinOfferId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_minOfferId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "LowOfferIdError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_newMinRenegotiationOfferId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_minOfferId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "LowRenegotiationOfferIdError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "MaxCapacityExceededError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "minLockPeriod";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "MinLockPeriodTooHighError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "i";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "returndata";
                  internalType: "bytes";
                  type: "bytes";
              }];
              name: "MulticallFailed";
          }, {
              type: "error";
              inputs: readonly [];
              name: "NFTNotReturnedError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "NotStrictlyImprovedError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "OnlyBorrowerCallableError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "OnlyLenderCallableError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "OnlyLenderOrBorrowerCallableError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "PartialOfferCannotChangeDurationError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "PartialOfferCannotHaveFeeError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "RefinanceFullError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "minTimestamp";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "SourceCannotBeRefinancedError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "sourcePrincipal";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "loanPrincipal";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "TargetPrincipalTooLowError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "_pendingProtocolFeeSetTime";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "TooEarlyError";
          }, {
              type: "error";
              inputs: readonly [{
                  name: "sources";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "TooManySourcesError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "ZeroDurationError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "ZeroInterestError";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "lender";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "minOfferId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "AllOffersCancelled";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "lender";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "minRenegotiationId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "AllRenegotiationOffersCancelled";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "borrower";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "offerId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "BorrowerOfferCancelled";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "newdelegateRegistry";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "DelegateRegistryUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "delegate";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "value";
                  internalType: "bool";
                  type: "bool";
                  indexed: false;
              }];
              name: "Delegated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "newFlashActionContract";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "FlashActionContractUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "target";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "data";
                  internalType: "bytes";
                  type: "bytes";
                  indexed: false;
              }];
              name: "FlashActionExecuted";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "minimum";
                  internalType: "struct IBaseLoan.ImprovementMinimum";
                  type: "tuple";
                  components: readonly [{
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "interest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }];
                  indexed: false;
              }];
              name: "ImprovementMinimumUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "newDuration";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LiquidationAuctionDurationUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "liquidator";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "LiquidationContractUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "offerId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
                  indexed: false;
              }, {
                  name: "lender";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "borrower";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "fee";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LoanEmitted";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "oldLoanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "newLoanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
                  indexed: false;
              }, {
                  name: "_extension";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LoanExtended";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LoanForeclosed";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LoanLiquidated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "renegotiationId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "oldLoanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "newLoanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
                  indexed: false;
              }, {
                  name: "fee";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LoanRefinanced";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "totalRepayment";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "fee";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "LoanRepaid";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "loanId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }, {
                  name: "liquidator";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "LoanSentToLiquidator";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "newMax";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "MaxSourcesUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "minLockPeriod";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "MinLockPeriodUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "lender";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "offerId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "OfferCancelled";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "user";
                  internalType: "address";
                  type: "address";
                  indexed: true;
              }, {
                  name: "newOwner";
                  internalType: "address";
                  type: "address";
                  indexed: true;
              }];
              name: "OwnershipTransferred";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "fee";
                  internalType: "struct IBaseLoan.ProtocolFee";
                  type: "tuple";
                  components: readonly [{
                      name: "recipient";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fraction";
                      internalType: "uint256";
                      type: "uint256";
                  }];
                  indexed: false;
              }];
              name: "ProtocolFeePendingUpdate";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "fee";
                  internalType: "struct IBaseLoan.ProtocolFee";
                  type: "tuple";
                  components: readonly [{
                      name: "recipient";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fraction";
                      internalType: "uint256";
                      type: "uint256";
                  }];
                  indexed: false;
              }];
              name: "ProtocolFeeUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "lender";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "renegotiationId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "RenegotiationOfferCancelled";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "delegate";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "collection";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "tokenId";
                  internalType: "uint256";
                  type: "uint256";
                  indexed: false;
              }];
              name: "RevokeDelegate";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "contractAdded";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }, {
                  name: "tax";
                  internalType: "struct WithCallbacks.Taxes";
                  type: "tuple";
                  components: readonly [{
                      name: "buyTax";
                      internalType: "uint128";
                      type: "uint128";
                  }, {
                      name: "sellTax";
                      internalType: "uint128";
                      type: "uint128";
                  }];
                  indexed: false;
              }];
              name: "WhitelistedCallbackContractAdded";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "contractRemoved";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "WhitelistedCallbackContractRemoved";
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "DOMAIN_SEPARATOR";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes32";
                  type: "bytes32";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "FEE_UPDATE_NOTICE";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "INITIAL_DOMAIN_SEPARATOR";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes32";
                  type: "bytes32";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "MAX_PROTOCOL_FEE";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "MIN_AUCTION_DURATION";
              outputs: readonly [{
                  name: "";
                  internalType: "uint48";
                  type: "uint48";
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_contract";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_tax";
                  internalType: "struct WithCallbacks.Taxes";
                  type: "tuple";
                  components: readonly [{
                      name: "buyTax";
                      internalType: "uint128";
                      type: "uint128";
                  }, {
                      name: "sellTax";
                      internalType: "uint128";
                      type: "uint128";
                  }];
              }];
              name: "addWhitelistedCallbackContract";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_minOfferId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "cancelAllOffers";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_minRenegotiationId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "cancelAllRenegotiationOffers";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_offerId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "cancelOffer";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_offerIds";
                  internalType: "uint256[]";
                  type: "uint256[]";
              }];
              name: "cancelOffers";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_renegotiationId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "cancelRenegotiationOffer";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_renegotiationIds";
                  internalType: "uint256[]";
                  type: "uint256[]";
              }];
              name: "cancelRenegotiationOffers";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }, {
                  name: "_delegate";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_rights";
                  internalType: "bytes32";
                  type: "bytes32";
              }, {
                  name: "_value";
                  internalType: "bool";
                  type: "bool";
              }];
              name: "delegate";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_executionData";
                  internalType: "struct IMultiSourceLoan.LoanExecutionData";
                  type: "tuple";
                  components: readonly [{
                      name: "executionData";
                      internalType: "struct IBaseLoan.ExecutionData";
                      type: "tuple";
                      components: readonly [{
                          name: "offer";
                          internalType: "struct IBaseLoan.LoanOffer";
                          type: "tuple";
                          components: readonly [{
                              name: "offerId";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "lender";
                              internalType: "address";
                              type: "address";
                          }, {
                              name: "fee";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "borrower";
                              internalType: "address";
                              type: "address";
                          }, {
                              name: "capacity";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "nftCollateralAddress";
                              internalType: "address";
                              type: "address";
                          }, {
                              name: "nftCollateralTokenId";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "principalAddress";
                              internalType: "address";
                              type: "address";
                          }, {
                              name: "principalAmount";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "aprBps";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "expirationTime";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "duration";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "validators";
                              internalType: "struct IBaseLoan.OfferValidator[]";
                              type: "tuple[]";
                              components: readonly [{
                                  name: "validator";
                                  internalType: "address";
                                  type: "address";
                              }, {
                                  name: "arguments";
                                  internalType: "bytes";
                                  type: "bytes";
                              }];
                          }];
                      }, {
                          name: "tokenId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "amount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "expirationTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "callbackData";
                          internalType: "bytes";
                          type: "bytes";
                      }];
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "lenderOfferSignature";
                      internalType: "bytes";
                      type: "bytes";
                  }, {
                      name: "borrowerOfferSignature";
                      internalType: "bytes";
                      type: "bytes";
                  }];
              }];
              name: "emitLoan";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }, {
                  name: "_target";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_data";
                  internalType: "bytes";
                  type: "bytes";
              }];
              name: "executeFlashAction";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }, {
                  name: "_extension";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "extendLoan";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getCollectionManager";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getCurrencyManager";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getDelegateRegistry";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getFlashActionContract";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getImprovementMinimum";
              outputs: readonly [{
                  name: "";
                  internalType: "struct IBaseLoan.ImprovementMinimum";
                  type: "tuple";
                  components: readonly [{
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "interest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getLiquidationAuctionDuration";
              outputs: readonly [{
                  name: "";
                  internalType: "uint48";
                  type: "uint48";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getLiquidator";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "getLoanHash";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes32";
                  type: "bytes32";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getMaxSources";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getMinLockPeriod";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "_loanPrincipal";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "getMinSourcePrincipal";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getPendingProtocolFee";
              outputs: readonly [{
                  name: "";
                  internalType: "struct IBaseLoan.ProtocolFee";
                  type: "tuple";
                  components: readonly [{
                      name: "recipient";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fraction";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getPendingProtocolFeeSetTime";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getProtocolFee";
              outputs: readonly [{
                  name: "";
                  internalType: "struct IBaseLoan.ProtocolFee";
                  type: "tuple";
                  components: readonly [{
                      name: "recipient";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fraction";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getTotalLoansIssued";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "_lender";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_offerId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "getUsedCapacity";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "isBorrowerOfferCancelled";
              outputs: readonly [{
                  name: "";
                  internalType: "bool";
                  type: "bool";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "isOfferCancelled";
              outputs: readonly [{
                  name: "";
                  internalType: "bool";
                  type: "bool";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "isRenegotiationOfferCancelled";
              outputs: readonly [{
                  name: "";
                  internalType: "bool";
                  type: "bool";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "_contract";
                  internalType: "address";
                  type: "address";
              }];
              name: "isWhitelistedCallbackContract";
              outputs: readonly [{
                  name: "";
                  internalType: "bool";
                  type: "bool";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
              name: "lenderMinRenegotiationOfferId";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
              name: "liquidateLoan";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes";
                  type: "bytes";
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_loanId";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
              name: "loanLiquidated";
              outputs: readonly [];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
              name: "minOfferId";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }];
          }, {
              stateMutability: "payable";
              type: "function";
              inputs: readonly [{
                  name: "data";
                  internalType: "bytes[]";
                  type: "bytes[]";
              }];
              name: "multicall";
              outputs: readonly [{
                  name: "results";
                  internalType: "bytes[]";
                  type: "bytes[]";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "name";
              outputs: readonly [{
                  name: "";
                  internalType: "string";
                  type: "string";
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "";
                  internalType: "bytes";
                  type: "bytes";
              }];
              name: "onERC721Received";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes4";
                  type: "bytes4";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "owner";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  type: "tuple";
                  components: readonly [{
                      name: "renegotiationId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fee";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "targetPrincipal";
                      internalType: "uint256[]";
                      type: "uint256[]";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "expirationTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }, {
                  name: "_loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }, {
                  name: "_renegotiationOfferSignature";
                  internalType: "bytes";
                  type: "bytes";
              }];
              name: "refinanceFull";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_renegotiationOffer";
                  internalType: "struct IMultiSourceLoan.RenegotiationOffer";
                  type: "tuple";
                  components: readonly [{
                      name: "renegotiationId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "loanId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "lender";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fee";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "targetPrincipal";
                      internalType: "uint256[]";
                      type: "uint256[]";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "aprBps";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "expirationTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }, {
                  name: "_loan";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
              name: "refinancePartial";
              outputs: readonly [{
                  name: "";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "";
                  internalType: "struct IMultiSourceLoan.Loan";
                  type: "tuple";
                  components: readonly [{
                      name: "borrower";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "nftCollateralTokenId";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "nftCollateralAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAddress";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "startTime";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "source";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      type: "tuple[]";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "lender";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "accruedInterest";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "aprBps";
                          internalType: "uint256";
                          type: "uint256";
                      }];
                  }];
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_contract";
                  internalType: "address";
                  type: "address";
              }];
              name: "removeWhitelistedCallbackContract";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_repaymentData";
                  internalType: "struct IMultiSourceLoan.LoanRepaymentData";
                  type: "tuple";
                  components: readonly [{
                      name: "data";
                      internalType: "struct IMultiSourceLoan.SignableRepaymentData";
                      type: "tuple";
                      components: readonly [{
                          name: "loanId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "callbackData";
                          internalType: "bytes";
                          type: "bytes";
                      }, {
                          name: "shouldDelegate";
                          internalType: "bool";
                          type: "bool";
                      }];
                  }, {
                      name: "loan";
                      internalType: "struct IMultiSourceLoan.Loan";
                      type: "tuple";
                      components: readonly [{
                          name: "borrower";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "nftCollateralTokenId";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "nftCollateralAddress";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAddress";
                          internalType: "address";
                          type: "address";
                      }, {
                          name: "principalAmount";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "startTime";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "duration";
                          internalType: "uint256";
                          type: "uint256";
                      }, {
                          name: "source";
                          internalType: "struct IMultiSourceLoan.Source[]";
                          type: "tuple[]";
                          components: readonly [{
                              name: "loanId";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "lender";
                              internalType: "address";
                              type: "address";
                          }, {
                              name: "principalAmount";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "accruedInterest";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "startTime";
                              internalType: "uint256";
                              type: "uint256";
                          }, {
                              name: "aprBps";
                              internalType: "uint256";
                              type: "uint256";
                          }];
                      }];
                  }, {
                      name: "borrowerSignature";
                      internalType: "bytes";
                      type: "bytes";
                  }];
              }];
              name: "repayLoan";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_delegate";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_collection";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_tokenId";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "revokeDelegate";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newDelegateRegistry";
                  internalType: "address";
                  type: "address";
              }];
              name: "setDelegateRegistry";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newFlashActionContract";
                  internalType: "address";
                  type: "address";
              }];
              name: "setFlashActionContract";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "__maxSources";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "setMaxSources";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "__minLockPeriod";
                  internalType: "uint256";
                  type: "uint256";
              }];
              name: "setMinLockPeriod";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [];
              name: "setProtocolFee";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "newOwner";
                  internalType: "address";
                  type: "address";
              }];
              name: "transferOwnership";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newMinimum";
                  internalType: "struct IBaseLoan.ImprovementMinimum";
                  type: "tuple";
                  components: readonly [{
                      name: "principalAmount";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "interest";
                      internalType: "uint256";
                      type: "uint256";
                  }, {
                      name: "duration";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
              name: "updateImprovementMinimum";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newDuration";
                  internalType: "uint48";
                  type: "uint48";
              }];
              name: "updateLiquidationAuctionDuration";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "loanLiquidator";
                  internalType: "contract ILoanLiquidator";
                  type: "address";
              }];
              name: "updateLiquidationContract";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newProtocolFee";
                  internalType: "struct IBaseLoan.ProtocolFee";
                  type: "tuple";
                  components: readonly [{
                      name: "recipient";
                      internalType: "address";
                      type: "address";
                  }, {
                      name: "fraction";
                      internalType: "uint256";
                      type: "uint256";
                  }];
              }];
              name: "updateProtocolFee";
              outputs: readonly [];
          }], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "AllOffersCancelled" | "AllRenegotiationOffersCancelled" | "ImprovementMinimumUpdated" | "LiquidationAuctionDurationUpdated" | "LiquidationContractUpdated" | "LoanForeclosed" | "LoanLiquidated" | "LoanSentToLiquidator" | "OfferCancelled" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "RenegotiationOfferCancelled" | "WhitelistedCallbackContractAdded" | "WhitelistedCallbackContractRemoved" | "LoanEmitted" | "LoanRefinanced" | "LoanRepaid" | "MaxSourcesUpdated" | "BorrowerOfferCancelled" | "RevokeDelegate" | "DelegateRegistryUpdated" | "Delegated" | "FlashActionContractUpdated" | "FlashActionExecuted" | "LoanExtended" | "MinLockPeriodUpdated")[]
              ? TFunctionName[number]
              : TFunctionName>