Class LeverageV5

Hierarchy

Constructors

Methods

  • Parameters

    • executionData: {
          offer: {
              offerId: bigint;
              lender: `0x${string}`;
              fee: bigint;
              borrower: `0x${string}`;
              capacity: bigint;
              nftCollateralAddress: `0x${string}`;
              nftCollateralTokenId: bigint;
              principalAddress: `0x${string}`;
              principalAmount: bigint;
              aprBps: bigint;
              expirationTime: bigint;
              duration: bigint;
              validators: readonly ({ validator: `0x${string}`; arguments: `0x${string}`; })[];
          } & {
              signature: `0x${string}`;
          };
          tokenId: bigint;
          amount: bigint;
          expirationTime: bigint;
          callbackData: `0x${string}`;
      }
      • offer: {
            offerId: bigint;
            lender: `0x${string}`;
            fee: bigint;
            borrower: `0x${string}`;
            capacity: bigint;
            nftCollateralAddress: `0x${string}`;
            nftCollateralTokenId: bigint;
            principalAddress: `0x${string}`;
            principalAmount: bigint;
            aprBps: bigint;
            expirationTime: bigint;
            duration: bigint;
            validators: readonly ({ validator: `0x${string}`; arguments: `0x${string}`; })[];
        } & {
            signature: `0x${string}`;
        }
      • tokenId: bigint
      • amount: bigint
      • expirationTime: bigint
      • callbackData: `0x${string}`

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

  • Parameters

    • data: {
          loanId: bigint;
          callbackData: `0x${string}`;
          shouldDelegate: boolean;
      }
      • loanId: bigint
      • callbackData: `0x${string}`
      • shouldDelegate: boolean

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

  • Parameters

    • __namedParameters: {
          leverageBuyData: {
              offer: {
                  offerId: bigint;
                  lender: `0x${string}`;
                  fee: bigint;
                  borrower: `0x${string}`;
                  capacity: bigint;
                  nftCollateralAddress: `0x${string}`;
                  nftCollateralTokenId: bigint;
                  principalAddress: `0x${string}`;
                  principalAmount: bigint;
                  aprBps: bigint;
                  expirationTime: bigint;
                  duration: bigint;
                  validators: readonly ({ validator: `0x${string}`; arguments: `0x${string}`; })[];
              } & {
                  signature: `0x${string}`;
              };
              expirationTime: bigint;
              amount: bigint;
              nft: {
                  tokenId: bigint;
              };
              callbackData: `0x${string}`;
          }[];
          ethToSend: bigint;
      }
      • leverageBuyData: {
            offer: {
                offerId: bigint;
                lender: `0x${string}`;
                fee: bigint;
                borrower: `0x${string}`;
                capacity: bigint;
                nftCollateralAddress: `0x${string}`;
                nftCollateralTokenId: bigint;
                principalAddress: `0x${string}`;
                principalAmount: bigint;
                aprBps: bigint;
                expirationTime: bigint;
                duration: bigint;
                validators: readonly ({ validator: `0x${string}`; arguments: `0x${string}`; })[];
            } & {
                signature: `0x${string}`;
            };
            expirationTime: bigint;
            amount: bigint;
            nft: {
                tokenId: bigint;
            };
            callbackData: `0x${string}`;
        }[]
      • ethToSend: bigint

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            _loanIds: readonly bigint[];
        }>);
    }>

  • Parameters

    • __namedParameters: {
          loan: LoanV5;
          callbackData: `0x${string}`;
          shouldDelegate: boolean;
          loanId: bigint;
      }
      • loan: LoanV5
      • callbackData: `0x${string}`
      • shouldDelegate: boolean
      • loanId: bigint

    Returns Promise<{
        txHash: `0x${string}`;
        waitTxInBlock: (() => Promise<{
            _loanIds: readonly bigint[];
        }>);
    }>

Properties

mslAddress: `0x${string}`
abi: readonly [{
    stateMutability: "nonpayable";
    type: "constructor";
    inputs: readonly [{
        name: "_multiSourceLoanAddress";
        internalType: "address";
        type: "address";
    }, {
        name: "_marketplaceContracts";
        internalType: "address";
        type: "address";
    }, {
        name: "_wethAddress";
        internalType: "address payable";
        type: "address";
    }, {
        name: "_punkMarketAddress";
        internalType: "address payable";
        type: "address";
    }, {
        name: "_wrappedPunkAddress";
        internalType: "address payable";
        type: "address";
    }, {
        name: "_seaportAddress";
        internalType: "address payable";
        type: "address";
    }];
}, {
    type: "error";
    inputs: readonly [];
    name: "AddressZeroError";
}, {
    type: "error";
    inputs: readonly [];
    name: "CouldNotReturnEthError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidAddressUpdateError";
}, {
    type: "error";
    inputs: readonly [];
    name: "InvalidCallbackError";
}, {
    type: "error";
    inputs: readonly [];
    name: "MarketplaceAddressNotWhitelisted";
}, {
    type: "error";
    inputs: readonly [];
    name: "OnlyMultiSourceLoanError";
}, {
    type: "error";
    inputs: readonly [];
    name: "OnlyWethSupportedError";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "_loanIds";
        internalType: "uint256[]";
        type: "uint256[]";
        indexed: false;
    }];
    name: "BNPLLoansStarted";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "_newAddress";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "MultiSourceLoanPendingUpdate";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "_newAddress";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "MultiSourceLoanUpdated";
}, {
    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: "_newAddress";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "SeaportPendingUpdate";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "_newAddress";
        internalType: "address";
        type: "address";
        indexed: false;
    }];
    name: "SeaportUpdated";
}, {
    type: "event";
    anonymous: false;
    inputs: readonly [{
        name: "_loanIds";
        internalType: "uint256[]";
        type: "uint256[]";
        indexed: false;
    }];
    name: "SellAndRepayExecuted";
}, {
    stateMutability: "payable";
    type: "fallback";
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        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: "_executionData";
        internalType: "bytes";
        type: "bytes";
    }];
    name: "afterNFTTransfer";
    outputs: readonly [{
        name: "";
        internalType: "bytes4";
        type: "bytes4";
    }];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        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: "_fee";
        internalType: "uint256";
        type: "uint256";
    }, {
        name: "_executionData";
        internalType: "bytes";
        type: "bytes";
    }];
    name: "afterPrincipalTransfer";
    outputs: readonly [{
        name: "";
        internalType: "bytes4";
        type: "bytes4";
    }];
}, {
    stateMutability: "payable";
    type: "function";
    inputs: readonly [{
        name: "_executionData";
        internalType: "bytes[]";
        type: "bytes[]";
    }];
    name: "buy";
    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: "_newAddress";
        internalType: "address";
        type: "address";
    }];
    name: "finalUpdateMultiSourceLoanAddress";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_newAddress";
        internalType: "address";
        type: "address";
    }];
    name: "finalUpdateSeaportAddress";
    outputs: readonly [];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getMultiSourceLoanAddress";
    outputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
}, {
    stateMutability: "view";
    type: "function";
    inputs: readonly [];
    name: "getSeaportAddress";
    outputs: readonly [{
        name: "";
        internalType: "address";
        type: "address";
    }];
}, {
    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: "_executionData";
        internalType: "bytes[]";
        type: "bytes[]";
    }];
    name: "sell";
    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: "_newAddress";
        internalType: "address";
        type: "address";
    }];
    name: "updateMultiSourceLoanAddressFirst";
    outputs: readonly [];
}, {
    stateMutability: "nonpayable";
    type: "function";
    inputs: readonly [{
        name: "_newAddress";
        internalType: "address";
        type: "address";
    }];
    name: "updateSeaportAddressFirst";
    outputs: readonly [];
}, {
    stateMutability: "payable";
    type: "receive";
}]
address: `0x${string}`
bcClient: {}

Type declaration

    wallet: {}

    Type declaration

      contract: GetContractReturnType<readonly [{
          stateMutability: "nonpayable";
          type: "constructor";
          inputs: readonly [{
              name: "_multiSourceLoanAddress";
              internalType: "address";
              type: "address";
          }, {
              name: "_marketplaceContracts";
              internalType: "address";
              type: "address";
          }, {
              name: "_wethAddress";
              internalType: "address payable";
              type: "address";
          }, {
              name: "_punkMarketAddress";
              internalType: "address payable";
              type: "address";
          }, {
              name: "_wrappedPunkAddress";
              internalType: "address payable";
              type: "address";
          }, {
              name: "_seaportAddress";
              internalType: "address payable";
              type: "address";
          }];
      }, {
          type: "error";
          inputs: readonly [];
          name: "AddressZeroError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "CouldNotReturnEthError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidAddressUpdateError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidCallbackError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "MarketplaceAddressNotWhitelisted";
      }, {
          type: "error";
          inputs: readonly [];
          name: "OnlyMultiSourceLoanError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "OnlyWethSupportedError";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "_loanIds";
              internalType: "uint256[]";
              type: "uint256[]";
              indexed: false;
          }];
          name: "BNPLLoansStarted";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "_newAddress";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "MultiSourceLoanPendingUpdate";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "_newAddress";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "MultiSourceLoanUpdated";
      }, {
          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: "_newAddress";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "SeaportPendingUpdate";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "_newAddress";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "SeaportUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "_loanIds";
              internalType: "uint256[]";
              type: "uint256[]";
              indexed: false;
          }];
          name: "SellAndRepayExecuted";
      }, {
          stateMutability: "payable";
          type: "fallback";
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              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: "_executionData";
              internalType: "bytes";
              type: "bytes";
          }];
          name: "afterNFTTransfer";
          outputs: readonly [{
              name: "";
              internalType: "bytes4";
              type: "bytes4";
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              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: "_fee";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_executionData";
              internalType: "bytes";
              type: "bytes";
          }];
          name: "afterPrincipalTransfer";
          outputs: readonly [{
              name: "";
              internalType: "bytes4";
              type: "bytes4";
          }];
      }, {
          stateMutability: "payable";
          type: "function";
          inputs: readonly [{
              name: "_executionData";
              internalType: "bytes[]";
              type: "bytes[]";
          }];
          name: "buy";
          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: "_newAddress";
              internalType: "address";
              type: "address";
          }];
          name: "finalUpdateMultiSourceLoanAddress";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newAddress";
              internalType: "address";
              type: "address";
          }];
          name: "finalUpdateSeaportAddress";
          outputs: readonly [];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getMultiSourceLoanAddress";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getSeaportAddress";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          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: "_executionData";
              internalType: "bytes[]";
              type: "bytes[]";
          }];
          name: "sell";
          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: "_newAddress";
              internalType: "address";
              type: "address";
          }];
          name: "updateMultiSourceLoanAddressFirst";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newAddress";
              internalType: "address";
              type: "address";
          }];
          name: "updateSeaportAddressFirst";
          outputs: readonly [];
      }, {
          stateMutability: "payable";
          type: "receive";
      }], {} | {}>
      safeContractWrite: {
          transferOwnership: ((args, options?) => Promise<`0x${string}`>);
          onERC721Received: ((args, options?) => Promise<`0x${string}`>);
          afterNFTTransfer: ((args, options?) => Promise<`0x${string}`>);
          afterPrincipalTransfer: ((args, options?) => Promise<`0x${string}`>);
          buy: ((args, options?) => Promise<`0x${string}`>);
          finalUpdateMultiSourceLoanAddress: ((args, options?) => Promise<`0x${string}`>);
          finalUpdateSeaportAddress: ((args, options?) => Promise<`0x${string}`>);
          sell: ((args, options?) => Promise<`0x${string}`>);
          updateMultiSourceLoanAddressFirst: ((args, options?) => Promise<`0x${string}`>);
          updateSeaportAddressFirst: ((args, options?) => Promise<`0x${string}`>);
      }

      Type declaration

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      parseEventLogs: (<TFunctionName>(eventName, logs) => ParseEventLogsReturnType<readonly [{
          stateMutability: "nonpayable";
          type: "constructor";
          inputs: readonly [{
              name: "_multiSourceLoanAddress";
              internalType: "address";
              type: "address";
          }, {
              name: "_marketplaceContracts";
              internalType: "address";
              type: "address";
          }, {
              name: "_wethAddress";
              internalType: "address payable";
              type: "address";
          }, {
              name: "_punkMarketAddress";
              internalType: "address payable";
              type: "address";
          }, {
              name: "_wrappedPunkAddress";
              internalType: "address payable";
              type: "address";
          }, {
              name: "_seaportAddress";
              internalType: "address payable";
              type: "address";
          }];
      }, {
          type: "error";
          inputs: readonly [];
          name: "AddressZeroError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "CouldNotReturnEthError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidAddressUpdateError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "InvalidCallbackError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "MarketplaceAddressNotWhitelisted";
      }, {
          type: "error";
          inputs: readonly [];
          name: "OnlyMultiSourceLoanError";
      }, {
          type: "error";
          inputs: readonly [];
          name: "OnlyWethSupportedError";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "_loanIds";
              internalType: "uint256[]";
              type: "uint256[]";
              indexed: false;
          }];
          name: "BNPLLoansStarted";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "_newAddress";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "MultiSourceLoanPendingUpdate";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "_newAddress";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "MultiSourceLoanUpdated";
      }, {
          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: "_newAddress";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "SeaportPendingUpdate";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "_newAddress";
              internalType: "address";
              type: "address";
              indexed: false;
          }];
          name: "SeaportUpdated";
      }, {
          type: "event";
          anonymous: false;
          inputs: readonly [{
              name: "_loanIds";
              internalType: "uint256[]";
              type: "uint256[]";
              indexed: false;
          }];
          name: "SellAndRepayExecuted";
      }, {
          stateMutability: "payable";
          type: "fallback";
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              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: "_executionData";
              internalType: "bytes";
              type: "bytes";
          }];
          name: "afterNFTTransfer";
          outputs: readonly [{
              name: "";
              internalType: "bytes4";
              type: "bytes4";
          }];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              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: "_fee";
              internalType: "uint256";
              type: "uint256";
          }, {
              name: "_executionData";
              internalType: "bytes";
              type: "bytes";
          }];
          name: "afterPrincipalTransfer";
          outputs: readonly [{
              name: "";
              internalType: "bytes4";
              type: "bytes4";
          }];
      }, {
          stateMutability: "payable";
          type: "function";
          inputs: readonly [{
              name: "_executionData";
              internalType: "bytes[]";
              type: "bytes[]";
          }];
          name: "buy";
          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: "_newAddress";
              internalType: "address";
              type: "address";
          }];
          name: "finalUpdateMultiSourceLoanAddress";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newAddress";
              internalType: "address";
              type: "address";
          }];
          name: "finalUpdateSeaportAddress";
          outputs: readonly [];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getMultiSourceLoanAddress";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          stateMutability: "view";
          type: "function";
          inputs: readonly [];
          name: "getSeaportAddress";
          outputs: readonly [{
              name: "";
              internalType: "address";
              type: "address";
          }];
      }, {
          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: "_executionData";
              internalType: "bytes[]";
              type: "bytes[]";
          }];
          name: "sell";
          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: "_newAddress";
              internalType: "address";
              type: "address";
          }];
          name: "updateMultiSourceLoanAddressFirst";
          outputs: readonly [];
      }, {
          stateMutability: "nonpayable";
          type: "function";
          inputs: readonly [{
              name: "_newAddress";
              internalType: "address";
              type: "address";
          }];
          name: "updateSeaportAddressFirst";
          outputs: readonly [];
      }, {
          stateMutability: "payable";
          type: "receive";
      }], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "BNPLLoansStarted" | "MultiSourceLoanPendingUpdate" | "MultiSourceLoanUpdated" | "SeaportPendingUpdate" | "SeaportUpdated" | "SellAndRepayExecuted")[]
          ? TFunctionName[number]
          : TFunctionName>)

      Type declaration

        • <TFunctionName>(eventName, logs): ParseEventLogsReturnType<readonly [{
              stateMutability: "nonpayable";
              type: "constructor";
              inputs: readonly [{
                  name: "_multiSourceLoanAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_marketplaceContracts";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_wethAddress";
                  internalType: "address payable";
                  type: "address";
              }, {
                  name: "_punkMarketAddress";
                  internalType: "address payable";
                  type: "address";
              }, {
                  name: "_wrappedPunkAddress";
                  internalType: "address payable";
                  type: "address";
              }, {
                  name: "_seaportAddress";
                  internalType: "address payable";
                  type: "address";
              }];
          }, {
              type: "error";
              inputs: readonly [];
              name: "AddressZeroError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "CouldNotReturnEthError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidAddressUpdateError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidCallbackError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "MarketplaceAddressNotWhitelisted";
          }, {
              type: "error";
              inputs: readonly [];
              name: "OnlyMultiSourceLoanError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "OnlyWethSupportedError";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "_loanIds";
                  internalType: "uint256[]";
                  type: "uint256[]";
                  indexed: false;
              }];
              name: "BNPLLoansStarted";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "_newAddress";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "MultiSourceLoanPendingUpdate";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "_newAddress";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "MultiSourceLoanUpdated";
          }, {
              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: "_newAddress";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "SeaportPendingUpdate";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "_newAddress";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "SeaportUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "_loanIds";
                  internalType: "uint256[]";
                  type: "uint256[]";
                  indexed: false;
              }];
              name: "SellAndRepayExecuted";
          }, {
              stateMutability: "payable";
              type: "fallback";
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  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: "_executionData";
                  internalType: "bytes";
                  type: "bytes";
              }];
              name: "afterNFTTransfer";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes4";
                  type: "bytes4";
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  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: "_fee";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_executionData";
                  internalType: "bytes";
                  type: "bytes";
              }];
              name: "afterPrincipalTransfer";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes4";
                  type: "bytes4";
              }];
          }, {
              stateMutability: "payable";
              type: "function";
              inputs: readonly [{
                  name: "_executionData";
                  internalType: "bytes[]";
                  type: "bytes[]";
              }];
              name: "buy";
              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: "_newAddress";
                  internalType: "address";
                  type: "address";
              }];
              name: "finalUpdateMultiSourceLoanAddress";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newAddress";
                  internalType: "address";
                  type: "address";
              }];
              name: "finalUpdateSeaportAddress";
              outputs: readonly [];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getMultiSourceLoanAddress";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getSeaportAddress";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              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: "_executionData";
                  internalType: "bytes[]";
                  type: "bytes[]";
              }];
              name: "sell";
              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: "_newAddress";
                  internalType: "address";
                  type: "address";
              }];
              name: "updateMultiSourceLoanAddressFirst";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newAddress";
                  internalType: "address";
                  type: "address";
              }];
              name: "updateSeaportAddressFirst";
              outputs: readonly [];
          }, {
              stateMutability: "payable";
              type: "receive";
          }], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "BNPLLoansStarted" | "MultiSourceLoanPendingUpdate" | "MultiSourceLoanUpdated" | "SeaportPendingUpdate" | "SeaportUpdated" | "SellAndRepayExecuted")[]
              ? TFunctionName[number]
              : TFunctionName>
        • Type Parameters

          • TFunctionName extends "OwnershipTransferred" | "BNPLLoansStarted" | "MultiSourceLoanPendingUpdate" | "MultiSourceLoanUpdated" | "SeaportPendingUpdate" | "SeaportUpdated" | "SellAndRepayExecuted"

          Parameters

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

          Returns ParseEventLogsReturnType<readonly [{
              stateMutability: "nonpayable";
              type: "constructor";
              inputs: readonly [{
                  name: "_multiSourceLoanAddress";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_marketplaceContracts";
                  internalType: "address";
                  type: "address";
              }, {
                  name: "_wethAddress";
                  internalType: "address payable";
                  type: "address";
              }, {
                  name: "_punkMarketAddress";
                  internalType: "address payable";
                  type: "address";
              }, {
                  name: "_wrappedPunkAddress";
                  internalType: "address payable";
                  type: "address";
              }, {
                  name: "_seaportAddress";
                  internalType: "address payable";
                  type: "address";
              }];
          }, {
              type: "error";
              inputs: readonly [];
              name: "AddressZeroError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "CouldNotReturnEthError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidAddressUpdateError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "InvalidCallbackError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "MarketplaceAddressNotWhitelisted";
          }, {
              type: "error";
              inputs: readonly [];
              name: "OnlyMultiSourceLoanError";
          }, {
              type: "error";
              inputs: readonly [];
              name: "OnlyWethSupportedError";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "_loanIds";
                  internalType: "uint256[]";
                  type: "uint256[]";
                  indexed: false;
              }];
              name: "BNPLLoansStarted";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "_newAddress";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "MultiSourceLoanPendingUpdate";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "_newAddress";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "MultiSourceLoanUpdated";
          }, {
              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: "_newAddress";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "SeaportPendingUpdate";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "_newAddress";
                  internalType: "address";
                  type: "address";
                  indexed: false;
              }];
              name: "SeaportUpdated";
          }, {
              type: "event";
              anonymous: false;
              inputs: readonly [{
                  name: "_loanIds";
                  internalType: "uint256[]";
                  type: "uint256[]";
                  indexed: false;
              }];
              name: "SellAndRepayExecuted";
          }, {
              stateMutability: "payable";
              type: "fallback";
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  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: "_executionData";
                  internalType: "bytes";
                  type: "bytes";
              }];
              name: "afterNFTTransfer";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes4";
                  type: "bytes4";
              }];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  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: "_fee";
                  internalType: "uint256";
                  type: "uint256";
              }, {
                  name: "_executionData";
                  internalType: "bytes";
                  type: "bytes";
              }];
              name: "afterPrincipalTransfer";
              outputs: readonly [{
                  name: "";
                  internalType: "bytes4";
                  type: "bytes4";
              }];
          }, {
              stateMutability: "payable";
              type: "function";
              inputs: readonly [{
                  name: "_executionData";
                  internalType: "bytes[]";
                  type: "bytes[]";
              }];
              name: "buy";
              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: "_newAddress";
                  internalType: "address";
                  type: "address";
              }];
              name: "finalUpdateMultiSourceLoanAddress";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newAddress";
                  internalType: "address";
                  type: "address";
              }];
              name: "finalUpdateSeaportAddress";
              outputs: readonly [];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getMultiSourceLoanAddress";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              stateMutability: "view";
              type: "function";
              inputs: readonly [];
              name: "getSeaportAddress";
              outputs: readonly [{
                  name: "";
                  internalType: "address";
                  type: "address";
              }];
          }, {
              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: "_executionData";
                  internalType: "bytes[]";
                  type: "bytes[]";
              }];
              name: "sell";
              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: "_newAddress";
                  internalType: "address";
                  type: "address";
              }];
              name: "updateMultiSourceLoanAddressFirst";
              outputs: readonly [];
          }, {
              stateMutability: "nonpayable";
              type: "function";
              inputs: readonly [{
                  name: "_newAddress";
                  internalType: "address";
                  type: "address";
              }];
              name: "updateSeaportAddressFirst";
              outputs: readonly [];
          }, {
              stateMutability: "payable";
              type: "receive";
          }], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "BNPLLoansStarted" | "MultiSourceLoanPendingUpdate" | "MultiSourceLoanUpdated" | "SeaportPendingUpdate" | "SeaportUpdated" | "SellAndRepayExecuted")[]
              ? TFunctionName[number]
              : TFunctionName>