Hierarchy

Constructors

Methods

  • Parameters

    • __namedParameters: {
          structToSign: {
              offerId: bigint;
              lender: `0x${string}`;
              fee: bigint;
              borrower: `0x${string}`;
              capacity: bigint;
              signer: `0x${string}`;
              requiresLiquidation: boolean;
              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;
            signer: `0x${string}`;
            requiresLiquidation: boolean;
            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
        • signer: `0x${string}`
        • requiresLiquidation: boolean
        • 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;
              signer: `0x${string}`;
              targetPrincipal: readonly bigint[];
              principalAmount: bigint;
              aprBps: bigint;
              expirationTime: bigint;
              duration: bigint;
              strictImprovement: boolean;
          };
      }
      • structToSign: {
            renegotiationId: bigint;
            loanId: bigint;
            lender: `0x${string}`;
            fee: bigint;
            signer: `0x${string}`;
            targetPrincipal: readonly bigint[];
            principalAmount: bigint;
            aprBps: bigint;
            expirationTime: bigint;
            duration: bigint;
            strictImprovement: boolean;
        }
        • renegotiationId: bigint
        • loanId: bigint
        • lender: `0x${string}`
        • fee: bigint
        • signer: `0x${string}`
        • targetPrincipal: readonly bigint[]
        • principalAmount: bigint
        • aprBps: bigint
        • expirationTime: bigint
        • duration: bigint
        • strictImprovement: boolean

    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}`;
            renegotiationId: bigint;
        }>);
    }>

  • Parameters

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

  • Parameters

    • __namedParameters: {
          loan: LoanV4;
          loanId: bigint;
          nftReceiver?: `0x${string}`;
      }
      • loan: LoanV4
      • loanId: bigint
      • Optional nftReceiver?: `0x${string}`

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

  • Parameters

    • __namedParameters: {
          renegotiationId: bigint;
          refinancings: {
              loan: LoanV4;
              newAprBps: bigint;
              sources: {
                  source: {
                      loanId: bigint;
                      lender: `0x${string}`;
                      principalAmount: bigint;
                      accruedInterest: bigint;
                      startTime: bigint;
                      aprBps: bigint;
                  };
                  refinancingPrincipal: bigint;
              }[];
          }[];
      }
      • renegotiationId: bigint
      • refinancings: {
            loan: LoanV4;
            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;
              signer: `0x${string}`;
              targetPrincipal: readonly bigint[];
              principalAmount: bigint;
              aprBps: bigint;
              expirationTime: bigint;
              duration: bigint;
              strictImprovement: boolean;
          };
          signature: `0x${string}`;
          loan: LoanV4;
      }
      • offer: {
            renegotiationId: bigint;
            loanId: bigint;
            lender: `0x${string}`;
            fee: bigint;
            signer: `0x${string}`;
            targetPrincipal: readonly bigint[];
            principalAmount: bigint;
            aprBps: bigint;
            expirationTime: bigint;
            duration: bigint;
            strictImprovement: boolean;
        }
        • renegotiationId: bigint
        • loanId: bigint
        • lender: `0x${string}`
        • fee: bigint
        • signer: `0x${string}`
        • targetPrincipal: readonly bigint[]
        • principalAmount: bigint
        • aprBps: bigint
        • expirationTime: bigint
        • duration: bigint
        • strictImprovement: boolean
      • signature: `0x${string}`
      • loan: LoanV4

    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;
              signer: `0x${string}`;
              targetPrincipal: readonly bigint[];
              principalAmount: bigint;
              aprBps: bigint;
              expirationTime: bigint;
              duration: bigint;
              strictImprovement: boolean;
          };
          loan: LoanV4;
      }
      • offer: {
            renegotiationId: bigint;
            loanId: bigint;
            lender: `0x${string}`;
            fee: bigint;
            signer: `0x${string}`;
            targetPrincipal: readonly bigint[];
            principalAmount: bigint;
            aprBps: bigint;
            expirationTime: bigint;
            duration: bigint;
            strictImprovement: boolean;
        }
        • renegotiationId: bigint
        • loanId: bigint
        • lender: `0x${string}`
        • fee: bigint
        • signer: `0x${string}`
        • targetPrincipal: readonly bigint[]
        • principalAmount: bigint
        • aprBps: bigint
        • expirationTime: bigint
        • duration: bigint
        • strictImprovement: boolean
      • loan: LoanV4

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

  • 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;
            };
            newLoanId: bigint;
        }>);
    }>

  • 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[];
        }>);
    }>

  • Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            results: {
                loanId: bigint;
                delegate: `0x${string}`;
                value: 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;
        }>);
    }>

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

  • 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: LoanV4;
          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: "uint8";
        type: "uint8";
    }];
}, {
    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: "_offerId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "CancelledRenegotiationOffer";
}, {
    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: "ExpiredLoanError";
}, {
    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: "InvalidBorrowerError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidCallbackError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidCollateralIdError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidLiquidationError";
}, {
    type: "error";
    inputs: readonly [{
        name: "_loanId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "InvalidLoanError";
}, {
    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: "InvalidSignerError";
}, {
    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: "_loanId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "LoanNotFoundError";
}, {
    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: "_id";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "NotMintedError";
}, {
    type: "error";
    inputs: readonly [];
    name: "NotStrictlyImprovedError";
}, {
    type: "error";
    inputs: readonly [];
    name: "OnlyBorrowerCallableError";
}, {
    type: "error";
    inputs: readonly [];
    name: "OnlyLenderOrSignerCallableError";
}, {
    type: "error";
    inputs: readonly [];
    name: "PartialOfferCannotChangeDurationError";
}, {
    type: "error";
    inputs: readonly [];
    name: "PartialOfferCannotHaveFeeError";
}, {
    type: "error";
    inputs: readonly [];
    name: "RefinanceFullError";
}, {
    type: "error";
    inputs: readonly [];
    name: "RepaymentError";
}, {
    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: "uint8";
        type: "uint8";
    }];
    name: "TooManySourcesError";
}, {
    type: "error";
    inputs: readonly [];
    name: "Unauthorized";
}, {
    type: "error";
    inputs: readonly [{
        name: "_authorized";
        internalType: "address";
        type: "address";
    }];
    name: "UnauthorizedError";
}, {
    type: "error";
    inputs: readonly [];
    name: "ZeroAddressError";
}, {
    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: "lender";
        internalType: "address";
        type: "address";
        indexed: false;
    }, {
        name: "signer";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "ApprovedSigner";
}, {
    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: "fee";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LoanEmitted";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "loanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }];
    name: "LoanForeclosed";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "loanId";
        internalType: "uint256";
        type: "uint256";
        indexed: false;
    }, {
        name: "repayment";
        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: "uint8";
        type: "uint8";
        indexed: false;
    }];
    name: "MaxSourcesUpdated";
}, {
    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: "contract_added";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "WhitelistedCallbackContractAdded";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "contract_removed";
        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: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_contract";
        internalType: "address";
        type: "address";
    }];
    name: "addWhitelistedCallbackContract";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_signer";
        internalType: "address";
        type: "address";
    }];
    name: "approveSigner";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_lender";
        internalType: "address";
        type: "address";
    }, {
        name: "_minOfferId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelAllOffers";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_lender";
        internalType: "address";
        type: "address";
    }, {
        name: "_minRenegotiationId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelAllRenegotiationOffers";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_lender";
        internalType: "address";
        type: "address";
    }, {
        name: "_offerId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelOffer";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_lender";
        internalType: "address";
        type: "address";
    }, {
        name: "_offerIds";
        internalType: "uint256[]";
        type: "uint256[]";
    }];
    name: "cancelOffers";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_lender";
        internalType: "address";
        type: "address";
    }, {
        name: "_renegotiationId";
        internalType: "uint256";
        type: "uint256";
    }];
    name: "cancelRenegotiationOffer";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_lender";
        internalType: "address";
        type: "address";
    }, {
        name: "_renegotiationIds";
        internalType: "uint256[]";
        type: "uint256[]";
    }];
    name: "cancelRenegotiationOffers";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_loanOffer";
        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: "signer";
            internalType: "address";
            type: "address";
        }, {
            name: "requiresLiquidation";
            internalType: "bool";
            type: "bool";
        }, {
            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: "_lenderOfferSignature";
        internalType: "bytes";
        type: "bytes";
    }, {
        name: "_withCallback";
        internalType: "bool";
        type: "bool";
    }];
    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: "view";
    type: "function";
    inputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
    name: "getApprovedSigner";
    outputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
}, {
    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: "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: "uint8";
        type: "uint8";
    }];
}, {
    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: "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: "lenderMinOfferId";
    outputs: readonly [{
        name: "";
        internalType: "uint256";
        type: "uint256";
    }];
}, {
    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 [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_collateralAddress";
        internalType: "address";
        type: "address";
    }, {
        name: "_collateralTokenId";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "_loanId";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "_repayment";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "_loan";
        internalType: "bytes";
        type: "bytes";
    }];
    name: "loanLiquidated";
    outputs: readonly [];
}, {
    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: "signer";
            internalType: "address";
            type: "address";
        }, {
            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: "strictImprovement";
            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: "_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: "signer";
            internalType: "address";
            type: "address";
        }, {
            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: "strictImprovement";
            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: "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: "_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: "signer";
            internalType: "address";
            type: "address";
        }, {
            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: "strictImprovement";
            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: "refinancePartialBatch";
    outputs: readonly [{
        name: "loanId";
        internalType: "uint256[]";
        type: "uint256[]";
    }, {
        name: "loans";
        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: "_collateralTo";
        internalType: "address";
        type: "address";
    }, {
        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: "_withCallback";
        internalType: "bool";
        type: "bool";
    }];
    name: "repayLoan";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "maxSources";
        internalType: "uint8";
        type: "uint8";
    }];
    name: "setMaxSources";
    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: "uint8";
              type: "uint8";
          }];
      }, {
          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: "_offerId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "CancelledRenegotiationOffer";
      }, {
          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: "ExpiredLoanError";
      }, {
          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: "InvalidBorrowerError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidCallbackError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidCollateralIdError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidLiquidationError";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "InvalidLoanError";
      }, {
          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: "InvalidSignerError";
      }, {
          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: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "LoanNotFoundError";
      }, {
          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: "_id";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "NotMintedError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "NotStrictlyImprovedError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "OnlyBorrowerCallableError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "OnlyLenderOrSignerCallableError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "PartialOfferCannotChangeDurationError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "PartialOfferCannotHaveFeeError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "RefinanceFullError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "RepaymentError";
      }, {
          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: "uint8";
              type: "uint8";
          }];
          name: "TooManySourcesError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "Unauthorized";
      }, {
          type: "error";
          inputs: readonly [{
              name: "_authorized";
              internalType: "address";
              type: "address";
          }];
          name: "UnauthorizedError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "ZeroAddressError";
      }, {
          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: "lender";
              internalType: "address";
              type: "address";
              indexed: false;
          }, {
              name: "signer";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "ApprovedSigner";
      }, {
          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: "fee";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanEmitted";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }];
          name: "LoanForeclosed";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "loanId";
              internalType: "uint256";
              type: "uint256";
              indexed: false;
          }, {
              name: "repayment";
              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: "uint8";
              type: "uint8";
              indexed: false;
          }];
          name: "MaxSourcesUpdated";
      }, {
          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: "contract_added";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "WhitelistedCallbackContractAdded";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "contract_removed";
              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: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_contract";
              internalType: "address";
              type: "address";
          }];
          name: "addWhitelistedCallbackContract";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_signer";
              internalType: "address";
              type: "address";
          }];
          name: "approveSigner";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_minOfferId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "cancelAllOffers";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_minRenegotiationId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "cancelAllRenegotiationOffers";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_offerId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "cancelOffer";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_offerIds";
              internalType: "uint256[]";
              type: "uint256[]";
          }];
          name: "cancelOffers";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_renegotiationId";
              internalType: "uint256";
              type: "uint256";
          }];
          name: "cancelRenegotiationOffer";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_lender";
              internalType: "address";
              type: "address";
          }, {
              name: "_renegotiationIds";
              internalType: "uint256[]";
              type: "uint256[]";
          }];
          name: "cancelRenegotiationOffers";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_loanOffer";
              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: "signer";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "requiresLiquidation";
                  internalType: "bool";
                  type: "bool";
              }, {
                  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: "_lenderOfferSignature";
              internalType: "bytes";
              type: "bytes";
          }, {
              name: "_withCallback";
              internalType: "bool";
              type: "bool";
          }];
          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: "view";
          type: "function";
          inputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
          name: "getApprovedSigner";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          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: "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: "uint8";
              type: "uint8";
          }];
      }, {
          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: "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: "lenderMinOfferId";
          outputs: readonly [{
              name: "";
              internalType: "uint256";
              type: "uint256";
          }];
      }, {
          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 [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_collateralAddress";
              internalType: "address";
              type: "address";
          }, {
              name: "_collateralTokenId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_loanId";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_repayment";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_loan";
              internalType: "bytes";
              type: "bytes";
          }];
          name: "loanLiquidated";
          outputs: readonly [];
      }, {
          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: "signer";
                  internalType: "address";
                  type: "address";
              }, {
                  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: "strictImprovement";
                  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: "_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: "signer";
                  internalType: "address";
                  type: "address";
              }, {
                  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: "strictImprovement";
                  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: "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: "_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: "signer";
                  internalType: "address";
                  type: "address";
              }, {
                  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: "strictImprovement";
                  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: "refinancePartialBatch";
          outputs: readonly [{
              name: "loanId";
              internalType: "uint256[]";
              type: "uint256[]";
          }, {
              name: "loans";
              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: "_collateralTo";
              internalType: "address";
              type: "address";
          }, {
              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: "_withCallback";
              internalType: "bool";
              type: "bool";
          }];
          name: "repayLoan";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "maxSources";
              internalType: "uint8";
              type: "uint8";
          }];
          name: "setMaxSources";
          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 [];
      }], {}, {}, `0x${string}`>

      Type declaration

        Type declaration

          safeContractWrite: {
              owner: ((args, options?) => Promise<`0x${string}`>);
              transferOwnership: ((args, options?) => Promise<`0x${string}`>);
              liquidateLoan: ((args, options?) => Promise<`0x${string}`>);
              onERC721Received: ((args, options?) => Promise<`0x${string}`>);
              DOMAIN_SEPARATOR: ((args, options?) => Promise<`0x${string}`>);
              FEE_UPDATE_NOTICE: ((args, options?) => Promise<`0x${string}`>);
              INITIAL_DOMAIN_SEPARATOR: ((args, options?) => Promise<`0x${string}`>);
              MAX_PROTOCOL_FEE: ((args, options?) => Promise<`0x${string}`>);
              addWhitelistedCallbackContract: ((args, options?) => Promise<`0x${string}`>);
              approveSigner: ((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}`>);
              getApprovedSigner: ((args, options?) => Promise<`0x${string}`>);
              getCollectionManager: ((args, options?) => Promise<`0x${string}`>);
              getCurrencyManager: ((args, options?) => Promise<`0x${string}`>);
              getImprovementMinimum: ((args, options?) => Promise<`0x${string}`>);
              getLiquidationAuctionDuration: ((args, options?) => Promise<`0x${string}`>);
              getLiquidator: ((args, options?) => Promise<`0x${string}`>);
              getPendingProtocolFee: ((args, options?) => Promise<`0x${string}`>);
              getPendingProtocolFeeSetTime: ((args, options?) => Promise<`0x${string}`>);
              getProtocolFee: ((args, options?) => Promise<`0x${string}`>);
              getTotalLoansIssued: ((args, options?) => Promise<`0x${string}`>);
              getUsedCapacity: ((args, options?) => Promise<`0x${string}`>);
              isOfferCancelled: ((args, options?) => Promise<`0x${string}`>);
              isRenegotiationOfferCancelled: ((args, options?) => Promise<`0x${string}`>);
              isWhitelistedCallbackContract: ((args, options?) => Promise<`0x${string}`>);
              lenderMinOfferId: ((args, options?) => Promise<`0x${string}`>);
              lenderMinRenegotiationOfferId: ((args, options?) => Promise<`0x${string}`>);
              loanLiquidated: ((args, options?) => Promise<`0x${string}`>);
              name: ((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}`>);
              getMaxSources: ((args, options?) => Promise<`0x${string}`>);
              refinanceFull: ((args, options?) => Promise<`0x${string}`>);
              refinancePartial: ((args, options?) => Promise<`0x${string}`>);
              refinancePartialBatch: ((args, options?) => Promise<`0x${string}`>);
              repayLoan: ((args, options?) => Promise<`0x${string}`>);
              setMaxSources: ((args, options?) => Promise<`0x${string}`>);
              getLoanHash: ((args, options?) => Promise<`0x${string}`>);
              getMinSourcePrincipal: ((args, options?) => Promise<`0x${string}`>);
          }

          Type declaration

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

          • 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; })[];
                  }]
                • 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}`>

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

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

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

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

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

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

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

                • args: readonly [`0x${string}`, 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 [`0x${string}`, 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 [`0x${string}`, 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 [`0x${string}`, 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 [`0x${string}`, 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 [`0x${string}`, readonly bigint[]]
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

                • args: undefined
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                • args: undefined
                • 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
                • 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;
                  }]
                • 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;
                  }]
                • 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 [{
                      offerId: bigint;
                      lender: `0x${string}`;
                      fee: bigint;
                      borrower: `0x${string}`;
                      capacity: bigint;
                      signer: `0x${string}`;
                      requiresLiquidation: boolean;
                      nftCollateralAddress: `0x${string}`;
                      nftCollateralTokenId: bigint;
                      principalAddress: `0x${string}`;
                      principalAmount: bigint;
                      aprBps: bigint;
                      expirationTime: bigint;
                      duration: bigint;
                      validators: readonly ({ validator: `0x${string}`; arguments: `0x${string}`; })[];
                  }, bigint, `0x${string}`, boolean]
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

                • args: undefined
                • 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;
                      signer: `0x${string}`;
                      targetPrincipal: readonly bigint[];
                      principalAmount: bigint;
                      aprBps: bigint;
                      expirationTime: bigint;
                      duration: bigint;
                      strictImprovement: boolean;
                  }, {
                      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;
                      signer: `0x${string}`;
                      targetPrincipal: readonly bigint[];
                      principalAmount: bigint;
                      aprBps: bigint;
                      expirationTime: bigint;
                      duration: bigint;
                      strictImprovement: boolean;
                  }, {
                      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}`>

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

                • args: readonly [readonly {
                      renegotiationId: bigint;
                      loanId: bigint;
                      lender: `0x${string}`;
                      fee: bigint;
                      signer: `0x${string}`;
                      targetPrincipal: readonly bigint[];
                      principalAmount: bigint;
                      aprBps: bigint;
                      expirationTime: bigint;
                      duration: bigint;
                      strictImprovement: boolean;
                  }[], readonly {
                      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 [`0x${string}`, 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; })[];
                  }, boolean]
                • 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 [number]
                • Optional options: {
                      value?: bigint;
                  }
                  • Optional value?: bigint

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

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

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