Properties
Static
EXECUTION_INFO
EXECUTION_INFO: {
name: "executionInfo";
type: "tuple";
components: readonly [{
name: "reservoirExecutionInfo";
type: "tuple";
components: readonly [{
name: "module";
type: "address";
}, {
name: "data";
type: "bytes";
}, {
name: "value";
type: "uint256";
}];
}, {
name: "contractMustBeOwner";
type: "bool";
}];
} = ...
Type declaration
-
Readonly
name: "executionInfo"
-
Readonly
type: "tuple"
-
Readonly
components: readonly [{
name: "reservoirExecutionInfo";
type: "tuple";
components: readonly [{
name: "module";
type: "address";
}, {
name: "data";
type: "bytes";
}, {
name: "value";
type: "uint256";
}];
}, {
name: "contractMustBeOwner";
type: "bool";
}]
abi
abi: readonly [{
type: "constructor";
inputs: readonly [{
name: "_multiSourceLoanAddress";
type: "address";
internalType: "address";
}, {
name: "_marketplaceContracts";
type: "address";
internalType: "address";
}, {
name: "_wethAddress";
type: "address";
internalType: "address payable";
}, {
name: "_punkMarketAddress";
type: "address";
internalType: "address payable";
}, {
name: "_wrappedPunkAddress";
type: "address";
internalType: "address payable";
}, {
name: "__taxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}, {
name: "_minWaitTime";
type: "uint256";
internalType: "uint256";
}, {
name: "__protocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "fallback";
stateMutability: "payable";
}, {
type: "receive";
stateMutability: "payable";
}, {
type: "function";
name: "FEE_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_WAIT_TIME";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "TAX_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "afterNFTTransfer";
inputs: readonly [{
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_executionData";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "afterPrincipalTransfer";
inputs: readonly [{
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_fee";
type: "uint256";
internalType: "uint256";
}, {
name: "_executionData";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "buy";
inputs: readonly [{
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [{
name: "";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Loan[]";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "payable";
}, {
type: "function";
name: "executeSell";
inputs: readonly [{
name: "_currencies";
type: "address[]";
internalType: "contract ERC20[]";
}, {
name: "_currencyAmounts";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "_collections";
type: "address[]";
internalType: "contract ERC721[]";
}, {
name: "_tokenIds";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "_marketPlace";
type: "address";
internalType: "address";
}, {
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "finalUpdateMultiSourceLoanAddress";
inputs: readonly [{
name: "_newAddress";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "getMultiSourceLoanAddress";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFeeSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingTaxes";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingTaxesSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getTaxes";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "onERC721Received";
inputs: readonly [{
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "owner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwnerTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "requestTransferOwner";
inputs: readonly [{
name: "_newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "sell";
inputs: readonly [{
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setProtocolFee";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setTaxes";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [{
name: "newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateMultiSourceLoanAddressFirst";
inputs: readonly [{
name: "_newAddress";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateProtocolFee";
inputs: readonly [{
name: "_newProtocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateTaxes";
inputs: readonly [{
name: "_newTaxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "event";
name: "BNPLLoansStarted";
inputs: readonly [{
name: "loanIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}];
anonymous: false;
}, {
type: "event";
name: "MultiSourceLoanPendingUpdate";
inputs: readonly [{
name: "newAddress";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "MultiSourceLoanUpdated";
inputs: readonly [{
name: "newAddress";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "OwnershipTransferred";
inputs: readonly [{
name: "user";
type: "address";
indexed: true;
internalType: "address";
}, {
name: "newOwner";
type: "address";
indexed: true;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeePendingUpdate";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeeUpdated";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "SellAndRepayExecuted";
inputs: readonly [{
name: "loanIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}];
anonymous: false;
}, {
type: "event";
name: "TaxesPendingUpdate";
inputs: readonly [{
name: "newTaxes";
type: "tuple";
indexed: false;
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
anonymous: false;
}, {
type: "event";
name: "TaxesUpdated";
inputs: readonly [{
name: "taxes";
type: "tuple";
indexed: false;
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
anonymous: false;
}, {
type: "event";
name: "TransferOwnerRequested";
inputs: readonly [{
name: "newOwner";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "error";
name: "AddressZeroError";
inputs: readonly [];
}, {
type: "error";
name: "CouldNotReturnEthError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidAddressUpdateError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCallbackError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidInputError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidTaxesError";
inputs: readonly [{
name: "newTaxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
}, {
type: "error";
name: "MarketplaceAddressNotWhitelisted";
inputs: readonly [];
}, {
type: "error";
name: "OnlyLoanCallableError";
inputs: readonly [];
}, {
type: "error";
name: "OnlyWethSupportedError";
inputs: readonly [];
}, {
type: "error";
name: "TooEarlyError";
inputs: readonly [{
name: "_pendingProtocolFeeSetTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "TooSoonError";
inputs: readonly [];
}]
address
address: `0x${string}`
contract
contract: GetContractReturnType<readonly [{
type: "constructor";
inputs: readonly [{
name: "_multiSourceLoanAddress";
type: "address";
internalType: "address";
}, {
name: "_marketplaceContracts";
type: "address";
internalType: "address";
}, {
name: "_wethAddress";
type: "address";
internalType: "address payable";
}, {
name: "_punkMarketAddress";
type: "address";
internalType: "address payable";
}, {
name: "_wrappedPunkAddress";
type: "address";
internalType: "address payable";
}, {
name: "__taxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}, {
name: "_minWaitTime";
type: "uint256";
internalType: "uint256";
}, {
name: "__protocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "fallback";
stateMutability: "payable";
}, {
type: "receive";
stateMutability: "payable";
}, {
type: "function";
name: "FEE_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_WAIT_TIME";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "TAX_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "afterNFTTransfer";
inputs: readonly [{
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_executionData";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "afterPrincipalTransfer";
inputs: readonly [{
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_fee";
type: "uint256";
internalType: "uint256";
}, {
name: "_executionData";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "buy";
inputs: readonly [{
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [{
name: "";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Loan[]";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "payable";
}, {
type: "function";
name: "executeSell";
inputs: readonly [{
name: "_currencies";
type: "address[]";
internalType: "contract ERC20[]";
}, {
name: "_currencyAmounts";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "_collections";
type: "address[]";
internalType: "contract ERC721[]";
}, {
name: "_tokenIds";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "_marketPlace";
type: "address";
internalType: "address";
}, {
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "finalUpdateMultiSourceLoanAddress";
inputs: readonly [{
name: "_newAddress";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "getMultiSourceLoanAddress";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFeeSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingTaxes";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingTaxesSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getTaxes";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "onERC721Received";
inputs: readonly [{
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "owner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwnerTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "requestTransferOwner";
inputs: readonly [{
name: "_newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "sell";
inputs: readonly [{
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setProtocolFee";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setTaxes";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [{
name: "newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateMultiSourceLoanAddressFirst";
inputs: readonly [{
name: "_newAddress";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateProtocolFee";
inputs: readonly [{
name: "_newProtocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateTaxes";
inputs: readonly [{
name: "_newTaxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "event";
name: "BNPLLoansStarted";
inputs: readonly [{
name: "loanIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}];
anonymous: false;
}, {
type: "event";
name: "MultiSourceLoanPendingUpdate";
inputs: readonly [{
name: "newAddress";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "MultiSourceLoanUpdated";
inputs: readonly [{
name: "newAddress";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "OwnershipTransferred";
inputs: readonly [{
name: "user";
type: "address";
indexed: true;
internalType: "address";
}, {
name: "newOwner";
type: "address";
indexed: true;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeePendingUpdate";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeeUpdated";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "SellAndRepayExecuted";
inputs: readonly [{
name: "loanIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}];
anonymous: false;
}, {
type: "event";
name: "TaxesPendingUpdate";
inputs: readonly [{
name: "newTaxes";
type: "tuple";
indexed: false;
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
anonymous: false;
}, {
type: "event";
name: "TaxesUpdated";
inputs: readonly [{
name: "taxes";
type: "tuple";
indexed: false;
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
anonymous: false;
}, {
type: "event";
name: "TransferOwnerRequested";
inputs: readonly [{
name: "newOwner";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "error";
name: "AddressZeroError";
inputs: readonly [];
}, {
type: "error";
name: "CouldNotReturnEthError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidAddressUpdateError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCallbackError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidInputError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidTaxesError";
inputs: readonly [{
name: "newTaxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
}, {
type: "error";
name: "MarketplaceAddressNotWhitelisted";
inputs: readonly [];
}, {
type: "error";
name: "OnlyLoanCallableError";
inputs: readonly [];
}, {
type: "error";
name: "OnlyWethSupportedError";
inputs: readonly [];
}, {
type: "error";
name: "TooEarlyError";
inputs: readonly [{
name: "_pendingProtocolFeeSetTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "TooSoonError";
inputs: readonly [];
}], {} | {}>
safeContractWrite
safeContractWrite: {
transferOwnership: ((args, options?) => Promise<`0x${string}`>);
onERC721Received: ((args, options?) => Promise<`0x${string}`>);
setProtocolFee: ((args, options?) => Promise<`0x${string}`>);
updateProtocolFee: ((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}`>);
sell: ((args, options?) => Promise<`0x${string}`>);
updateMultiSourceLoanAddressFirst: ((args, options?) => Promise<`0x${string}`>);
requestTransferOwner: ((args, options?) => Promise<`0x${string}`>);
executeSell: ((args, options?) => Promise<`0x${string}`>);
setTaxes: ((args, options?) => Promise<`0x${string}`>);
updateTaxes: ((args, options?) => Promise<`0x${string}`>);
}
Type declaration
-
transferOwnership: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: undefined | readonly [] | readonly [`0x${string}`]
-
Optional
options: {
value?: bigint;
}
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;
}
Returns Promise<`0x${string}`>
-
setProtocolFee: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: undefined | readonly []
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
updateProtocolFee: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [{
recipient: `0x${string}`;
fraction: bigint;
}] | readonly [{
recipient: `0x${string}`;
fraction: bigint;
}] & readonly [{
recipient: `0x${string}`;
fraction: bigint;
}]
-
Optional
options: {
value?: bigint;
}
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;
tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
protocolFee: bigint;
}, `0x${string}`] | readonly [{
borrower: `0x${string}`;
nftCollateralTokenId: bigint;
nftCollateralAddress: `0x${string}`;
principalAddress: `0x${string}`;
principalAmount: bigint;
startTime: bigint;
duration: bigint;
tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
protocolFee: bigint;
}, `0x${string}`] & readonly [{
borrower: `0x${string}`;
nftCollateralTokenId: bigint;
nftCollateralAddress: `0x${string}`;
principalAddress: `0x${string}`;
principalAmount: bigint;
startTime: bigint;
duration: bigint;
tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
protocolFee: bigint;
}, `0x${string}`]
-
Optional
options: {
value?: bigint;
}
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;
tranche: readonly ({ loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; })[];
protocolFee: bigint;
}, bigint, `0x${string}`] | readonly [{
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;
}, bigint, `0x${string}`] & readonly [{
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;
}, bigint, `0x${string}`]
-
Optional
options: {
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;
}
Returns Promise<`0x${string}`>
-
finalUpdateMultiSourceLoanAddress: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [`0x${string}`]
-
Optional
options: {
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;
}
Returns Promise<`0x${string}`>
-
updateMultiSourceLoanAddressFirst: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [`0x${string}`]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
requestTransferOwner: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [`0x${string}`]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
executeSell: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [readonly `0x${string}`[], readonly bigint[], readonly `0x${string}`[], readonly bigint[], `0x${string}`, readonly `0x${string}`[]] | readonly [readonly `0x${string}`[], readonly bigint[], readonly `0x${string}`[], readonly bigint[], `0x${string}`, readonly `0x${string}`[]] & readonly [readonly `0x${string}`[], readonly bigint[], readonly `0x${string}`[], readonly bigint[], `0x${string}`, readonly `0x${string}`[]]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
setTaxes: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: undefined | readonly []
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
-
updateTaxes: ((args, options?) => Promise<`0x${string}`>)
-
- (args, options?): Promise<`0x${string}`>
-
Parameters
-
args: readonly [{
buyTax: bigint;
sellTax: bigint;
}] | readonly [{
buyTax: bigint;
sellTax: bigint;
}] & readonly [{
buyTax: bigint;
sellTax: bigint;
}]
-
Optional
options: {
value?: bigint;
}
Returns Promise<`0x${string}`>
parseEventLogs
parseEventLogs: (<TFunctionName>(eventName, logs) => ParseEventLogsReturnType<readonly [{
type: "constructor";
inputs: readonly [{
name: "_multiSourceLoanAddress";
type: "address";
internalType: "address";
}, {
name: "_marketplaceContracts";
type: "address";
internalType: "address";
}, {
name: "_wethAddress";
type: "address";
internalType: "address payable";
}, {
name: "_punkMarketAddress";
type: "address";
internalType: "address payable";
}, {
name: "_wrappedPunkAddress";
type: "address";
internalType: "address payable";
}, {
name: "__taxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}, {
name: "_minWaitTime";
type: "uint256";
internalType: "uint256";
}, {
name: "__protocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "fallback";
stateMutability: "payable";
}, {
type: "receive";
stateMutability: "payable";
}, {
type: "function";
name: "FEE_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_WAIT_TIME";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "TAX_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "afterNFTTransfer";
inputs: readonly [{
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_executionData";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "afterPrincipalTransfer";
inputs: readonly [{
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_fee";
type: "uint256";
internalType: "uint256";
}, {
name: "_executionData";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "buy";
inputs: readonly [{
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [{
name: "";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Loan[]";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "payable";
}, {
type: "function";
name: "executeSell";
inputs: readonly [{
name: "_currencies";
type: "address[]";
internalType: "contract ERC20[]";
}, {
name: "_currencyAmounts";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "_collections";
type: "address[]";
internalType: "contract ERC721[]";
}, {
name: "_tokenIds";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "_marketPlace";
type: "address";
internalType: "address";
}, {
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "finalUpdateMultiSourceLoanAddress";
inputs: readonly [{
name: "_newAddress";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "getMultiSourceLoanAddress";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFeeSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingTaxes";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingTaxesSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getTaxes";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "onERC721Received";
inputs: readonly [{
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "owner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwnerTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "requestTransferOwner";
inputs: readonly [{
name: "_newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "sell";
inputs: readonly [{
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setProtocolFee";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setTaxes";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [{
name: "newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateMultiSourceLoanAddressFirst";
inputs: readonly [{
name: "_newAddress";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateProtocolFee";
inputs: readonly [{
name: "_newProtocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateTaxes";
inputs: readonly [{
name: "_newTaxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "event";
name: "BNPLLoansStarted";
inputs: readonly [{
name: "loanIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}];
anonymous: false;
}, {
type: "event";
name: "MultiSourceLoanPendingUpdate";
inputs: readonly [{
name: "newAddress";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "MultiSourceLoanUpdated";
inputs: readonly [{
name: "newAddress";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "OwnershipTransferred";
inputs: readonly [{
name: "user";
type: "address";
indexed: true;
internalType: "address";
}, {
name: "newOwner";
type: "address";
indexed: true;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeePendingUpdate";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeeUpdated";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "SellAndRepayExecuted";
inputs: readonly [{
name: "loanIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}];
anonymous: false;
}, {
type: "event";
name: "TaxesPendingUpdate";
inputs: readonly [{
name: "newTaxes";
type: "tuple";
indexed: false;
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
anonymous: false;
}, {
type: "event";
name: "TaxesUpdated";
inputs: readonly [{
name: "taxes";
type: "tuple";
indexed: false;
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
anonymous: false;
}, {
type: "event";
name: "TransferOwnerRequested";
inputs: readonly [{
name: "newOwner";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "error";
name: "AddressZeroError";
inputs: readonly [];
}, {
type: "error";
name: "CouldNotReturnEthError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidAddressUpdateError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCallbackError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidInputError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidTaxesError";
inputs: readonly [{
name: "newTaxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
}, {
type: "error";
name: "MarketplaceAddressNotWhitelisted";
inputs: readonly [];
}, {
type: "error";
name: "OnlyLoanCallableError";
inputs: readonly [];
}, {
type: "error";
name: "OnlyWethSupportedError";
inputs: readonly [];
}, {
type: "error";
name: "TooEarlyError";
inputs: readonly [{
name: "_pendingProtocolFeeSetTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "TooSoonError";
inputs: readonly [];
}], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "BNPLLoansStarted" | "MultiSourceLoanPendingUpdate" | "MultiSourceLoanUpdated" | "SellAndRepayExecuted" | "TransferOwnerRequested" | "TaxesPendingUpdate" | "TaxesUpdated")[]
? TFunctionName[number]
: TFunctionName>)
Type declaration
-
- <TFunctionName>(eventName, logs): ParseEventLogsReturnType<readonly [{
type: "constructor";
inputs: readonly [{
name: "_multiSourceLoanAddress";
type: "address";
internalType: "address";
}, {
name: "_marketplaceContracts";
type: "address";
internalType: "address";
}, {
name: "_wethAddress";
type: "address";
internalType: "address payable";
}, {
name: "_punkMarketAddress";
type: "address";
internalType: "address payable";
}, {
name: "_wrappedPunkAddress";
type: "address";
internalType: "address payable";
}, {
name: "__taxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}, {
name: "_minWaitTime";
type: "uint256";
internalType: "uint256";
}, {
name: "__protocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "fallback";
stateMutability: "payable";
}, {
type: "receive";
stateMutability: "payable";
}, {
type: "function";
name: "FEE_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_WAIT_TIME";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "TAX_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "afterNFTTransfer";
inputs: readonly [{
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_executionData";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "afterPrincipalTransfer";
inputs: readonly [{
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_fee";
type: "uint256";
internalType: "uint256";
}, {
name: "_executionData";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "buy";
inputs: readonly [{
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [{
name: "";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Loan[]";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "payable";
}, {
type: "function";
name: "executeSell";
inputs: readonly [{
name: "_currencies";
type: "address[]";
internalType: "contract ERC20[]";
}, {
name: "_currencyAmounts";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "_collections";
type: "address[]";
internalType: "contract ERC721[]";
}, {
name: "_tokenIds";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "_marketPlace";
type: "address";
internalType: "address";
}, {
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "finalUpdateMultiSourceLoanAddress";
inputs: readonly [{
name: "_newAddress";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "getMultiSourceLoanAddress";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFeeSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingTaxes";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingTaxesSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getTaxes";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "onERC721Received";
inputs: readonly [{
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "owner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwnerTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "requestTransferOwner";
inputs: readonly [{
name: "_newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "sell";
inputs: readonly [{
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setProtocolFee";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setTaxes";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [{
name: "newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateMultiSourceLoanAddressFirst";
inputs: readonly [{
name: "_newAddress";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateProtocolFee";
inputs: readonly [{
name: "_newProtocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateTaxes";
inputs: readonly [{
name: "_newTaxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "event";
name: "BNPLLoansStarted";
inputs: readonly [{
name: "loanIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}];
anonymous: false;
}, {
type: "event";
name: "MultiSourceLoanPendingUpdate";
inputs: readonly [{
name: "newAddress";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "MultiSourceLoanUpdated";
inputs: readonly [{
name: "newAddress";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "OwnershipTransferred";
inputs: readonly [{
name: "user";
type: "address";
indexed: true;
internalType: "address";
}, {
name: "newOwner";
type: "address";
indexed: true;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeePendingUpdate";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeeUpdated";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "SellAndRepayExecuted";
inputs: readonly [{
name: "loanIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}];
anonymous: false;
}, {
type: "event";
name: "TaxesPendingUpdate";
inputs: readonly [{
name: "newTaxes";
type: "tuple";
indexed: false;
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
anonymous: false;
}, {
type: "event";
name: "TaxesUpdated";
inputs: readonly [{
name: "taxes";
type: "tuple";
indexed: false;
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
anonymous: false;
}, {
type: "event";
name: "TransferOwnerRequested";
inputs: readonly [{
name: "newOwner";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "error";
name: "AddressZeroError";
inputs: readonly [];
}, {
type: "error";
name: "CouldNotReturnEthError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidAddressUpdateError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCallbackError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidInputError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidTaxesError";
inputs: readonly [{
name: "newTaxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
}, {
type: "error";
name: "MarketplaceAddressNotWhitelisted";
inputs: readonly [];
}, {
type: "error";
name: "OnlyLoanCallableError";
inputs: readonly [];
}, {
type: "error";
name: "OnlyWethSupportedError";
inputs: readonly [];
}, {
type: "error";
name: "TooEarlyError";
inputs: readonly [{
name: "_pendingProtocolFeeSetTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "TooSoonError";
inputs: readonly [];
}], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "BNPLLoansStarted" | "MultiSourceLoanPendingUpdate" | "MultiSourceLoanUpdated" | "SellAndRepayExecuted" | "TransferOwnerRequested" | "TaxesPendingUpdate" | "TaxesUpdated")[]
? TFunctionName[number]
: TFunctionName>
-
Type Parameters
-
TFunctionName extends "OwnershipTransferred" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "BNPLLoansStarted" | "MultiSourceLoanPendingUpdate" | "MultiSourceLoanUpdated" | "SellAndRepayExecuted" | "TransferOwnerRequested" | "TaxesPendingUpdate" | "TaxesUpdated"
Parameters
-
eventName: TFunctionName
-
logs: Log<bigint, number, false>[]
Returns ParseEventLogsReturnType<readonly [{
type: "constructor";
inputs: readonly [{
name: "_multiSourceLoanAddress";
type: "address";
internalType: "address";
}, {
name: "_marketplaceContracts";
type: "address";
internalType: "address";
}, {
name: "_wethAddress";
type: "address";
internalType: "address payable";
}, {
name: "_punkMarketAddress";
type: "address";
internalType: "address payable";
}, {
name: "_wrappedPunkAddress";
type: "address";
internalType: "address payable";
}, {
name: "__taxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}, {
name: "_minWaitTime";
type: "uint256";
internalType: "uint256";
}, {
name: "__protocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "nonpayable";
}, {
type: "fallback";
stateMutability: "payable";
}, {
type: "receive";
stateMutability: "payable";
}, {
type: "function";
name: "FEE_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "MIN_WAIT_TIME";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "TAX_UPDATE_NOTICE";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "afterNFTTransfer";
inputs: readonly [{
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_executionData";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "afterPrincipalTransfer";
inputs: readonly [{
name: "_loan";
type: "tuple";
internalType: "struct IMultiSourceLoan.Loan";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "_fee";
type: "uint256";
internalType: "uint256";
}, {
name: "_executionData";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "buy";
inputs: readonly [{
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [{
name: "";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Loan[]";
components: readonly [{
name: "borrower";
type: "address";
internalType: "address";
}, {
name: "nftCollateralTokenId";
type: "uint256";
internalType: "uint256";
}, {
name: "nftCollateralAddress";
type: "address";
internalType: "address";
}, {
name: "principalAddress";
type: "address";
internalType: "address";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "duration";
type: "uint256";
internalType: "uint256";
}, {
name: "tranche";
type: "tuple[]";
internalType: "struct IMultiSourceLoan.Tranche[]";
components: readonly [{
name: "loanId";
type: "uint256";
internalType: "uint256";
}, {
name: "floor";
type: "uint256";
internalType: "uint256";
}, {
name: "principalAmount";
type: "uint256";
internalType: "uint256";
}, {
name: "lender";
type: "address";
internalType: "address";
}, {
name: "accruedInterest";
type: "uint256";
internalType: "uint256";
}, {
name: "startTime";
type: "uint256";
internalType: "uint256";
}, {
name: "aprBps";
type: "uint256";
internalType: "uint256";
}];
}, {
name: "protocolFee";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "payable";
}, {
type: "function";
name: "executeSell";
inputs: readonly [{
name: "_currencies";
type: "address[]";
internalType: "contract ERC20[]";
}, {
name: "_currencyAmounts";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "_collections";
type: "address[]";
internalType: "contract ERC721[]";
}, {
name: "_tokenIds";
type: "uint256[]";
internalType: "uint256[]";
}, {
name: "_marketPlace";
type: "address";
internalType: "address";
}, {
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "finalUpdateMultiSourceLoanAddress";
inputs: readonly [{
name: "_newAddress";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "getMultiSourceLoanAddress";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingProtocolFeeSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingTaxes";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getPendingTaxesSetTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "getProtocolFee";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "getTaxes";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
stateMutability: "view";
}, {
type: "function";
name: "onERC721Received";
inputs: readonly [{
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "address";
internalType: "address";
}, {
name: "";
type: "uint256";
internalType: "uint256";
}, {
name: "";
type: "bytes";
internalType: "bytes";
}];
outputs: readonly [{
name: "";
type: "bytes4";
internalType: "bytes4";
}];
stateMutability: "nonpayable";
}, {
type: "function";
name: "owner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwner";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "address";
internalType: "address";
}];
stateMutability: "view";
}, {
type: "function";
name: "pendingOwnerTime";
inputs: readonly [];
outputs: readonly [{
name: "";
type: "uint256";
internalType: "uint256";
}];
stateMutability: "view";
}, {
type: "function";
name: "requestTransferOwner";
inputs: readonly [{
name: "_newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "sell";
inputs: readonly [{
name: "_executionData";
type: "bytes[]";
internalType: "bytes[]";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setProtocolFee";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "setTaxes";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "transferOwnership";
inputs: readonly [{
name: "newOwner";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateMultiSourceLoanAddressFirst";
inputs: readonly [{
name: "_newAddress";
type: "address";
internalType: "address";
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateProtocolFee";
inputs: readonly [{
name: "_newProtocolFee";
type: "tuple";
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "function";
name: "updateTaxes";
inputs: readonly [{
name: "_newTaxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
outputs: readonly [];
stateMutability: "nonpayable";
}, {
type: "event";
name: "BNPLLoansStarted";
inputs: readonly [{
name: "loanIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}];
anonymous: false;
}, {
type: "event";
name: "MultiSourceLoanPendingUpdate";
inputs: readonly [{
name: "newAddress";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "MultiSourceLoanUpdated";
inputs: readonly [{
name: "newAddress";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "OwnershipTransferred";
inputs: readonly [{
name: "user";
type: "address";
indexed: true;
internalType: "address";
}, {
name: "newOwner";
type: "address";
indexed: true;
internalType: "address";
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeePendingUpdate";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "ProtocolFeeUpdated";
inputs: readonly [{
name: "fee";
type: "tuple";
indexed: false;
internalType: "struct WithProtocolFee.ProtocolFee";
components: readonly [{
name: "recipient";
type: "address";
internalType: "address";
}, {
name: "fraction";
type: "uint256";
internalType: "uint256";
}];
}];
anonymous: false;
}, {
type: "event";
name: "SellAndRepayExecuted";
inputs: readonly [{
name: "loanIds";
type: "uint256[]";
indexed: false;
internalType: "uint256[]";
}];
anonymous: false;
}, {
type: "event";
name: "TaxesPendingUpdate";
inputs: readonly [{
name: "newTaxes";
type: "tuple";
indexed: false;
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
anonymous: false;
}, {
type: "event";
name: "TaxesUpdated";
inputs: readonly [{
name: "taxes";
type: "tuple";
indexed: false;
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
anonymous: false;
}, {
type: "event";
name: "TransferOwnerRequested";
inputs: readonly [{
name: "newOwner";
type: "address";
indexed: false;
internalType: "address";
}];
anonymous: false;
}, {
type: "error";
name: "AddressZeroError";
inputs: readonly [];
}, {
type: "error";
name: "CouldNotReturnEthError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidAddressUpdateError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidCallbackError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidInputError";
inputs: readonly [];
}, {
type: "error";
name: "InvalidTaxesError";
inputs: readonly [{
name: "newTaxes";
type: "tuple";
internalType: "struct IPurchaseBundler.Taxes";
components: readonly [{
name: "buyTax";
type: "uint128";
internalType: "uint128";
}, {
name: "sellTax";
type: "uint128";
internalType: "uint128";
}];
}];
}, {
type: "error";
name: "MarketplaceAddressNotWhitelisted";
inputs: readonly [];
}, {
type: "error";
name: "OnlyLoanCallableError";
inputs: readonly [];
}, {
type: "error";
name: "OnlyWethSupportedError";
inputs: readonly [];
}, {
type: "error";
name: "TooEarlyError";
inputs: readonly [{
name: "_pendingProtocolFeeSetTime";
type: "uint256";
internalType: "uint256";
}];
}, {
type: "error";
name: "TooSoonError";
inputs: readonly [];
}], TFunctionName, true, TFunctionName extends ("OwnershipTransferred" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "BNPLLoansStarted" | "MultiSourceLoanPendingUpdate" | "MultiSourceLoanUpdated" | "SellAndRepayExecuted" | "TransferOwnerRequested" | "TaxesPendingUpdate" | "TaxesUpdated")[]
? TFunctionName[number]
: TFunctionName>