Class PurchaseBundler

Hierarchy

Constructors

Methods

  • Parameters

    • __namedParameters: {
          emitCalldata: `0x${string}`;
          value: bigint;
      }
      • emitCalldata: `0x${string}`
      • value: bigint

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

  • Parameters

    • __namedParameters: {
          repaymentCalldata: `0x${string}`;
      }
      • repaymentCalldata: `0x${string}`

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

  • Parameters

    • __namedParameters: {
          repaymentCalldata: `0x${string}`;
          price: bigint;
      }
      • repaymentCalldata: `0x${string}`
      • price: bigint

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

  • Parameters

    • __namedParameters: {
          repaymentCalldata: `0x${string}`;
          emitCalldata: `0x${string}`;
          price: bigint;
      }
      • repaymentCalldata: `0x${string}`
      • emitCalldata: `0x${string}`
      • price: bigint

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

  • Parameters

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

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

Properties

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";
    }]
msl: MslV6 | MslV5
abi: readonly [{
    type: "constructor";
    inputs: readonly [{
        name: "name";
        type: "string";
        internalType: "string";
    }, {
        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: "c721Address";
        type: "address";
        internalType: "address payable";
    }, {
        name: "uniswapRouterAddress";
        type: "address";
        internalType: "address payable";
    }, {
        name: "currencyManager";
        type: "address";
        internalType: "address";
    }, {
        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: "DOMAIN_SEPARATOR";
    inputs: readonly [];
    outputs: readonly [{
        name: "";
        type: "bytes32";
        internalType: "bytes32";
    }];
    stateMutability: "view";
}, {
    type: "function";
    name: "FEE_UPDATE_NOTICE";
    inputs: readonly [];
    outputs: readonly [{
        name: "";
        type: "uint256";
        internalType: "uint256";
    }];
    stateMutability: "view";
}, {
    type: "function";
    name: "INITIAL_DOMAIN_SEPARATOR";
    inputs: readonly [];
    outputs: readonly [{
        name: "";
        type: "bytes32";
        internalType: "bytes32";
    }];
    stateMutability: "view";
}, {
    type: "function";
    name: "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: "VERSION";
    inputs: readonly [];
    outputs: readonly [{
        name: "";
        type: "bytes";
        internalType: "bytes";
    }];
    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: "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: "source";
            type: "tuple[]";
            internalType: "struct IMultiSourceLoan.Source[]";
            components: readonly [{
                name: "loanId";
                type: "uint256";
                internalType: "uint256";
            }, {
                name: "lender";
                type: "address";
                internalType: "address";
            }, {
                name: "principalAmount";
                type: "uint256";
                internalType: "uint256";
            }, {
                name: "accruedInterest";
                type: "uint256";
                internalType: "uint256";
            }, {
                name: "startTime";
                type: "uint256";
                internalType: "uint256";
            }, {
                name: "aprBps";
                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: "source";
            type: "tuple[]";
            internalType: "struct IMultiSourceLoan.Source[]";
            components: readonly [{
                name: "loanId";
                type: "uint256";
                internalType: "uint256";
            }, {
                name: "lender";
                type: "address";
                internalType: "address";
            }, {
                name: "principalAmount";
                type: "uint256";
                internalType: "uint256";
            }, {
                name: "accruedInterest";
                type: "uint256";
                internalType: "uint256";
            }, {
                name: "startTime";
                type: "uint256";
                internalType: "uint256";
            }, {
                name: "aprBps";
                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: "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: "approveForSwap";
    inputs: readonly [{
        name: "currency";
        type: "address";
        internalType: "address";
    }];
    outputs: readonly [];
    stateMutability: "nonpayable";
}, {
    type: "function";
    name: "buy";
    inputs: readonly [{
        name: "executionData";
        type: "bytes[]";
        internalType: "bytes[]";
    }];
    outputs: readonly [{
        name: "loanIds";
        type: "uint256[]";
        internalType: "uint256[]";
    }];
    stateMutability: "payable";
}, {
    type: "function";
    name: "cancelAllOrders";
    inputs: readonly [{
        name: "nonce";
        type: "uint256";
        internalType: "uint256";
    }];
    outputs: readonly [];
    stateMutability: "nonpayable";
}, {
    type: "function";
    name: "cancelOrder";
    inputs: readonly [{
        name: "nonce";
        type: "uint256";
        internalType: "uint256";
    }];
    outputs: readonly [];
    stateMutability: "nonpayable";
}, {
    type: "function";
    name: "cancelled";
    inputs: readonly [{
        name: "";
        type: "address";
        internalType: "address";
    }, {
        name: "";
        type: "uint256";
        internalType: "uint256";
    }];
    outputs: readonly [{
        name: "";
        type: "bool";
        internalType: "bool";
    }];
    stateMutability: "view";
}, {
    type: "function";
    name: "executeOperation";
    inputs: readonly [{
        name: "assets";
        type: "address[]";
        internalType: "address[]";
    }, {
        name: "amounts";
        type: "uint256[]";
        internalType: "uint256[]";
    }, {
        name: "premiums";
        type: "uint256[]";
        internalType: "uint256[]";
    }, {
        name: "";
        type: "address";
        internalType: "address";
    }, {
        name: "params";
        type: "bytes";
        internalType: "bytes";
    }];
    outputs: readonly [{
        name: "";
        type: "bool";
        internalType: "bool";
    }];
    stateMutability: "nonpayable";
}, {
    type: "function";
    name: "executeOrder";
    inputs: readonly [{
        name: "order";
        type: "tuple";
        internalType: "struct ITradeMarketplace.Order";
        components: readonly [{
            name: "maker";
            type: "address";
            internalType: "address";
        }, {
            name: "taker";
            type: "address";
            internalType: "address";
        }, {
            name: "collection";
            type: "address";
            internalType: "address";
        }, {
            name: "tokenId";
            type: "uint256";
            internalType: "uint256";
        }, {
            name: "currency";
            type: "address";
            internalType: "address";
        }, {
            name: "price";
            type: "uint256";
            internalType: "uint256";
        }, {
            name: "nonce";
            type: "uint256";
            internalType: "uint256";
        }, {
            name: "expiration";
            type: "uint256";
            internalType: "uint256";
        }, {
            name: "isAsk";
            type: "bool";
            internalType: "bool";
        }, {
            name: "signature";
            type: "bytes";
            internalType: "bytes";
        }];
    }];
    outputs: readonly [];
    stateMutability: "nonpayable";
}, {
    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: "executeSellWithETH";
    inputs: readonly [{
        name: "wethPrincipalSwapData";
        type: "bytes";
        internalType: "bytes";
    }, {
        name: "principal";
        type: "address";
        internalType: "contract ERC20";
    }, {
        name: "collection";
        type: "address";
        internalType: "contract ERC721";
    }, {
        name: "tokenId";
        type: "uint256";
        internalType: "uint256";
    }, {
        name: "executionData";
        type: "bytes[]";
        internalType: "bytes[]";
    }];
    outputs: readonly [];
    stateMutability: "payable";
}, {
    type: "function";
    name: "executeSellWithLoan";
    inputs: readonly [{
        name: "args";
        type: "tuple";
        internalType: "struct IPurchaseBundler.ExecuteSellWithLoanArgs";
        components: readonly [{
            name: "borrowArgs";
            type: "tuple";
            internalType: "struct IPurchaseBundler.AaveBorrowArgs";
            components: readonly [{
                name: "pool";
                type: "address";
                internalType: "contract IPool";
            }, {
                name: "assets";
                type: "address[]";
                internalType: "address[]";
            }, {
                name: "amounts";
                type: "uint256[]";
                internalType: "uint256[]";
            }];
        }, {
            name: "executeSellArgs";
            type: "tuple";
            internalType: "struct IPurchaseBundler.ExecuteSellArgs";
            components: 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[]";
            }];
        }, {
            name: "loanExecutionData";
            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: "isOrderCancelled";
    inputs: readonly [{
        name: "order";
        type: "tuple";
        internalType: "struct ITradeMarketplace.Order";
        components: readonly [{
            name: "maker";
            type: "address";
            internalType: "address";
        }, {
            name: "taker";
            type: "address";
            internalType: "address";
        }, {
            name: "collection";
            type: "address";
            internalType: "address";
        }, {
            name: "tokenId";
            type: "uint256";
            internalType: "uint256";
        }, {
            name: "currency";
            type: "address";
            internalType: "address";
        }, {
            name: "price";
            type: "uint256";
            internalType: "uint256";
        }, {
            name: "nonce";
            type: "uint256";
            internalType: "uint256";
        }, {
            name: "expiration";
            type: "uint256";
            internalType: "uint256";
        }, {
            name: "isAsk";
            type: "bool";
            internalType: "bool";
        }, {
            name: "signature";
            type: "bytes";
            internalType: "bytes";
        }];
    }];
    outputs: readonly [{
        name: "";
        type: "bool";
        internalType: "bool";
    }];
    stateMutability: "view";
}, {
    type: "function";
    name: "minNonce";
    inputs: readonly [{
        name: "";
        type: "address";
        internalType: "address";
    }];
    outputs: readonly [{
        name: "";
        type: "uint256";
        internalType: "uint256";
    }];
    stateMutability: "view";
}, {
    type: "function";
    name: "name";
    inputs: readonly [];
    outputs: readonly [{
        name: "";
        type: "string";
        internalType: "string";
    }];
    stateMutability: "view";
}, {
    type: "function";
    name: "onERC721Received";
    inputs: readonly [{
        name: "";
        type: "address";
        internalType: "address";
    }, {
        name: "";
        type: "address";
        internalType: "address";
    }, {
        name: "";
        type: "uint256";
        internalType: "uint256";
    }, {
        name: "";
        type: "bytes";
        internalType: "bytes";
    }];
    outputs: readonly [{
        name: "";
        type: "bytes4";
        internalType: "bytes4";
    }];
    stateMutability: "nonpayable";
}, {
    type: "function";
    name: "orderHash";
    inputs: readonly [{
        name: "order";
        type: "tuple";
        internalType: "struct ITradeMarketplace.Order";
        components: readonly [{
            name: "maker";
            type: "address";
            internalType: "address";
        }, {
            name: "taker";
            type: "address";
            internalType: "address";
        }, {
            name: "collection";
            type: "address";
            internalType: "address";
        }, {
            name: "tokenId";
            type: "uint256";
            internalType: "uint256";
        }, {
            name: "currency";
            type: "address";
            internalType: "address";
        }, {
            name: "price";
            type: "uint256";
            internalType: "uint256";
        }, {
            name: "nonce";
            type: "uint256";
            internalType: "uint256";
        }, {
            name: "expiration";
            type: "uint256";
            internalType: "uint256";
        }, {
            name: "isAsk";
            type: "bool";
            internalType: "bool";
        }, {
            name: "signature";
            type: "bytes";
            internalType: "bytes";
        }];
    }];
    outputs: readonly [{
        name: "";
        type: "bytes32";
        internalType: "bytes32";
    }];
    stateMutability: "pure";
}, {
    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: "AllOrdersCancelled";
    inputs: readonly [{
        name: "user";
        type: "address";
        indexed: true;
        internalType: "address";
    }, {
        name: "nonce";
        type: "uint256";
        indexed: false;
        internalType: "uint256";
    }];
    anonymous: false;
}, {
    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: "OrderExecuted";
    inputs: readonly [{
        name: "maker";
        type: "address";
        indexed: true;
        internalType: "address";
    }, {
        name: "taker";
        type: "address";
        indexed: true;
        internalType: "address";
    }, {
        name: "collection";
        type: "address";
        indexed: true;
        internalType: "address";
    }, {
        name: "tokenId";
        type: "uint256";
        indexed: false;
        internalType: "uint256";
    }, {
        name: "currency";
        type: "address";
        indexed: false;
        internalType: "address";
    }, {
        name: "price";
        type: "uint256";
        indexed: false;
        internalType: "uint256";
    }, {
        name: "nonce";
        type: "uint256";
        indexed: false;
        internalType: "uint256";
    }, {
        name: "expiration";
        type: "uint256";
        indexed: false;
        internalType: "uint256";
    }, {
        name: "isAsk";
        type: "bool";
        indexed: false;
        internalType: "bool";
    }];
    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: "ECDSAInvalidSignature";
    inputs: readonly [];
}, {
    type: "error";
    name: "ECDSAInvalidSignatureLength";
    inputs: readonly [{
        name: "length";
        type: "uint256";
        internalType: "uint256";
    }];
}, {
    type: "error";
    name: "ECDSAInvalidSignatureS";
    inputs: readonly [{
        name: "s";
        type: "bytes32";
        internalType: "bytes32";
    }];
}, {
    type: "error";
    name: "InvalidAddressUpdateError";
    inputs: readonly [];
}, {
    type: "error";
    name: "InvalidCallbackError";
    inputs: readonly [];
}, {
    type: "error";
    name: "InvalidInputError";
    inputs: readonly [];
}, {
    type: "error";
    name: "InvalidSignature";
    inputs: readonly [];
}, {
    type: "error";
    name: "InvalidTaker";
    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: "LowNonceError";
    inputs: readonly [{
        name: "user";
        type: "address";
        internalType: "address";
    }, {
        name: "nonce";
        type: "uint256";
        internalType: "uint256";
    }, {
        name: "currentMinNonce";
        type: "uint256";
        internalType: "uint256";
    }];
}, {
    type: "error";
    name: "MarketplaceAddressNotWhitelisted";
    inputs: readonly [];
}, {
    type: "error";
    name: "OnlyLoanCallableError";
    inputs: readonly [];
}, {
    type: "error";
    name: "OnlyWethSupportedError";
    inputs: readonly [];
}, {
    type: "error";
    name: "OrderCancelled";
    inputs: readonly [];
}, {
    type: "error";
    name: "OrderExpired";
    inputs: readonly [];
}, {
    type: "error";
    name: "TooEarlyError";
    inputs: readonly [{
        name: "_pendingProtocolFeeSetTime";
        type: "uint256";
        internalType: "uint256";
    }];
}, {
    type: "error";
    name: "TooSoonError";
    inputs: readonly [];
}]
address: `0x${string}`
bcClient: {}

Type declaration

    wallet: {}

    Type declaration

      contract: GetContractReturnType<readonly [{
          type: "constructor";
          inputs: readonly [{
              name: "name";
              type: "string";
              internalType: "string";
          }, {
              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: "c721Address";
              type: "address";
              internalType: "address payable";
          }, {
              name: "uniswapRouterAddress";
              type: "address";
              internalType: "address payable";
          }, {
              name: "currencyManager";
              type: "address";
              internalType: "address";
          }, {
              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: "DOMAIN_SEPARATOR";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "bytes32";
              internalType: "bytes32";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "FEE_UPDATE_NOTICE";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "INITIAL_DOMAIN_SEPARATOR";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "bytes32";
              internalType: "bytes32";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "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: "VERSION";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "bytes";
              internalType: "bytes";
          }];
          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: "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: "source";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      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: "source";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      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: "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: "approveForSwap";
          inputs: readonly [{
              name: "currency";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "buy";
          inputs: readonly [{
              name: "executionData";
              type: "bytes[]";
              internalType: "bytes[]";
          }];
          outputs: readonly [{
              name: "loanIds";
              type: "uint256[]";
              internalType: "uint256[]";
          }];
          stateMutability: "payable";
      }, {
          type: "function";
          name: "cancelAllOrders";
          inputs: readonly [{
              name: "nonce";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "cancelOrder";
          inputs: readonly [{
              name: "nonce";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "cancelled";
          inputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }, {
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [{
              name: "";
              type: "bool";
              internalType: "bool";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "executeOperation";
          inputs: readonly [{
              name: "assets";
              type: "address[]";
              internalType: "address[]";
          }, {
              name: "amounts";
              type: "uint256[]";
              internalType: "uint256[]";
          }, {
              name: "premiums";
              type: "uint256[]";
              internalType: "uint256[]";
          }, {
              name: "";
              type: "address";
              internalType: "address";
          }, {
              name: "params";
              type: "bytes";
              internalType: "bytes";
          }];
          outputs: readonly [{
              name: "";
              type: "bool";
              internalType: "bool";
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "executeOrder";
          inputs: readonly [{
              name: "order";
              type: "tuple";
              internalType: "struct ITradeMarketplace.Order";
              components: readonly [{
                  name: "maker";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "taker";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "collection";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "currency";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "price";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nonce";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "expiration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "isAsk";
                  type: "bool";
                  internalType: "bool";
              }, {
                  name: "signature";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          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: "executeSellWithETH";
          inputs: readonly [{
              name: "wethPrincipalSwapData";
              type: "bytes";
              internalType: "bytes";
          }, {
              name: "principal";
              type: "address";
              internalType: "contract ERC20";
          }, {
              name: "collection";
              type: "address";
              internalType: "contract ERC721";
          }, {
              name: "tokenId";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "executionData";
              type: "bytes[]";
              internalType: "bytes[]";
          }];
          outputs: readonly [];
          stateMutability: "payable";
      }, {
          type: "function";
          name: "executeSellWithLoan";
          inputs: readonly [{
              name: "args";
              type: "tuple";
              internalType: "struct IPurchaseBundler.ExecuteSellWithLoanArgs";
              components: readonly [{
                  name: "borrowArgs";
                  type: "tuple";
                  internalType: "struct IPurchaseBundler.AaveBorrowArgs";
                  components: readonly [{
                      name: "pool";
                      type: "address";
                      internalType: "contract IPool";
                  }, {
                      name: "assets";
                      type: "address[]";
                      internalType: "address[]";
                  }, {
                      name: "amounts";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }];
              }, {
                  name: "executeSellArgs";
                  type: "tuple";
                  internalType: "struct IPurchaseBundler.ExecuteSellArgs";
                  components: 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[]";
                  }];
              }, {
                  name: "loanExecutionData";
                  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: "isOrderCancelled";
          inputs: readonly [{
              name: "order";
              type: "tuple";
              internalType: "struct ITradeMarketplace.Order";
              components: readonly [{
                  name: "maker";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "taker";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "collection";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "currency";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "price";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nonce";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "expiration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "isAsk";
                  type: "bool";
                  internalType: "bool";
              }, {
                  name: "signature";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }];
          outputs: readonly [{
              name: "";
              type: "bool";
              internalType: "bool";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "minNonce";
          inputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "name";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "string";
              internalType: "string";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "onERC721Received";
          inputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }, {
              name: "";
              type: "address";
              internalType: "address";
          }, {
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "bytes";
              internalType: "bytes";
          }];
          outputs: readonly [{
              name: "";
              type: "bytes4";
              internalType: "bytes4";
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "orderHash";
          inputs: readonly [{
              name: "order";
              type: "tuple";
              internalType: "struct ITradeMarketplace.Order";
              components: readonly [{
                  name: "maker";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "taker";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "collection";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "currency";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "price";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nonce";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "expiration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "isAsk";
                  type: "bool";
                  internalType: "bool";
              }, {
                  name: "signature";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }];
          outputs: readonly [{
              name: "";
              type: "bytes32";
              internalType: "bytes32";
          }];
          stateMutability: "pure";
      }, {
          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: "AllOrdersCancelled";
          inputs: readonly [{
              name: "user";
              type: "address";
              indexed: true;
              internalType: "address";
          }, {
              name: "nonce";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          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: "OrderExecuted";
          inputs: readonly [{
              name: "maker";
              type: "address";
              indexed: true;
              internalType: "address";
          }, {
              name: "taker";
              type: "address";
              indexed: true;
              internalType: "address";
          }, {
              name: "collection";
              type: "address";
              indexed: true;
              internalType: "address";
          }, {
              name: "tokenId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "currency";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "price";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "nonce";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "expiration";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "isAsk";
              type: "bool";
              indexed: false;
              internalType: "bool";
          }];
          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: "ECDSAInvalidSignature";
          inputs: readonly [];
      }, {
          type: "error";
          name: "ECDSAInvalidSignatureLength";
          inputs: readonly [{
              name: "length";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "ECDSAInvalidSignatureS";
          inputs: readonly [{
              name: "s";
              type: "bytes32";
              internalType: "bytes32";
          }];
      }, {
          type: "error";
          name: "InvalidAddressUpdateError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidCallbackError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidInputError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidSignature";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidTaker";
          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: "LowNonceError";
          inputs: readonly [{
              name: "user";
              type: "address";
              internalType: "address";
          }, {
              name: "nonce";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "currentMinNonce";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "MarketplaceAddressNotWhitelisted";
          inputs: readonly [];
      }, {
          type: "error";
          name: "OnlyLoanCallableError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "OnlyWethSupportedError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "OrderCancelled";
          inputs: readonly [];
      }, {
          type: "error";
          name: "OrderExpired";
          inputs: readonly [];
      }, {
          type: "error";
          name: "TooEarlyError";
          inputs: readonly [{
              name: "_pendingProtocolFeeSetTime";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "TooSoonError";
          inputs: readonly [];
      }], {} | {}>
      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}`>);
          approveForSwap: ((args, options?) => Promise<`0x${string}`>);
          cancelAllOrders: ((args, options?) => Promise<`0x${string}`>);
          cancelOrder: ((args, options?) => Promise<`0x${string}`>);
          executeOperation: ((args, options?) => Promise<`0x${string}`>);
          executeOrder: ((args, options?) => Promise<`0x${string}`>);
          executeSellWithETH: ((args, options?) => Promise<`0x${string}`>);
          executeSellWithLoan: ((args, options?) => Promise<`0x${string}`>);
      }

      Type declaration

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            • args: Object
            • 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}`>

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

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

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

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

      • 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;
              }
              • Optional 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;
              }
              • Optional 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;
              }
              • Optional value?: bigint

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

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

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

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

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

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

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

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

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

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

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

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

            • args: readonly [{
                  maker: `0x${string}`;
                  taker: `0x${string}`;
                  collection: `0x${string}`;
                  tokenId: bigint;
                  currency: `0x${string}`;
                  price: bigint;
                  nonce: bigint;
                  expiration: bigint;
                  isAsk: Widen<boolean>;
                  signature: `0x${string}`;
              }] | readonly [{
                  maker: `0x${string}`;
                  taker: `0x${string}`;
                  collection: `0x${string}`;
                  tokenId: bigint;
                  currency: `0x${string}`;
                  price: bigint;
                  nonce: bigint;
                  expiration: bigint;
                  isAsk: boolean;
                  signature: `0x${string}`;
              }] & readonly [{
                  maker: `0x${string}`;
                  taker: `0x${string}`;
                  collection: `0x${string}`;
                  tokenId: bigint;
                  currency: `0x${string}`;
                  price: bigint;
                  nonce: bigint;
                  expiration: bigint;
                  isAsk: Widen<boolean>;
                  signature: `0x${string}`;
              }]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

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

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

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

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

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

            • args: readonly [{
                  borrowArgs: { pool: `0x${string}`; assets: readonly `0x${string}`[]; amounts: readonly bigint[]; };
                  executeSellArgs: { currencies: readonly `0x${string}`[]; currencyAmounts: readonly bigint[]; collections: readonly `0x${string}`[]; tokenIds: readonly bigint[]; marketPlace: `0x${string}`; executionData: readonly `0x${string}`[]; };
                  loanExecutionData: readonly `0x${string}`[];
              }] | readonly [{
                  borrowArgs: { pool: `0x${string}`; assets: readonly `0x${string}`[]; amounts: readonly bigint[]; };
                  executeSellArgs: { currencies: readonly `0x${string}`[]; currencyAmounts: readonly bigint[]; collections: readonly `0x${string}`[]; tokenIds: readonly bigint[]; marketPlace: `0x${string}`; executionData: readonly `0x${string}`[]; };
                  loanExecutionData: readonly `0x${string}`[];
              }] & readonly [{
                  borrowArgs: { pool: `0x${string}`; assets: readonly `0x${string}`[]; amounts: readonly bigint[]; };
                  executeSellArgs: { currencies: readonly `0x${string}`[]; currencyAmounts: readonly bigint[]; collections: readonly `0x${string}`[]; tokenIds: readonly bigint[]; marketPlace: `0x${string}`; executionData: readonly `0x${string}`[]; };
                  loanExecutionData: readonly `0x${string}`[];
              }]
            • Optional options: {
                  value?: bigint;
              }
              • Optional value?: bigint

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

      parseEventLogs: (<TFunctionName>(eventName, logs) => ParseEventLogsReturnType<readonly [{
          type: "constructor";
          inputs: readonly [{
              name: "name";
              type: "string";
              internalType: "string";
          }, {
              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: "c721Address";
              type: "address";
              internalType: "address payable";
          }, {
              name: "uniswapRouterAddress";
              type: "address";
              internalType: "address payable";
          }, {
              name: "currencyManager";
              type: "address";
              internalType: "address";
          }, {
              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: "DOMAIN_SEPARATOR";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "bytes32";
              internalType: "bytes32";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "FEE_UPDATE_NOTICE";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "INITIAL_DOMAIN_SEPARATOR";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "bytes32";
              internalType: "bytes32";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "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: "VERSION";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "bytes";
              internalType: "bytes";
          }];
          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: "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: "source";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      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: "source";
                  type: "tuple[]";
                  internalType: "struct IMultiSourceLoan.Source[]";
                  components: readonly [{
                      name: "loanId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "lender";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "principalAmount";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "accruedInterest";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "startTime";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "aprBps";
                      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: "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: "approveForSwap";
          inputs: readonly [{
              name: "currency";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "buy";
          inputs: readonly [{
              name: "executionData";
              type: "bytes[]";
              internalType: "bytes[]";
          }];
          outputs: readonly [{
              name: "loanIds";
              type: "uint256[]";
              internalType: "uint256[]";
          }];
          stateMutability: "payable";
      }, {
          type: "function";
          name: "cancelAllOrders";
          inputs: readonly [{
              name: "nonce";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "cancelOrder";
          inputs: readonly [{
              name: "nonce";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "cancelled";
          inputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }, {
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          outputs: readonly [{
              name: "";
              type: "bool";
              internalType: "bool";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "executeOperation";
          inputs: readonly [{
              name: "assets";
              type: "address[]";
              internalType: "address[]";
          }, {
              name: "amounts";
              type: "uint256[]";
              internalType: "uint256[]";
          }, {
              name: "premiums";
              type: "uint256[]";
              internalType: "uint256[]";
          }, {
              name: "";
              type: "address";
              internalType: "address";
          }, {
              name: "params";
              type: "bytes";
              internalType: "bytes";
          }];
          outputs: readonly [{
              name: "";
              type: "bool";
              internalType: "bool";
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "executeOrder";
          inputs: readonly [{
              name: "order";
              type: "tuple";
              internalType: "struct ITradeMarketplace.Order";
              components: readonly [{
                  name: "maker";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "taker";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "collection";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "currency";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "price";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nonce";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "expiration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "isAsk";
                  type: "bool";
                  internalType: "bool";
              }, {
                  name: "signature";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }];
          outputs: readonly [];
          stateMutability: "nonpayable";
      }, {
          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: "executeSellWithETH";
          inputs: readonly [{
              name: "wethPrincipalSwapData";
              type: "bytes";
              internalType: "bytes";
          }, {
              name: "principal";
              type: "address";
              internalType: "contract ERC20";
          }, {
              name: "collection";
              type: "address";
              internalType: "contract ERC721";
          }, {
              name: "tokenId";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "executionData";
              type: "bytes[]";
              internalType: "bytes[]";
          }];
          outputs: readonly [];
          stateMutability: "payable";
      }, {
          type: "function";
          name: "executeSellWithLoan";
          inputs: readonly [{
              name: "args";
              type: "tuple";
              internalType: "struct IPurchaseBundler.ExecuteSellWithLoanArgs";
              components: readonly [{
                  name: "borrowArgs";
                  type: "tuple";
                  internalType: "struct IPurchaseBundler.AaveBorrowArgs";
                  components: readonly [{
                      name: "pool";
                      type: "address";
                      internalType: "contract IPool";
                  }, {
                      name: "assets";
                      type: "address[]";
                      internalType: "address[]";
                  }, {
                      name: "amounts";
                      type: "uint256[]";
                      internalType: "uint256[]";
                  }];
              }, {
                  name: "executeSellArgs";
                  type: "tuple";
                  internalType: "struct IPurchaseBundler.ExecuteSellArgs";
                  components: 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[]";
                  }];
              }, {
                  name: "loanExecutionData";
                  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: "isOrderCancelled";
          inputs: readonly [{
              name: "order";
              type: "tuple";
              internalType: "struct ITradeMarketplace.Order";
              components: readonly [{
                  name: "maker";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "taker";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "collection";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "currency";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "price";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nonce";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "expiration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "isAsk";
                  type: "bool";
                  internalType: "bool";
              }, {
                  name: "signature";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }];
          outputs: readonly [{
              name: "";
              type: "bool";
              internalType: "bool";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "minNonce";
          inputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }];
          outputs: readonly [{
              name: "";
              type: "uint256";
              internalType: "uint256";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "name";
          inputs: readonly [];
          outputs: readonly [{
              name: "";
              type: "string";
              internalType: "string";
          }];
          stateMutability: "view";
      }, {
          type: "function";
          name: "onERC721Received";
          inputs: readonly [{
              name: "";
              type: "address";
              internalType: "address";
          }, {
              name: "";
              type: "address";
              internalType: "address";
          }, {
              name: "";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "";
              type: "bytes";
              internalType: "bytes";
          }];
          outputs: readonly [{
              name: "";
              type: "bytes4";
              internalType: "bytes4";
          }];
          stateMutability: "nonpayable";
      }, {
          type: "function";
          name: "orderHash";
          inputs: readonly [{
              name: "order";
              type: "tuple";
              internalType: "struct ITradeMarketplace.Order";
              components: readonly [{
                  name: "maker";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "taker";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "collection";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "currency";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "price";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "nonce";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "expiration";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "isAsk";
                  type: "bool";
                  internalType: "bool";
              }, {
                  name: "signature";
                  type: "bytes";
                  internalType: "bytes";
              }];
          }];
          outputs: readonly [{
              name: "";
              type: "bytes32";
              internalType: "bytes32";
          }];
          stateMutability: "pure";
      }, {
          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: "AllOrdersCancelled";
          inputs: readonly [{
              name: "user";
              type: "address";
              indexed: true;
              internalType: "address";
          }, {
              name: "nonce";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }];
          anonymous: false;
      }, {
          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: "OrderExecuted";
          inputs: readonly [{
              name: "maker";
              type: "address";
              indexed: true;
              internalType: "address";
          }, {
              name: "taker";
              type: "address";
              indexed: true;
              internalType: "address";
          }, {
              name: "collection";
              type: "address";
              indexed: true;
              internalType: "address";
          }, {
              name: "tokenId";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "currency";
              type: "address";
              indexed: false;
              internalType: "address";
          }, {
              name: "price";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "nonce";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "expiration";
              type: "uint256";
              indexed: false;
              internalType: "uint256";
          }, {
              name: "isAsk";
              type: "bool";
              indexed: false;
              internalType: "bool";
          }];
          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: "ECDSAInvalidSignature";
          inputs: readonly [];
      }, {
          type: "error";
          name: "ECDSAInvalidSignatureLength";
          inputs: readonly [{
              name: "length";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "ECDSAInvalidSignatureS";
          inputs: readonly [{
              name: "s";
              type: "bytes32";
              internalType: "bytes32";
          }];
      }, {
          type: "error";
          name: "InvalidAddressUpdateError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidCallbackError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidInputError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidSignature";
          inputs: readonly [];
      }, {
          type: "error";
          name: "InvalidTaker";
          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: "LowNonceError";
          inputs: readonly [{
              name: "user";
              type: "address";
              internalType: "address";
          }, {
              name: "nonce";
              type: "uint256";
              internalType: "uint256";
          }, {
              name: "currentMinNonce";
              type: "uint256";
              internalType: "uint256";
          }];
      }, {
          type: "error";
          name: "MarketplaceAddressNotWhitelisted";
          inputs: readonly [];
      }, {
          type: "error";
          name: "OnlyLoanCallableError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "OnlyWethSupportedError";
          inputs: readonly [];
      }, {
          type: "error";
          name: "OrderCancelled";
          inputs: readonly [];
      }, {
          type: "error";
          name: "OrderExpired";
          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" | "AllOrdersCancelled" | "OrderExecuted" | "TaxesPendingUpdate" | "TaxesUpdated")[]
          ? TFunctionName[number]
          : TFunctionName>)

      Type declaration

        • <TFunctionName>(eventName, logs): ParseEventLogsReturnType<readonly [{
              type: "constructor";
              inputs: readonly [{
                  name: "name";
                  type: "string";
                  internalType: "string";
              }, {
                  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: "c721Address";
                  type: "address";
                  internalType: "address payable";
              }, {
                  name: "uniswapRouterAddress";
                  type: "address";
                  internalType: "address payable";
              }, {
                  name: "currencyManager";
                  type: "address";
                  internalType: "address";
              }, {
                  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: "DOMAIN_SEPARATOR";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "FEE_UPDATE_NOTICE";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "INITIAL_DOMAIN_SEPARATOR";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "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: "VERSION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              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: "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: "source";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          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: "source";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          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: "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: "approveForSwap";
              inputs: readonly [{
                  name: "currency";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "buy";
              inputs: readonly [{
                  name: "executionData";
                  type: "bytes[]";
                  internalType: "bytes[]";
              }];
              outputs: readonly [{
                  name: "loanIds";
                  type: "uint256[]";
                  internalType: "uint256[]";
              }];
              stateMutability: "payable";
          }, {
              type: "function";
              name: "cancelAllOrders";
              inputs: readonly [{
                  name: "nonce";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "cancelOrder";
              inputs: readonly [{
                  name: "nonce";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "cancelled";
              inputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "executeOperation";
              inputs: readonly [{
                  name: "assets";
                  type: "address[]";
                  internalType: "address[]";
              }, {
                  name: "amounts";
                  type: "uint256[]";
                  internalType: "uint256[]";
              }, {
                  name: "premiums";
                  type: "uint256[]";
                  internalType: "uint256[]";
              }, {
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "params";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "executeOrder";
              inputs: readonly [{
                  name: "order";
                  type: "tuple";
                  internalType: "struct ITradeMarketplace.Order";
                  components: readonly [{
                      name: "maker";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "taker";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "collection";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "currency";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "price";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nonce";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expiration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "isAsk";
                      type: "bool";
                      internalType: "bool";
                  }, {
                      name: "signature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              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: "executeSellWithETH";
              inputs: readonly [{
                  name: "wethPrincipalSwapData";
                  type: "bytes";
                  internalType: "bytes";
              }, {
                  name: "principal";
                  type: "address";
                  internalType: "contract ERC20";
              }, {
                  name: "collection";
                  type: "address";
                  internalType: "contract ERC721";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "executionData";
                  type: "bytes[]";
                  internalType: "bytes[]";
              }];
              outputs: readonly [];
              stateMutability: "payable";
          }, {
              type: "function";
              name: "executeSellWithLoan";
              inputs: readonly [{
                  name: "args";
                  type: "tuple";
                  internalType: "struct IPurchaseBundler.ExecuteSellWithLoanArgs";
                  components: readonly [{
                      name: "borrowArgs";
                      type: "tuple";
                      internalType: "struct IPurchaseBundler.AaveBorrowArgs";
                      components: readonly [{
                          name: "pool";
                          type: "address";
                          internalType: "contract IPool";
                      }, {
                          name: "assets";
                          type: "address[]";
                          internalType: "address[]";
                      }, {
                          name: "amounts";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }];
                  }, {
                      name: "executeSellArgs";
                      type: "tuple";
                      internalType: "struct IPurchaseBundler.ExecuteSellArgs";
                      components: 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[]";
                      }];
                  }, {
                      name: "loanExecutionData";
                      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: "isOrderCancelled";
              inputs: readonly [{
                  name: "order";
                  type: "tuple";
                  internalType: "struct ITradeMarketplace.Order";
                  components: readonly [{
                      name: "maker";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "taker";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "collection";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "currency";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "price";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nonce";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expiration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "isAsk";
                      type: "bool";
                      internalType: "bool";
                  }, {
                      name: "signature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "minNonce";
              inputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "name";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "string";
                  internalType: "string";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "onERC721Received";
              inputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes4";
                  internalType: "bytes4";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "orderHash";
              inputs: readonly [{
                  name: "order";
                  type: "tuple";
                  internalType: "struct ITradeMarketplace.Order";
                  components: readonly [{
                      name: "maker";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "taker";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "collection";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "currency";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "price";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nonce";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expiration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "isAsk";
                      type: "bool";
                      internalType: "bool";
                  }, {
                      name: "signature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "pure";
          }, {
              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: "AllOrdersCancelled";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }, {
                  name: "nonce";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              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: "OrderExecuted";
              inputs: readonly [{
                  name: "maker";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }, {
                  name: "taker";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }, {
                  name: "collection";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "currency";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "price";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "nonce";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "expiration";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "isAsk";
                  type: "bool";
                  indexed: false;
                  internalType: "bool";
              }];
              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: "ECDSAInvalidSignature";
              inputs: readonly [];
          }, {
              type: "error";
              name: "ECDSAInvalidSignatureLength";
              inputs: readonly [{
                  name: "length";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "ECDSAInvalidSignatureS";
              inputs: readonly [{
                  name: "s";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
          }, {
              type: "error";
              name: "InvalidAddressUpdateError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCallbackError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidInputError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidSignature";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidTaker";
              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: "LowNonceError";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nonce";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "currentMinNonce";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "MarketplaceAddressNotWhitelisted";
              inputs: readonly [];
          }, {
              type: "error";
              name: "OnlyLoanCallableError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "OnlyWethSupportedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "OrderCancelled";
              inputs: readonly [];
          }, {
              type: "error";
              name: "OrderExpired";
              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" | "AllOrdersCancelled" | "OrderExecuted" | "TaxesPendingUpdate" | "TaxesUpdated")[]
              ? TFunctionName[number]
              : TFunctionName>
        • Type Parameters

          • TFunctionName extends "OwnershipTransferred" | "ProtocolFeePendingUpdate" | "ProtocolFeeUpdated" | "BNPLLoansStarted" | "MultiSourceLoanPendingUpdate" | "MultiSourceLoanUpdated" | "SellAndRepayExecuted" | "TransferOwnerRequested" | "AllOrdersCancelled" | "OrderExecuted" | "TaxesPendingUpdate" | "TaxesUpdated"

          Parameters

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

          Returns ParseEventLogsReturnType<readonly [{
              type: "constructor";
              inputs: readonly [{
                  name: "name";
                  type: "string";
                  internalType: "string";
              }, {
                  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: "c721Address";
                  type: "address";
                  internalType: "address payable";
              }, {
                  name: "uniswapRouterAddress";
                  type: "address";
                  internalType: "address payable";
              }, {
                  name: "currencyManager";
                  type: "address";
                  internalType: "address";
              }, {
                  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: "DOMAIN_SEPARATOR";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "FEE_UPDATE_NOTICE";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "INITIAL_DOMAIN_SEPARATOR";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "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: "VERSION";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              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: "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: "source";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          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: "source";
                      type: "tuple[]";
                      internalType: "struct IMultiSourceLoan.Source[]";
                      components: readonly [{
                          name: "loanId";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "lender";
                          type: "address";
                          internalType: "address";
                      }, {
                          name: "principalAmount";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "accruedInterest";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "startTime";
                          type: "uint256";
                          internalType: "uint256";
                      }, {
                          name: "aprBps";
                          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: "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: "approveForSwap";
              inputs: readonly [{
                  name: "currency";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "buy";
              inputs: readonly [{
                  name: "executionData";
                  type: "bytes[]";
                  internalType: "bytes[]";
              }];
              outputs: readonly [{
                  name: "loanIds";
                  type: "uint256[]";
                  internalType: "uint256[]";
              }];
              stateMutability: "payable";
          }, {
              type: "function";
              name: "cancelAllOrders";
              inputs: readonly [{
                  name: "nonce";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "cancelOrder";
              inputs: readonly [{
                  name: "nonce";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "cancelled";
              inputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "executeOperation";
              inputs: readonly [{
                  name: "assets";
                  type: "address[]";
                  internalType: "address[]";
              }, {
                  name: "amounts";
                  type: "uint256[]";
                  internalType: "uint256[]";
              }, {
                  name: "premiums";
                  type: "uint256[]";
                  internalType: "uint256[]";
              }, {
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "params";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "executeOrder";
              inputs: readonly [{
                  name: "order";
                  type: "tuple";
                  internalType: "struct ITradeMarketplace.Order";
                  components: readonly [{
                      name: "maker";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "taker";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "collection";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "currency";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "price";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nonce";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expiration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "isAsk";
                      type: "bool";
                      internalType: "bool";
                  }, {
                      name: "signature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [];
              stateMutability: "nonpayable";
          }, {
              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: "executeSellWithETH";
              inputs: readonly [{
                  name: "wethPrincipalSwapData";
                  type: "bytes";
                  internalType: "bytes";
              }, {
                  name: "principal";
                  type: "address";
                  internalType: "contract ERC20";
              }, {
                  name: "collection";
                  type: "address";
                  internalType: "contract ERC721";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "executionData";
                  type: "bytes[]";
                  internalType: "bytes[]";
              }];
              outputs: readonly [];
              stateMutability: "payable";
          }, {
              type: "function";
              name: "executeSellWithLoan";
              inputs: readonly [{
                  name: "args";
                  type: "tuple";
                  internalType: "struct IPurchaseBundler.ExecuteSellWithLoanArgs";
                  components: readonly [{
                      name: "borrowArgs";
                      type: "tuple";
                      internalType: "struct IPurchaseBundler.AaveBorrowArgs";
                      components: readonly [{
                          name: "pool";
                          type: "address";
                          internalType: "contract IPool";
                      }, {
                          name: "assets";
                          type: "address[]";
                          internalType: "address[]";
                      }, {
                          name: "amounts";
                          type: "uint256[]";
                          internalType: "uint256[]";
                      }];
                  }, {
                      name: "executeSellArgs";
                      type: "tuple";
                      internalType: "struct IPurchaseBundler.ExecuteSellArgs";
                      components: 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[]";
                      }];
                  }, {
                      name: "loanExecutionData";
                      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: "isOrderCancelled";
              inputs: readonly [{
                  name: "order";
                  type: "tuple";
                  internalType: "struct ITradeMarketplace.Order";
                  components: readonly [{
                      name: "maker";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "taker";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "collection";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "currency";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "price";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nonce";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expiration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "isAsk";
                      type: "bool";
                      internalType: "bool";
                  }, {
                      name: "signature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "bool";
                  internalType: "bool";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "minNonce";
              inputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }];
              outputs: readonly [{
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "name";
              inputs: readonly [];
              outputs: readonly [{
                  name: "";
                  type: "string";
                  internalType: "string";
              }];
              stateMutability: "view";
          }, {
              type: "function";
              name: "onERC721Received";
              inputs: readonly [{
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "";
                  type: "bytes";
                  internalType: "bytes";
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes4";
                  internalType: "bytes4";
              }];
              stateMutability: "nonpayable";
          }, {
              type: "function";
              name: "orderHash";
              inputs: readonly [{
                  name: "order";
                  type: "tuple";
                  internalType: "struct ITradeMarketplace.Order";
                  components: readonly [{
                      name: "maker";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "taker";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "collection";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "tokenId";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "currency";
                      type: "address";
                      internalType: "address";
                  }, {
                      name: "price";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "nonce";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "expiration";
                      type: "uint256";
                      internalType: "uint256";
                  }, {
                      name: "isAsk";
                      type: "bool";
                      internalType: "bool";
                  }, {
                      name: "signature";
                      type: "bytes";
                      internalType: "bytes";
                  }];
              }];
              outputs: readonly [{
                  name: "";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
              stateMutability: "pure";
          }, {
              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: "AllOrdersCancelled";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }, {
                  name: "nonce";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }];
              anonymous: false;
          }, {
              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: "OrderExecuted";
              inputs: readonly [{
                  name: "maker";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }, {
                  name: "taker";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }, {
                  name: "collection";
                  type: "address";
                  indexed: true;
                  internalType: "address";
              }, {
                  name: "tokenId";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "currency";
                  type: "address";
                  indexed: false;
                  internalType: "address";
              }, {
                  name: "price";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "nonce";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "expiration";
                  type: "uint256";
                  indexed: false;
                  internalType: "uint256";
              }, {
                  name: "isAsk";
                  type: "bool";
                  indexed: false;
                  internalType: "bool";
              }];
              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: "ECDSAInvalidSignature";
              inputs: readonly [];
          }, {
              type: "error";
              name: "ECDSAInvalidSignatureLength";
              inputs: readonly [{
                  name: "length";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "ECDSAInvalidSignatureS";
              inputs: readonly [{
                  name: "s";
                  type: "bytes32";
                  internalType: "bytes32";
              }];
          }, {
              type: "error";
              name: "InvalidAddressUpdateError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidCallbackError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidInputError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidSignature";
              inputs: readonly [];
          }, {
              type: "error";
              name: "InvalidTaker";
              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: "LowNonceError";
              inputs: readonly [{
                  name: "user";
                  type: "address";
                  internalType: "address";
              }, {
                  name: "nonce";
                  type: "uint256";
                  internalType: "uint256";
              }, {
                  name: "currentMinNonce";
                  type: "uint256";
                  internalType: "uint256";
              }];
          }, {
              type: "error";
              name: "MarketplaceAddressNotWhitelisted";
              inputs: readonly [];
          }, {
              type: "error";
              name: "OnlyLoanCallableError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "OnlyWethSupportedError";
              inputs: readonly [];
          }, {
              type: "error";
              name: "OrderCancelled";
              inputs: readonly [];
          }, {
              type: "error";
              name: "OrderExpired";
              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" | "AllOrdersCancelled" | "OrderExecuted" | "TaxesPendingUpdate" | "TaxesUpdated")[]
              ? TFunctionName[number]
              : TFunctionName>