gondi 0.3.18 → 0.3.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +28 -28
- package/dist/index.mjs.map +3 -3
- package/dist/src/reservoir/Reservoir.d.ts +10 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
var oe=Object.defineProperty;var Ee=(s,e,t)=>e in s?oe(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var d=(s,e)=>oe(s,"name",{value:e,configurable:!0});var le=(s,e,t)=>(Ee(s,typeof e!="symbol"?e+"":e,t),t);import{createPublicClient as Zt,createTransport as jt}from"viem";import{decodeEventLog as Ge,encodeEventTopics as Xe,getContract as Ae,zeroAddress as Ze}from"viem";var de=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"liquidationDistributor",internalType:"address",type:"address"},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"triggerFee",internalType:"uint256",type:"uint256"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[],name:"AuctionAlreadyInProgressError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionNotOverError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionOverError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CouldNotModifyValidLoansError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"InvalidHashAuctionError"},{type:"error",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"InvalidTriggerFee"},{type:"error",inputs:[{name:"_loan",internalType:"address",type:"address"}],name:"LoanNotAcceptedError"},{type:"error",inputs:[{name:"_minBid",internalType:"uint256",type:"uint256"}],name:"MinBidError"},{type:"error",inputs:[{name:"_owner",internalType:"address",type:"address"}],name:"NFTNotOwnedError"},{type:"error",inputs:[],name:"NoBidsError"},{type:"error",inputs:[],name:"ZeroAddressError"},{type:"event",anonymous:!1,inputs:[{name:"loanContract",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auctionContract",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1},{name:"proceeds",internalType:"uint256",type:"uint256",indexed:!1},{name:"settler",internalType:"address",type:"address",indexed:!1},{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"AuctionSettled"},{type:"event",anonymous:!1,inputs:[{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newBidder",internalType:"address",type:"address",indexed:!1},{name:"bid",internalType:"uint256",type:"uint256",indexed:!1},{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BidPlaced"},{type:"event",anonymous:!1,inputs:[{name:"liquidationDistributor",internalType:"address",type:"address",indexed:!1}],name:"LiquidationDistributorUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractRemoved"},{type:"event",anonymous:!1,inputs:[{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}],indexed:!1}],name:"LoanLiquidationStarted"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"TriggerFeeUpdated"},{stateMutability:"view",type:"function",inputs:[],name:"MAX_TRIGGER_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"MIN_INCREMENT_BPS",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"addLoanContract",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"getAuctionHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidationDistributor",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getTriggerFee",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getValidLoanContracts",outputs:[{name:"",internalType:"address[]",type:"address[]"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_asset",internalType:"address",type:"address"},{name:"_duration",internalType:"uint96",type:"uint96"},{name:"_originator",internalType:"address",type:"address"}],name:"liquidateLoan",outputs:[{name:"",internalType:"bytes",type:"bytes"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_bid",internalType:"uint256",type:"uint256"}],name:"placeBid",outputs:[{name:"",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"removeLoanContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"settleAuction",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"__liquidationDistributor",internalType:"address",type:"address"}],name:"updateLiquidationDistributor",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"updateTriggerFee",outputs:[]}];var pe=[{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"Transfer"},{stateMutability:"view",type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"allowance",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"amount",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"decimals",outputs:[{name:"",internalType:"uint8",type:"uint8"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"nonces",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"owner",internalType:"address",type:"address"},{name:"spender",internalType:"address",type:"address"},{name:"value",internalType:"uint256",type:"uint256"},{name:"deadline",internalType:"uint256",type:"uint256"},{name:"v",internalType:"uint8",type:"uint8"},{name:"r",internalType:"bytes32",type:"bytes32"},{name:"s",internalType:"bytes32",type:"bytes32"}],name:"permit",outputs:[]},{stateMutability:"view",type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[],name:"totalSupply",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"to",internalType:"address",type:"address"},{name:"amount",internalType:"uint256",type:"uint256"}],name:"transfer",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"amount",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[{name:"",internalType:"bool",type:"bool"}]}],z=[{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"operator",internalType:"address",type:"address",indexed:!0},{name:"approved",internalType:"bool",type:"bool",indexed:!1}],name:"ApprovalForAll"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Transfer"},{stateMutability:"nonpayable",type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"owner",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"uint256",type:"uint256"}],name:"getApproved",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"isApprovedForAll",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"ownerOf",outputs:[{name:"owner",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"},{name:"data",internalType:"bytes",type:"bytes"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"operator",internalType:"address",type:"address"},{name:"approved",internalType:"bool",type:"bool"}],name:"setApprovalForAll",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"interfaceId",internalType:"bytes4",type:"bytes4"}],name:"supportsInterface",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"tokenURI",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[]}];var ye=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"_multiSourceLoanAddress",internalType:"address",type:"address"},{name:"_marketplaceContracts",internalType:"address",type:"address"},{name:"_wethAddress",internalType:"address payable",type:"address"},{name:"_punkMarketAddress",internalType:"address payable",type:"address"},{name:"_wrappedPunkAddress",internalType:"address payable",type:"address"},{name:"_seaportAddress",internalType:"address payable",type:"address"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[],name:"CouldNotReturnEthError"},{type:"error",inputs:[],name:"InvalidAddressUpdateError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"MarketplaceAddressNotWhitelisted"},{type:"error",inputs:[],name:"OnlyMultiSourceLoanError"},{type:"error",inputs:[],name:"OnlyWethSupportedError"},{type:"event",anonymous:!1,inputs:[{name:"_loanIds",internalType:"uint256[]",type:"uint256[]",indexed:!1}],name:"BNPLLoansStarted"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"MultiSourceLoanPendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"MultiSourceLoanUpdated"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"SeaportPendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"SeaportUpdated"},{type:"event",anonymous:!1,inputs:[{name:"_loanIds",internalType:"uint256[]",type:"uint256[]",indexed:!1}],name:"SellAndRepayExecuted"},{stateMutability:"payable",type:"fallback"},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_executionData",internalType:"bytes",type:"bytes"}],name:"afterNFTTransfer",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_fee",internalType:"uint256",type:"uint256"},{name:"_executionData",internalType:"bytes",type:"bytes"}],name:"afterPrincipalTransfer",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"payable",type:"function",inputs:[{name:"_executionData",internalType:"bytes[]",type:"bytes[]"}],name:"buy",outputs:[{name:"",internalType:"uint256[]",type:"uint256[]"},{name:"",internalType:"struct IMultiSourceLoan.Loan[]",type:"tuple[]",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"finalUpdateMultiSourceLoanAddress",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"finalUpdateSeaportAddress",outputs:[]},{stateMutability:"view",type:"function",inputs:[],name:"getMultiSourceLoanAddress",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getSeaportAddress",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_executionData",internalType:"bytes[]",type:"bytes[]"}],name:"sell",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"updateMultiSourceLoanAddressFirst",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"updateSeaportAddressFirst",outputs:[]},{stateMutability:"payable",type:"receive"}];var x=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"loanLiquidator",internalType:"address",type:"address"},{name:"protocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"maxSources",internalType:"uint256",type:"uint256"},{name:"minLockPeriod",internalType:"uint256",type:"uint256"},{name:"delegateRegistry",internalType:"address",type:"address"},{name:"flashActionContract",internalType:"address",type:"address"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledOrExecutedOfferError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"CancelledRenegotiationOfferError"},{type:"error",inputs:[],name:"CannotLiquidateError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"ECDSAInvalidSignature"},{type:"error",inputs:[{name:"length",internalType:"uint256",type:"uint256"}],name:"ECDSAInvalidSignatureLength"},{type:"error",inputs:[{name:"s",internalType:"bytes32",type:"bytes32"}],name:"ECDSAInvalidSignatureS"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredOfferError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredRenegotiationOfferError"},{type:"error",inputs:[],name:"ExtensionNotAvailableError"},{type:"error",inputs:[{name:"_amount",internalType:"uint256",type:"uint256"},{name:"_principalAmount",internalType:"uint256",type:"uint256"}],name:"InvalidAmountError"},{type:"error",inputs:[],name:"InvalidBorrowerError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"InvalidCollateralIdError"},{type:"error",inputs:[],name:"InvalidDurationError"},{type:"error",inputs:[],name:"InvalidLenderError"},{type:"error",inputs:[],name:"InvalidLiquidationError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"InvalidLoanError"},{type:"error",inputs:[],name:"InvalidMethodError"},{type:"error",inputs:[{name:"_fraction",internalType:"uint256",type:"uint256"}],name:"InvalidProtocolFeeError"},{type:"error",inputs:[],name:"InvalidRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidSignatureError"},{type:"error",inputs:[],name:"InvalidValueError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"_liquidator",internalType:"address",type:"address"}],name:"LiquidatorOnlyError"},{type:"error",inputs:[],name:"LoanExpiredError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"LoanNotDueError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowOfferIdError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinRenegotiationOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowRenegotiationOfferIdError"},{type:"error",inputs:[],name:"MaxCapacityExceededError"},{type:"error",inputs:[{name:"minLockPeriod",internalType:"uint256",type:"uint256"}],name:"MinLockPeriodTooHighError"},{type:"error",inputs:[{name:"i",internalType:"uint256",type:"uint256"}],name:"MulticallFailed"},{type:"error",inputs:[],name:"NFTNotReturnedError"},{type:"error",inputs:[],name:"NotStrictlyImprovedError"},{type:"error",inputs:[],name:"OnlyBorrowerCallableError"},{type:"error",inputs:[],name:"OnlyLenderCallableError"},{type:"error",inputs:[],name:"OnlyLenderOrBorrowerCallableError"},{type:"error",inputs:[],name:"PartialOfferCannotChangeDurationError"},{type:"error",inputs:[],name:"PartialOfferCannotHaveFeeError"},{type:"error",inputs:[],name:"RefinanceFullError"},{type:"error",inputs:[{name:"minTimestamp",internalType:"uint256",type:"uint256"}],name:"SourceCannotBeRefinancedError"},{type:"error",inputs:[{name:"sourcePrincipal",internalType:"uint256",type:"uint256"},{name:"loanPrincipal",internalType:"uint256",type:"uint256"}],name:"TargetPrincipalTooLowError"},{type:"error",inputs:[{name:"_pendingProtocolFeeSetTime",internalType:"uint256",type:"uint256"}],name:"TooEarlyError"},{type:"error",inputs:[{name:"sources",internalType:"uint256",type:"uint256"}],name:"TooManySourcesError"},{type:"error",inputs:[],name:"ZeroDurationError"},{type:"error",inputs:[],name:"ZeroInterestError"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minOfferId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minRenegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllRenegotiationOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"borrower",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BorrowerOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"newdelegateRegistry",internalType:"address",type:"address",indexed:!1}],name:"DelegateRegistryUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"delegate",internalType:"address",type:"address",indexed:!1},{name:"value",internalType:"bool",type:"bool",indexed:!1}],name:"Delegated"},{type:"event",anonymous:!1,inputs:[{name:"newFlashActionContract",internalType:"address",type:"address",indexed:!1}],name:"FlashActionContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"target",internalType:"address",type:"address",indexed:!1},{name:"data",internalType:"bytes",type:"bytes",indexed:!1}],name:"FlashActionExecuted"},{type:"event",anonymous:!1,inputs:[{name:"minimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ImprovementMinimumUpdated"},{type:"event",anonymous:!1,inputs:[{name:"newDuration",internalType:"uint256",type:"uint256",indexed:!1}],name:"LiquidationAuctionDurationUpdated"},{type:"event",anonymous:!1,inputs:[{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LiquidationContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"borrower",internalType:"address",type:"address",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanEmitted"},{type:"event",anonymous:!1,inputs:[{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"_extension",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanExtended"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanForeclosed"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanLiquidated"},{type:"event",anonymous:!1,inputs:[{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1},{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRefinanced"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"totalRepayment",internalType:"uint256",type:"uint256",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRepaid"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LoanSentToLiquidator"},{type:"event",anonymous:!1,inputs:[{name:"newMax",internalType:"uint256",type:"uint256",indexed:!1}],name:"MaxSourcesUpdated"},{type:"event",anonymous:!1,inputs:[{name:"minLockPeriod",internalType:"uint256",type:"uint256",indexed:!1}],name:"MinLockPeriodUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeePendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeeUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RenegotiationOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"delegate",internalType:"address",type:"address",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RevokeDelegate"},{type:"event",anonymous:!1,inputs:[{name:"contractAdded",internalType:"address",type:"address",indexed:!1},{name:"tax",internalType:"struct WithCallbacks.Taxes",type:"tuple",components:[{name:"buyTax",internalType:"uint128",type:"uint128"},{name:"sellTax",internalType:"uint128",type:"uint128"}],indexed:!1}],name:"WhitelistedCallbackContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"contractRemoved",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractRemoved"},{stateMutability:"view",type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"FEE_UPDATE_NOTICE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"INITIAL_DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"MAX_PROTOCOL_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"MIN_AUCTION_DURATION",outputs:[{name:"",internalType:"uint48",type:"uint48"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tax",internalType:"struct WithCallbacks.Taxes",type:"tuple",components:[{name:"buyTax",internalType:"uint128",type:"uint128"},{name:"sellTax",internalType:"uint128",type:"uint128"}]}],name:"addWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"cancelAllOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_minRenegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelAllRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"cancelOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_offerIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelRenegotiationOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_delegate",internalType:"address",type:"address"},{name:"_rights",internalType:"bytes32",type:"bytes32"},{name:"_value",internalType:"bool",type:"bool"}],name:"delegate",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_executionData",internalType:"struct IMultiSourceLoan.LoanExecutionData",type:"tuple",components:[{name:"executionData",internalType:"struct IBaseLoan.ExecutionData",type:"tuple",components:[{name:"offer",internalType:"struct IBaseLoan.LoanOffer",type:"tuple",components:[{name:"offerId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"borrower",internalType:"address",type:"address"},{name:"capacity",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"validators",internalType:"struct IBaseLoan.OfferValidator[]",type:"tuple[]",components:[{name:"validator",internalType:"address",type:"address"},{name:"arguments",internalType:"bytes",type:"bytes"}]}]},{name:"tokenId",internalType:"uint256",type:"uint256"},{name:"amount",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"callbackData",internalType:"bytes",type:"bytes"}]},{name:"lender",internalType:"address",type:"address"},{name:"borrower",internalType:"address",type:"address"},{name:"lenderOfferSignature",internalType:"bytes",type:"bytes"},{name:"borrowerOfferSignature",internalType:"bytes",type:"bytes"}]}],name:"emitLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_target",internalType:"address",type:"address"},{name:"_data",internalType:"bytes",type:"bytes"}],name:"executeFlashAction",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_extension",internalType:"uint256",type:"uint256"}],name:"extendLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getCollectionManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getCurrencyManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getDelegateRegistry",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getFlashActionContract",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getImprovementMinimum",outputs:[{name:"",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidationAuctionDuration",outputs:[{name:"",internalType:"uint48",type:"uint48"}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidator",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"getLoanHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"getMaxSources",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getMinLockPeriod",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanPrincipal",internalType:"uint256",type:"uint256"}],name:"getMinSourcePrincipal",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFeeSetTime",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getTotalLoansIssued",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"getUsedCapacity",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isBorrowerOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isRenegotiationOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"isWhitelistedCallbackContract",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"lenderMinRenegotiationOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"liquidateLoan",outputs:[{name:"",internalType:"bytes",type:"bytes"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"loanLiquidated",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"minOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"payable",type:"function",inputs:[{name:"data",internalType:"bytes[]",type:"bytes[]"}],name:"multicall",outputs:[{name:"results",internalType:"bytes[]",type:"bytes[]"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_renegotiationOfferSignature",internalType:"bytes",type:"bytes"}],name:"refinanceFull",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"refinancePartial",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"removeWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_repaymentData",internalType:"struct IMultiSourceLoan.LoanRepaymentData",type:"tuple",components:[{name:"data",internalType:"struct IMultiSourceLoan.SignableRepaymentData",type:"tuple",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"callbackData",internalType:"bytes",type:"bytes"},{name:"shouldDelegate",internalType:"bool",type:"bool"}]},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"borrowerSignature",internalType:"bytes",type:"bytes"}]}],name:"repayLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_delegate",internalType:"address",type:"address"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"revokeDelegate",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newDelegateRegistry",internalType:"address",type:"address"}],name:"setDelegateRegistry",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newFlashActionContract",internalType:"address",type:"address"}],name:"setFlashActionContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"__maxSources",internalType:"uint256",type:"uint256"}],name:"setMaxSources",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"__minLockPeriod",internalType:"uint256",type:"uint256"}],name:"setMinLockPeriod",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[],name:"setProtocolFee",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newMinimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}],name:"updateImprovementMinimum",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newDuration",internalType:"uint48",type:"uint48"}],name:"updateLiquidationAuctionDuration",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"loanLiquidator",internalType:"contract ILoanLiquidator",type:"address"}],name:"updateLiquidationContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newProtocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],name:"updateProtocolFee",outputs:[]}];var ue=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"}]},{type:"error",inputs:[],name:"AssetNotOwnedError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"vaultId",internalType:"uint256",type:"uint256"}],name:"NotApprovedError"},{type:"error",inputs:[{name:"vaultId",internalType:"uint256",type:"uint256"}],name:"VaultNotExistsError"},{type:"error",inputs:[],name:"WithdrawingETHError"},{type:"error",inputs:[],name:"WrongMethodError"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"operator",internalType:"address",type:"address",indexed:!0},{name:"approved",internalType:"bool",type:"bool",indexed:!1}],name:"ApprovalForAll"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"token",internalType:"address",type:"address",indexed:!1},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC20Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"token",internalType:"address",type:"address",indexed:!1},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC20Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC721Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC721Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Transfer"},{stateMutability:"view",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"}],name:"ERC20BalanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"ERC721OwnerOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"ETH",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"owner",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_assetRecipient",internalType:"address",type:"address"}],name:"burn",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"},{name:"_tokens",internalType:"address[]",type:"address[]"}],name:"burnAndWithdraw",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"},{name:"_amount",internalType:"uint256",type:"uint256"}],name:"depositERC20",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"depositERC721",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"depositERC721s",outputs:[]},{stateMutability:"payable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"depositEth",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"uint256",type:"uint256"}],name:"getApproved",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"isApprovedForAll",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"nonpayable",type:"function",inputs:[],name:"mint",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"ownerOf",outputs:[{name:"owner",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"},{name:"data",internalType:"bytes",type:"bytes"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"operator",internalType:"address",type:"address"},{name:"approved",internalType:"bool",type:"bool"}],name:"setApprovalForAll",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"interfaceId",internalType:"bytes4",type:"bytes4"}],name:"supportsInterface",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"pure",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"tokenURI",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"}],name:"withdrawERC20",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_tokens",internalType:"address[]",type:"address[]"}],name:"withdrawERC20s",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"withdrawERC721",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"withdrawERC721s",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"withdrawEth",outputs:[]}];import{encodeAbiParameters as $e}from"viem";import{isAddress as De,zeroAddress as Ve}from"viem";import{goerli as He}from"viem/chains";var Ke=31337,M=d(s=>!s||!De(s)?null:s,"ensureAddress"),ce="0xb6dfcbc1661d0c0bced9591d06e964f97d41a35984704ffe61f8e062e43919c8",T=d(s=>s?.id===Ke?{MultiSourceLoanV4Address:M(process.env.GONDI_MULTI_SOURCE_LOAN_V4)??"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",MultiSourceLoanV5Address:M(process.env.GONDI_MULTI_SOURCE_LOAN_V5)??"0x610178dA211FEF7D417bC0e6FeD39F05609AD788",AuctionLoanLiquidatorV4Address:M(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V4)??"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0",AuctionLoanLiquidatorV5Address:M(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V5)??"0x8A791620dd6260079BF849Dc5567aDC3F2FdC318",UserVaultV5Address:M(process.env.GONDI_USER_VAULT_V5)??"0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82",LeverageAddress:M(process.env.GONDI_LEVERAGE)??"0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0",SeaportAddress:M(process.env.SEAPORT)??"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",CryptoPunksAddress:M(process.env.CRYPTO_PUNKS)??"0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb"}:s?.id===He.id?{MultiSourceLoanV4Address:"0x60C20627429668F267b5cF55c6605c665C69887D",MultiSourceLoanV5Address:"0xTODO",AuctionLoanLiquidatorV4Address:"0x29C73faa2f9180ea5a7B0bEC243ebc63a5B4f280",AuctionLoanLiquidatorV5Address:"0xTODO",UserVaultV5Address:"0xTODO",LeverageAddress:"0xTODO",SeaportAddress:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",CryptoPunksAddress:"0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb"}:{MultiSourceLoanV4Address:"0xCa5a494Ca20483e21ec1E41FE1D9461Da77595Bd",MultiSourceLoanV5Address:"0x478f6F994C6fb3cf3e444a489b3AD9edB8cCaE16",AuctionLoanLiquidatorV4Address:"0x237e4421C742d843Fdd96D22294D338507e17091",AuctionLoanLiquidatorV5Address:"0x97d34635b605c2f1630d6b4c6c5d222b8a2ca47d",UserVaultV5Address:"0x14a6Dcebb2Bb73aae1b199CCAadA75247b81976D",LeverageAddress:"0x87Ce6e8124fFd68fa721FcC7f35fdA14A11E233e",SeaportAddress:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",CryptoPunksAddress:"0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb"},"getContracts"),me=d(()=>({reservoirApiKey:"5b472f8c-b471-531a-a450-56e428e5a00a",infuraApiKey:"9b7006cb0b0b42f1813ae9418741fbb5"}),"getApiKeys"),A=d(()=>({WETH_ADDRESS:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",ETH_ADDRESS:Ve,USDC_ADDRESS:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"}),"getCurrencies");var fe=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"triggerFee",internalType:"uint256",type:"uint256"}]},{type:"error",inputs:[],name:"AuctionAlreadyInProgressError"},{type:"error",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"AuctionNotExistsError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionNotOverError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionOverError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"InvalidTriggerFee"},{type:"error",inputs:[{name:"_loan",internalType:"address",type:"address"}],name:"LoanNotAcceptedError"},{type:"error",inputs:[{name:"_minBid",internalType:"uint256",type:"uint256"}],name:"MinBidError"},{type:"error",inputs:[{name:"_owner",internalType:"address",type:"address"}],name:"NFTNotOwnedError"},{type:"error",inputs:[],name:"NoBidsError"},{type:"error",inputs:[],name:"ZeroAddressError"},{type:"event",anonymous:!1,inputs:[{name:"loanContract",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auctionContract",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1},{name:"highestBid",internalType:"uint256",type:"uint256",indexed:!1},{name:"settler",internalType:"address",type:"address",indexed:!1},{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"AuctionSettled"},{type:"event",anonymous:!1,inputs:[{name:"auctionContract",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newBidder",internalType:"address",type:"address",indexed:!1},{name:"bid",internalType:"uint256",type:"uint256",indexed:!1},{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BidPlaced"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractRemoved"},{type:"event",anonymous:!1,inputs:[{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"duration",internalType:"uint96",type:"uint96",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1}],name:"LoanLiquidationStarted"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"TriggerFeeUpdated"},{stateMutability:"view",type:"function",inputs:[],name:"MAX_TRIGGER_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"MIN_INCREMENT_BPS",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"addLoanContract",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"getAuction",outputs:[{name:"",internalType:"struct AuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getTriggerFee",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getValidLoanContracts",outputs:[{name:"",internalType:"address[]",type:"address[]"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_asset",internalType:"address",type:"address"},{name:"_duration",internalType:"uint96",type:"uint96"},{name:"_originator",internalType:"address",type:"address"}],name:"liquidateLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_bid",internalType:"uint256",type:"uint256"}],name:"placeBid",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"removeLoanContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"bytes",type:"bytes"}],name:"settleAuction",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"updateTriggerFee",outputs:[]}];var Te=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"loanLiquidator",internalType:"address",type:"address"},{name:"protocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"maxSources",internalType:"uint8",type:"uint8"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledOrExecutedOfferError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledRenegotiationOffer"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"CancelledRenegotiationOfferError"},{type:"error",inputs:[],name:"CannotLiquidateError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"ExpiredLoanError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredOfferError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidBorrowerError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"InvalidCollateralIdError"},{type:"error",inputs:[],name:"InvalidLiquidationError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"InvalidLoanError"},{type:"error",inputs:[{name:"_fraction",internalType:"uint256",type:"uint256"}],name:"InvalidProtocolFeeError"},{type:"error",inputs:[],name:"InvalidRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidSignatureError"},{type:"error",inputs:[],name:"InvalidSignerError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"_liquidator",internalType:"address",type:"address"}],name:"LiquidatorOnlyError"},{type:"error",inputs:[],name:"LoanExpiredError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"LoanNotDueError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"LoanNotFoundError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowOfferIdError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinRenegotiationOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowRenegotiationOfferIdError"},{type:"error",inputs:[],name:"MaxCapacityExceededError"},{type:"error",inputs:[{name:"_id",internalType:"uint256",type:"uint256"}],name:"NotMintedError"},{type:"error",inputs:[],name:"NotStrictlyImprovedError"},{type:"error",inputs:[],name:"OnlyBorrowerCallableError"},{type:"error",inputs:[],name:"OnlyLenderOrSignerCallableError"},{type:"error",inputs:[],name:"PartialOfferCannotChangeDurationError"},{type:"error",inputs:[],name:"PartialOfferCannotHaveFeeError"},{type:"error",inputs:[],name:"RefinanceFullError"},{type:"error",inputs:[],name:"RepaymentError"},{type:"error",inputs:[{name:"sourcePrincipal",internalType:"uint256",type:"uint256"},{name:"loanPrincipal",internalType:"uint256",type:"uint256"}],name:"TargetPrincipalTooLowError"},{type:"error",inputs:[{name:"_pendingProtocolFeeSetTime",internalType:"uint256",type:"uint256"}],name:"TooEarlyError"},{type:"error",inputs:[{name:"sources",internalType:"uint8",type:"uint8"}],name:"TooManySourcesError"},{type:"error",inputs:[],name:"Unauthorized"},{type:"error",inputs:[{name:"_authorized",internalType:"address",type:"address"}],name:"UnauthorizedError"},{type:"error",inputs:[],name:"ZeroAddressError"},{type:"error",inputs:[],name:"ZeroDurationError"},{type:"error",inputs:[],name:"ZeroInterestError"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minOfferId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minRenegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllRenegotiationOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"signer",internalType:"address",type:"address",indexed:!1}],name:"ApprovedSigner"},{type:"event",anonymous:!1,inputs:[{name:"minimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ImprovementMinimumUpdated"},{type:"event",anonymous:!1,inputs:[{name:"newDuration",internalType:"uint256",type:"uint256",indexed:!1}],name:"LiquidationAuctionDurationUpdated"},{type:"event",anonymous:!1,inputs:[{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LiquidationContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanEmitted"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanForeclosed"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"repayment",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanLiquidated"},{type:"event",anonymous:!1,inputs:[{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1},{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRefinanced"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"totalRepayment",internalType:"uint256",type:"uint256",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRepaid"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LoanSentToLiquidator"},{type:"event",anonymous:!1,inputs:[{name:"newMax",internalType:"uint8",type:"uint8",indexed:!1}],name:"MaxSourcesUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeePendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeeUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RenegotiationOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"contract_added",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"contract_removed",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractRemoved"},{stateMutability:"view",type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"FEE_UPDATE_NOTICE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"INITIAL_DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"MAX_PROTOCOL_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"addWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_signer",internalType:"address",type:"address"}],name:"approveSigner",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"cancelAllOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_minRenegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelAllRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"cancelOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelRenegotiationOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanOffer",internalType:"struct IBaseLoan.LoanOffer",type:"tuple",components:[{name:"offerId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"borrower",internalType:"address",type:"address"},{name:"capacity",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"requiresLiquidation",internalType:"bool",type:"bool"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"validators",internalType:"struct IBaseLoan.OfferValidator[]",type:"tuple[]",components:[{name:"validator",internalType:"address",type:"address"},{name:"arguments",internalType:"bytes",type:"bytes"}]}]},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_lenderOfferSignature",internalType:"bytes",type:"bytes"},{name:"_withCallback",internalType:"bool",type:"bool"}],name:"emitLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"getApprovedSigner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getCollectionManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getCurrencyManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getImprovementMinimum",outputs:[{name:"",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidationAuctionDuration",outputs:[{name:"",internalType:"uint48",type:"uint48"}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidator",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"getLoanHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"getMaxSources",outputs:[{name:"",internalType:"uint8",type:"uint8"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanPrincipal",internalType:"uint256",type:"uint256"}],name:"getMinSourcePrincipal",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFeeSetTime",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getTotalLoansIssued",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"getUsedCapacity",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isRenegotiationOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"isWhitelistedCallbackContract",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"lenderMinOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"lenderMinRenegotiationOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"liquidateLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_collateralAddress",internalType:"address",type:"address"},{name:"_collateralTokenId",internalType:"uint256",type:"uint256"},{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_repayment",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"bytes",type:"bytes"}],name:"loanLiquidated",outputs:[]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"strictImprovement",internalType:"bool",type:"bool"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_renegotiationOfferSignature",internalType:"bytes",type:"bytes"}],name:"refinanceFull",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"strictImprovement",internalType:"bool",type:"bool"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"refinancePartial",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer[]",type:"tuple[]",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"strictImprovement",internalType:"bool",type:"bool"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan[]",type:"tuple[]",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"refinancePartialBatch",outputs:[{name:"loanId",internalType:"uint256[]",type:"uint256[]"},{name:"loans",internalType:"struct IMultiSourceLoan.Loan[]",type:"tuple[]",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"removeWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_collateralTo",internalType:"address",type:"address"},{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_withCallback",internalType:"bool",type:"bool"}],name:"repayLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"maxSources",internalType:"uint8",type:"uint8"}],name:"setMaxSources",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[],name:"setProtocolFee",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newMinimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}],name:"updateImprovementMinimum",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newDuration",internalType:"uint48",type:"uint48"}],name:"updateLiquidationAuctionDuration",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"loanLiquidator",internalType:"contract ILoanLiquidator",type:"address"}],name:"updateLiquidationContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newProtocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],name:"updateProtocolFee",outputs:[]}];import{createPublicClient as Ue,createTransport as qe,getContract as We}from"viem";var f=class{abi;address;bcClient;wallet;contract;safeContractWrite;constructor({walletClient:e,address:t,abi:n}){this.wallet=e;let a=Ue({transport:()=>qe(e.transport)});this.bcClient=a,this.address=t,this.abi=n,this.contract=We({address:this.address,abi:this.abi,walletClient:e,publicClient:this.bcClient}),this.safeContractWrite=new Proxy({},{get(i,r){return async(o,l={})=>{let{request:p}=await a.simulateContract({address:t,abi:n,functionName:r,args:o,account:e.account,...l});return e.writeContract(p)}}})}};d(f,"Contract");var j=class extends f{constructor({walletClient:e}){let{AuctionLoanLiquidatorV4Address:t}=T(e.chain);super({walletClient:e,address:t,abi:fe})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n}){let a=await this.safeContractWrite.placeBid([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.BidPlaced(),o=y(i,r);if(o.length===0)throw new Error("Bid not placed");return{...o[0].args,...i}}}}async settleAuction({loan:e}){let t={...e,source:e.source.map(a=>[Number(a.loanId),a.lender,a.principalAmount,a.accruedInterest,a.startTime,a.aprBps])},n=await this.safeContractWrite.settleAuction([e.nftCollateralAddress,e.nftCollateralTokenId,$e(j.LOAN_SETTLEMENT_ENCODE_TYPES,[t])]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.AuctionSettled(),r=y(a,i);if(r.length===0)throw new Error("Auction not settled");return{...r[0].args,...a}}}}},h=j;d(h,"AllV4"),le(h,"LOAN_SETTLEMENT_ENCODE_TYPES",[{name:"",type:"tuple",components:[{name:"borrower",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"startTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"source",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]);var N=class extends f{constructor({walletClient:e}){let{AuctionLoanLiquidatorV5Address:t}=T(e.chain);super({walletClient:e,address:t,abi:de})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a}){let i=await this.safeContractWrite.placeBid([e,t,a,n]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),o=await this.contract.createEventFilter.BidPlaced(),l=y(r,o);if(l.length===0)throw new Error("Bid not placed");return{...l[0].args,...r}}}}async settleAuction({auction:e,loan:t}){let n=await this.safeContractWrite.settleAuction([e,t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.AuctionSettled(),r=y(a,i);if(r.length===0)throw new Error("Auction not settled");return{...r[0].args,...a}}}}};d(N,"AllV5");import{encodeFunctionData as Qe}from"viem";var ge=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"uint256"}],name:"punksOfferedForSale",outputs:[{name:"isForSale",type:"bool"},{name:"punkIndex",type:"uint256"},{name:"seller",type:"address"},{name:"minValue",type:"uint256"},{name:"onlySellTo",type:"address"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"enterBidForPunk",outputs:[],payable:!0,type:"function",stateMutability:"payable"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"},{name:"minPrice",type:"uint256"}],name:"acceptBidForPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"addresses",type:"address[]"},{name:"indices",type:"uint256[]"}],name:"setInitialOwners",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[],name:"withdraw",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"imageHash",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[],name:"nextPunkIndexToAssign",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"uint256"}],name:"punkIndexToAddress",outputs:[{name:"",type:"address"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[],name:"standard",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"uint256"}],name:"punkBids",outputs:[{name:"hasBid",type:"bool"},{name:"punkIndex",type:"uint256"},{name:"bidder",type:"address"},{name:"value",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[],name:"allInitialOwnersAssigned",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"allPunksAssigned",outputs:[{name:"",type:"bool"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"buyPunk",outputs:[],payable:!0,type:"function",stateMutability:"payable"},{constant:!1,inputs:[{name:"to",type:"address"},{name:"punkIndex",type:"uint256"}],name:"transferPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"withdrawBidForPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[{name:"to",type:"address"},{name:"punkIndex",type:"uint256"}],name:"setInitialOwner",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"},{name:"minSalePriceInWei",type:"uint256"},{name:"toAddress",type:"address"}],name:"offerPunkForSaleToAddress",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"punksRemainingToAssign",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"},{name:"minSalePriceInWei",type:"uint256"}],name:"offerPunkForSale",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"getPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[{name:"",type:"address"}],name:"pendingWithdrawals",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"punkNoLongerForSale",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{inputs:[],payable:!0,type:"constructor",stateMutability:"payable"},{anonymous:!1,inputs:[{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"punkIndex",type:"uint256"}],name:"Assign",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"punkIndex",type:"uint256"}],name:"PunkTransfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"minValue",type:"uint256"},{indexed:!0,name:"toAddress",type:"address"}],name:"PunkOffered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"value",type:"uint256"},{indexed:!0,name:"fromAddress",type:"address"}],name:"PunkBidEntered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"value",type:"uint256"},{indexed:!0,name:"fromAddress",type:"address"}],name:"PunkBidWithdrawn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"value",type:"uint256"},{indexed:!0,name:"fromAddress",type:"address"},{indexed:!0,name:"toAddress",type:"address"}],name:"PunkBought",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"}],name:"PunkNoLongerForSale",type:"event"}];var k=class extends f{constructor({walletClient:e}){let{CryptoPunksAddress:t}=T(e.chain);super({walletClient:e,address:t,abi:ge})}async encodeBuyPunk(e){return Qe({abi:this.abi,functionName:"buyPunk",args:[e]})}};d(k,"CryptoPunks");import{encodeFunctionData as Ie}from"viem";var v=d((s,e)=>s&&e&&s.toLowerCase()===e.toLowerCase(),"areSameAddress"),O=d((s,e)=>{let t=T({id:s});return{name:"GONDI_MULTI_SOURCE_LOAN",version:v(e,t.MultiSourceLoanV4Address)?"1":"2",chainId:s,verifyingContract:e}},"getDomain"),be=d(s=>Number(s.valueOf()),"toInteger"),R=d(s=>Math.ceil(be(s)/1e3),"millisToSeconds"),ze=60*60*24,Fe=d(s=>be(s)/1e4,"bpsToPercentage"),Se="MarketPlace.Native",Y=d(({offer:s,tokenId:e,amount:t,expirationTime:n})=>{let a={...s,lender:s.lenderAddress,borrower:s.borrowerAddress,signer:s.signerAddress??S,validators:s.offerValidators,requiresLiquidation:!!s.requiresLiquidation};return{offer:a,signature:a.signature,tokenId:e,amount:t??a.principalAmount,expirationTime:n??BigInt(R(Date.now())+ze)}},"emitLoanArgsToMslArgs");var E=class extends f{mslAddress;constructor({walletClient:e,mslAddress:t}){let{LeverageAddress:n}=T(e.chain);super({walletClient:e,address:n,abi:ye}),this.mslAddress=t}async signExecutionData(e){return this.wallet.signTypedData({domain:O(this.wallet.chain.id,this.mslAddress),primaryType:"ExecutionData",types:{ExecutionData:[{name:"offer",type:"LoanOffer"},{name:"tokenId",type:"uint256"},{name:"amount",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"callbackData",type:"bytes"}],LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"borrower",type:"address"},{name:"capacity",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:e})}async signRepaymentData(e){return this.wallet.signTypedData({domain:O(this.wallet.chain.id,this.mslAddress),primaryType:"SignableRepaymentData",types:{SignableRepaymentData:[{name:"loanId",type:"uint256"},{name:"callbackData",type:"bytes"},{name:"shouldDelegate",type:"bool"}]},message:e})}async buy({leverageBuyData:e,ethToSend:t}){let n=await this.safeContractWrite.buy([await Promise.all(e.map(async a=>{let i={offer:a.offer,tokenId:a.nft.tokenId,amount:a.amount,expirationTime:a.expirationTime,callbackData:a.callbackData};return Ie({abi:x,functionName:"emitLoan",args:[{executionData:i,lender:a.offer.lender,borrower:this.wallet.account.address,lenderOfferSignature:a.offer.signature,borrowerOfferSignature:await this.signExecutionData(i)}]})}))],{value:t});return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.BNPLLoansStarted(),r=y(a,i);if(r.length===0)throw new Error("BNPL Loans not started");return{...r[0].args,...a}}}}async sell({loan:e,callbackData:t,shouldDelegate:n,loanId:a}){let i={loanId:a,callbackData:t,shouldDelegate:n},r=await this.safeContractWrite.sell([[Ie({abi:x,functionName:"repayLoan",args:[{data:i,loan:e,borrowerSignature:await this.signRepaymentData(i)}]})]]);return{txHash:r,waitTxInBlock:async()=>{let o=await this.bcClient.waitForTransactionReceipt({hash:r}),l=await this.contract.createEventFilter.SellAndRepayExecuted(),p=y(o,l);if(p.length===0)throw new Error("Sell and repay not executed");return{...p[0].args,...o}}}}};d(E,"Leverage");var D=class extends f{constructor({walletClient:e}){let{MultiSourceLoanV4Address:t}=T(e.chain);super({walletClient:e,address:t,abi:Te})}async signOffer({verifyingContract:e,structToSign:t}){return this.wallet.signTypedData({domain:O(this.wallet.chain.id,e),primaryType:"LoanOffer",types:{LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"borrower",type:"address"},{name:"capacity",type:"uint256"},{name:"signer",type:"address"},{name:"requiresLiquidation",type:"bool"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:t})}async signRenegotiationOffer({verifyingContract:e,structToSign:t}){return this.wallet.signTypedData({domain:O(this.wallet.chain.id,e),primaryType:"RenegotiationOffer",types:{RenegotiationOffer:[{name:"renegotiationId",type:"uint256"},{name:"loanId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"signer",type:"address"},{name:"targetPrincipal",type:"uint256[]"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"strictImprovement",type:"bool"}]},message:t})}async cancelOffer({id:e}){let t=await this.safeContractWrite.cancelOffer([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OfferCancelled(),i=y(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllOffers({minId:e}){let t=await this.safeContractWrite.cancelAllOffers([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllOffersCancelled(),i=y(n,a);if(i.length===0)throw new Error("Offers not cancelled");return{...i[0].args,...n}}}}async cancelRefinanceOffer({id:e}){let t=await this.safeContractWrite.cancelRenegotiationOffer([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=y(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllRenegotiations({minId:e}){let t=await this.safeContractWrite.cancelAllRenegotiationOffers([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=y(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async emitLoan({offer:e,signature:t,tokenId:n}){let a=await this.safeContractWrite.emitLoan([e,n,t,!1]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanEmitted(),o=y(i,r);if(o.length===0)throw new Error("Loan not emitted");let l=o[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${l.loanId}`,...l.loan,contractAddress:this.contract.address},loanId:l.loanId,offerId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${l.offerId}`,...i}}}}async repayLoan({loan:e,nftReceiver:t,loanId:n}){let a=t??this.wallet.account.address,i=await this.safeContractWrite.repayLoan([a,n,e,!1]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),o=await this.contract.createEventFilter.LoanRepaid(),l=y(r,o);if(l.length===0)throw new Error("Loan not repaid");return{...l[0].args,...r}}}}getRemainingLockupSeconds(){return 0}async refinanceFullLoan({offer:e,signature:t,loan:n}){let a=await this.safeContractWrite.refinanceFull([e,n,t]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRefinanced(),o=y(i,r);if(o.length===0)throw new Error("Loan not refinanced");let l=o[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${l.newLoanId}`,...l.loan,contractAddress:this.address},renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${l.renegotiationId}`,...i}}}}async refinancePartialLoan({offer:e,loan:t}){let n=await this.safeContractWrite.refinancePartial([e,t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanRefinanced(),r=y(a,i);if(r.length===0)throw new Error("Loan not refinanced");let o=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${o.newLoanId}`,...o.loan,contractAddress:this.contract.address},renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${o.renegotiationId}`,...a}}}}async extendLoan(){throw new Error("Not implemented for V1")}async delegateMulticall(){throw new Error("Not implemented for V1")}async delegate(){throw new Error("Not implemented for V1")}async revokeDelegate(){throw new Error("Not implemented for V1")}async revokeDelegationsAndEmitLoan(){throw new Error("Not implemented for V1")}async liquidateLoan({loan:e,loanId:t}){let n=await this.safeContractWrite.liquidateLoan([t,e]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanForeclosed(),r=await this.contract.createEventFilter.LoanSentToLiquidator(),o=y(a,i),l=y(a,r);if(o.length===0&&l.length===0)throw new Error("Loan not liquidated");return{...o?.[0]?.args??l?.[0]?.args,...a}}}}};d(D,"MslV4");import{encodeFunctionData as J}from"viem";var V=class extends f{constructor({walletClient:e}){let{MultiSourceLoanV5Address:t}=T(e.chain);super({walletClient:e,address:t,abi:x})}async signOffer({verifyingContract:e,structToSign:t}){return this.wallet.signTypedData({domain:O(this.wallet.chain.id,e),primaryType:"LoanOffer",types:{LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"borrower",type:"address"},{name:"capacity",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:t})}async signRenegotiationOffer({verifyingContract:e,structToSign:t}){return this.wallet.signTypedData({domain:O(this.wallet.chain.id,e),primaryType:"RenegotiationOffer",types:{RenegotiationOffer:[{name:"renegotiationId",type:"uint256"},{name:"loanId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"targetPrincipal",type:"uint256[]"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"}]},message:t})}async cancelOffer({id:e}){let t=await this.safeContractWrite.cancelOffer([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OfferCancelled(),i=y(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllOffers({minId:e}){let t=await this.safeContractWrite.cancelAllOffers([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllOffersCancelled(),i=y(n,a);if(i.length===0)throw new Error("Offers not cancelled");return{...i[0].args,...n}}}}async cancelRefinanceOffer({id:e}){let t=await this.safeContractWrite.cancelRenegotiationOffer([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=y(n,a);if(i.length===0)throw new Error("Renegotiation offer not cancelled");return{...i[0].args,...n}}}}async cancelAllRenegotiations({minId:e}){let t=await this.safeContractWrite.cancelAllRenegotiationOffers([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllRenegotiationOffersCancelled(),i=y(n,a);if(i.length===0)throw new Error("Renegotiation offers not cancelled");return{...i[0].args,...n}}}}mapEmitLoanToMslArgs({offer:e,tokenId:t,amount:n,expirationTime:a,signature:i}){return{executionData:{offer:e,tokenId:t,amount:n,expirationTime:a,callbackData:"0x"},lender:e.lender,borrower:this.wallet.account.address,lenderOfferSignature:i,borrowerOfferSignature:"0x"}}async emitLoan(e){let t=this.mapEmitLoanToMslArgs(e),n=await this.safeContractWrite.emitLoan([t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanEmitted(),r=y(a,i);if(r.length===0)throw new Error("Loan not emitted");let o=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${o.loanId}`,...o.loan,contractAddress:this.contract.address},loanId:o.loanId,offerId:`${this.contract.address.toLowerCase()}.${e.offer.lender.toLowerCase()}.${o.offerId}`,...a}}}}async revokeDelegationsAndEmitLoan({delegations:e,emit:t}){if(e.length===0)throw new Error("At least one delegation must be revoked");let n=e.map(o=>J({abi:x,functionName:"revokeDelegate",args:[o,t.offer.nftCollateralAddress,t.tokenId]})),a=this.mapEmitLoanToMslArgs(t),i=J({abi:x,functionName:"emitLoan",args:[a]}),r=await this.safeContractWrite.multicall([[...n,i]]);return{txHash:r,waitTxInBlock:async()=>{let o=await this.bcClient.waitForTransactionReceipt({hash:r}),l=await this.contract.createEventFilter.RevokeDelegate(),p=y(o,l);if(p.length!==e.length)throw new Error("Revoke delegations failed");let u=await this.contract.createEventFilter.LoanEmitted(),c=y(o,u);if(c.length===0)throw new Error("Loan not emitted");let F=[...p.map(({args:I})=>I),...c.map(({args:I})=>I)],g=c[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${g.loanId}`,...g.loan,contractAddress:this.contract.address},loanId:g.loanId,...o,results:F}}}}async repayLoan({loan:e,loanId:t}){let n={loanId:t,callbackData:"0x",shouldDelegate:!1},a=await this.safeContractWrite.repayLoan([{data:n,loan:e,borrowerSignature:"0x"}]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRepaid(),o=y(i,r);if(o.length===0)throw new Error("Loan not repaid");return{...o[0].args,...i}}}}async getRemainingLockupSeconds({loan:e}){let t=e.source[0],a=e.startTime+e.duration-t.startTime,i=await this.contract.read.getMinLockPeriod(),r=Fe(i),o=Math.ceil(Number(a)*r),l=Math.ceil(R(Date.now())-Number(t.startTime));return l>=o?0:o-l}async refinanceFullLoan({offer:e,signature:t,loan:n}){let a=await this.safeContractWrite.refinanceFull([e,n,t]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRefinanced(),o=y(i,r);if(o.length===0)throw new Error("Loan not refinanced");let l=o[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${l.newLoanId}`,...l.loan,contractAddress:this.contract.address},renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${l.renegotiationId}`,...i}}}}async refinancePartialLoan({offer:e,loan:t}){let n=await this.safeContractWrite.refinancePartial([e,t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanRefinanced(),r=y(a,i);if(r.length===0)throw new Error("Loan not refinanced");let o=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${o.newLoanId}`,...o.loan,contractAddress:this.contract.address},renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${o.renegotiationId}`,...a}}}}async extendLoan({loan:e,loanId:t,newDuration:n}){let a=await this.safeContractWrite.extendLoan([t,e,n-e.duration]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanExtended(),o=y(i,r);if(o.length===0)throw new Error("Loan not extended");let l=o[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${l.newLoanId}`,...l.loan,contractAddress:this.contract.address},newLoanId:l.newLoanId,...i}}}}async delegateMulticall(e){if(e.length===0)throw new Error("At least one delegation must be revoked");let t=await this.safeContractWrite.multicall([e.map(n=>J({abi:x,functionName:"delegate",args:[n.loanId,n.loan,n.to,n.rights??b,n.enable]}))]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.Delegated(),i=y(n,a);if(i.length!==e.length)throw new Error("Delegate multicall failed");return{...n,results:i.map(({args:r})=>r)}}}}async delegate({loan:e,loanId:t,to:n,rights:a=b,enable:i}){let r=await this.safeContractWrite.delegate([t,e,n,a,i]);return{txHash:r,waitTxInBlock:async()=>{let o=await this.bcClient.waitForTransactionReceipt({hash:r}),l=await this.contract.createEventFilter.Delegated(),p=y(o,l);if(p.length===0)throw new Error("Token not delegated");let u=p[0].args;return{loan:{...e,loanId:t,contractAddress:this.contract.address},value:u.value,...o}}}}async revokeDelegate({to:e,collection:t,tokenId:n}){let a=await this.safeContractWrite.revokeDelegate([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.RevokeDelegate(),o=y(i,r);if(o.length===0)throw new Error("Token delegation not revoked");return{...o[0].args,...i}}}}async liquidateLoan({loan:e,loanId:t}){let n=await this.safeContractWrite.liquidateLoan([t,e]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanForeclosed(),r=await this.contract.createEventFilter.LoanSentToLiquidator(),o=y(a,i),l=y(a,r);if(o.length===0&&l.length===0)throw new Error("Loan not liquidated");return{...o?.[0]?.args??l?.[0]?.args,...a}}}}};d(V,"MslV5");import{zeroAddress as H}from"viem";var w=[{inputs:[{internalType:"address",name:"conduitController",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"BadContractSignature",type:"error"},{inputs:[],name:"BadFraction",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"BadReturnValueFromERC20OnTransfer",type:"error"},{inputs:[{internalType:"uint8",name:"v",type:"uint8"}],name:"BadSignatureV",type:"error"},{inputs:[],name:"CannotCancelOrder",type:"error"},{inputs:[],name:"ConsiderationCriteriaResolverOutOfRange",type:"error"},{inputs:[],name:"ConsiderationLengthNotEqualToTotalOriginal",type:"error"},{inputs:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"considerationIndex",type:"uint256"},{internalType:"uint256",name:"shortfallAmount",type:"uint256"}],name:"ConsiderationNotMet",type:"error"},{inputs:[],name:"CriteriaNotEnabledForItem",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256[]",name:"identifiers",type:"uint256[]"},{internalType:"uint256[]",name:"amounts",type:"uint256[]"}],name:"ERC1155BatchTransferGenericFailure",type:"error"},{inputs:[],name:"InexactFraction",type:"error"},{inputs:[],name:"InsufficientNativeTokensSupplied",type:"error"},{inputs:[],name:"Invalid1155BatchTransferEncoding",type:"error"},{inputs:[],name:"InvalidBasicOrderParameterEncoding",type:"error"},{inputs:[{internalType:"address",name:"conduit",type:"address"}],name:"InvalidCallToConduit",type:"error"},{inputs:[{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"address",name:"conduit",type:"address"}],name:"InvalidConduit",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"InvalidContractOrder",type:"error"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidERC721TransferAmount",type:"error"},{inputs:[],name:"InvalidFulfillmentComponentData",type:"error"},{inputs:[{internalType:"uint256",name:"value",type:"uint256"}],name:"InvalidMsgValue",type:"error"},{inputs:[],name:"InvalidNativeOfferItem",type:"error"},{inputs:[],name:"InvalidProof",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"InvalidRestrictedOrder",type:"error"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[],name:"InvalidSigner",type:"error"},{inputs:[{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"}],name:"InvalidTime",type:"error"},{inputs:[{internalType:"uint256",name:"fulfillmentIndex",type:"uint256"}],name:"MismatchedFulfillmentOfferAndConsiderationComponents",type:"error"},{inputs:[{internalType:"enum Side",name:"side",type:"uint8"}],name:"MissingFulfillmentComponentOnAggregation",type:"error"},{inputs:[],name:"MissingItemAmount",type:"error"},{inputs:[],name:"MissingOriginalConsiderationItems",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"NativeTokenTransferGenericFailure",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"NoContract",type:"error"},{inputs:[],name:"NoReentrantCalls",type:"error"},{inputs:[],name:"NoSpecifiedOrdersAvailable",type:"error"},{inputs:[],name:"OfferAndConsiderationRequiredOnFulfillment",type:"error"},{inputs:[],name:"OfferCriteriaResolverOutOfRange",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderAlreadyFilled",type:"error"},{inputs:[{internalType:"enum Side",name:"side",type:"uint8"}],name:"OrderCriteriaResolverOutOfRange",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderIsCancelled",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderPartiallyFilled",type:"error"},{inputs:[],name:"PartialFillsNotEnabledForOrder",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TokenTransferGenericFailure",type:"error"},{inputs:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"considerationIndex",type:"uint256"}],name:"UnresolvedConsiderationCriteria",type:"error"},{inputs:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"offerIndex",type:"uint256"}],name:"UnresolvedOfferCriteria",type:"error"},{inputs:[],name:"UnusedItemParameters",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newCounter",type:"uint256"},{indexed:!0,internalType:"address",name:"offerer",type:"address"}],name:"CounterIncremented",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{indexed:!0,internalType:"address",name:"offerer",type:"address"},{indexed:!0,internalType:"address",name:"zone",type:"address"}],name:"OrderCancelled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{indexed:!0,internalType:"address",name:"offerer",type:"address"},{indexed:!0,internalType:"address",name:"zone",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],indexed:!1,internalType:"struct SpentItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],indexed:!1,internalType:"struct ReceivedItem[]",name:"consideration",type:"tuple[]"}],name:"OrderFulfilled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],indexed:!1,internalType:"struct OrderParameters",name:"orderParameters",type:"tuple"}],name:"OrderValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32[]",name:"orderHashes",type:"bytes32[]"}],name:"OrdersMatched",type:"event"},{inputs:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"counter",type:"uint256"}],internalType:"struct OrderComponents[]",name:"orders",type:"tuple[]"}],name:"cancel",outputs:[{internalType:"bool",name:"cancelled",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder",name:"",type:"tuple"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"",type:"tuple[]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"}],name:"fulfillAdvancedOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"maximumFulfilled",type:"uint256"}],name:"fulfillAvailableAdvancedOrders",outputs:[{internalType:"bool[]",name:"",type:"bool[]"},{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"maximumFulfilled",type:"uint256"}],name:"fulfillAvailableOrders",outputs:[{internalType:"bool[]",name:"",type:"bool[]"},{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"considerationToken",type:"address"},{internalType:"uint256",name:"considerationIdentifier",type:"uint256"},{internalType:"uint256",name:"considerationAmount",type:"uint256"},{internalType:"address payable",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{internalType:"address",name:"offerToken",type:"address"},{internalType:"uint256",name:"offerIdentifier",type:"uint256"},{internalType:"uint256",name:"offerAmount",type:"uint256"},{internalType:"enum BasicOrderType",name:"basicOrderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"offererConduitKey",type:"bytes32"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalAdditionalRecipients",type:"uint256"},{components:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct AdditionalRecipient[]",name:"additionalRecipients",type:"tuple[]"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct BasicOrderParameters",name:"parameters",type:"tuple"}],name:"fulfillBasicOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"considerationToken",type:"address"},{internalType:"uint256",name:"considerationIdentifier",type:"uint256"},{internalType:"uint256",name:"considerationAmount",type:"uint256"},{internalType:"address payable",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{internalType:"address",name:"offerToken",type:"address"},{internalType:"uint256",name:"offerIdentifier",type:"uint256"},{internalType:"uint256",name:"offerAmount",type:"uint256"},{internalType:"enum BasicOrderType",name:"basicOrderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"offererConduitKey",type:"bytes32"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalAdditionalRecipients",type:"uint256"},{components:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct AdditionalRecipient[]",name:"additionalRecipients",type:"tuple[]"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct BasicOrderParameters",name:"parameters",type:"tuple"}],name:"fulfillBasicOrder_efficient_6GL6yc",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order",name:"",type:"tuple"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"}],name:"fulfillOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"contractOfferer",type:"address"}],name:"getContractOffererNonce",outputs:[{internalType:"uint256",name:"nonce",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"offerer",type:"address"}],name:"getCounter",outputs:[{internalType:"uint256",name:"counter",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"counter",type:"uint256"}],internalType:"struct OrderComponents",name:"",type:"tuple"}],name:"getOrderHash",outputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"getOrderStatus",outputs:[{internalType:"bool",name:"isValidated",type:"bool"},{internalType:"bool",name:"isCancelled",type:"bool"},{internalType:"uint256",name:"totalFilled",type:"uint256"},{internalType:"uint256",name:"totalSize",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"incrementCounter",outputs:[{internalType:"uint256",name:"newCounter",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"information",outputs:[{internalType:"string",name:"version",type:"string"},{internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{internalType:"address",name:"conduitController",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"",type:"tuple[]"},{components:[{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"offerComponents",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"considerationComponents",type:"tuple[]"}],internalType:"struct Fulfillment[]",name:"",type:"tuple[]"},{internalType:"address",name:"recipient",type:"address"}],name:"matchAdvancedOrders",outputs:[{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"",type:"tuple[]"},{components:[{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"offerComponents",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"considerationComponents",type:"tuple[]"}],internalType:"struct Fulfillment[]",name:"",type:"tuple[]"}],name:"matchOrders",outputs:[{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"",type:"tuple[]"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var K=class extends f{constructor({walletClient:e}){let{SeaportAddress:t}=T(e.chain);super({walletClient:e,address:t,abi:w})}async getOrderHash(e){return this.contract.read.getOrderHash([e])}async getCounter(){return this.contract.read.getCounter([this.wallet.account.address])}async signOrder(e){let t={name:"Seaport",version:"1.5",chainId:this.wallet.chain?.id,verifyingContract:this.address},n={OrderComponents:[{name:"offerer",type:"address"},{name:"zone",type:"address"},{name:"offer",type:"OfferItem[]"},{name:"consideration",type:"ConsiderationItem[]"},{name:"orderType",type:"uint8"},{name:"startTime",type:"uint256"},{name:"endTime",type:"uint256"},{name:"zoneHash",type:"bytes32"},{name:"salt",type:"uint256"},{name:"conduitKey",type:"bytes32"},{name:"counter",type:"uint256"}],OfferItem:[{name:"itemType",type:"uint8"},{name:"token",type:"address"},{name:"identifierOrCriteria",type:"uint256"},{name:"startAmount",type:"uint256"},{name:"endAmount",type:"uint256"}],ConsiderationItem:[{name:"itemType",type:"uint8"},{name:"token",type:"address"},{name:"identifierOrCriteria",type:"uint256"},{name:"startAmount",type:"uint256"},{name:"endAmount",type:"uint256"},{name:"recipient",type:"address"}]};return this.wallet.signTypedData({domain:t,types:n,primaryType:"OrderComponents",message:e})}async generateOrderFromSaleOffer({collectionContractAddress:e,tokenId:t,price:n,expirationTime:a}){let{WETH_ADDRESS:i}=A(),r={offerer:this.wallet.account.address,zone:H,offer:[{itemType:1,token:i,identifierOrCriteria:0n,startAmount:n,endAmount:n}],consideration:[{itemType:2,token:e,identifierOrCriteria:t,startAmount:1n,endAmount:1n,recipient:this.wallet.account.address}],orderType:0,startTime:BigInt(Math.floor(R(Date.now()))),endTime:a,zoneHash:b,salt:0n,conduitKey:b,counter:await this.getCounter(),totalOriginalConsiderationItems:1n},o=await this.signOrder(r);return{parameters:r,signature:o}}async recoverOrderFromNativeBid({nativeBid:e,collectionContractAddress:t,tokenId:n}){let{WETH_ADDRESS:a}=A();return{offerer:e.maker,zone:H,offer:[{itemType:1,token:a,identifierOrCriteria:0n,startAmount:e.netAmount,endAmount:e.netAmount}],consideration:[{itemType:2,token:t,identifierOrCriteria:n,startAmount:1n,endAmount:1n,recipient:e.maker}],orderType:0,startTime:BigInt(Math.floor(R(e.startTime.getTime()))),endTime:BigInt(Math.floor(R(e.expiration?.getTime()??Date.now()))),zoneHash:b,salt:0n,conduitKey:b,counter:await this.getCounter(),totalOriginalConsiderationItems:1n}}async generateInverseOrder(e){return{offerer:this.wallet.account?.address??H,zone:H,offer:e.consideration,consideration:e.offer.map(t=>({...t,recipient:this.wallet.account?.address??H})),orderType:0,startTime:e.startTime,endTime:e.endTime,zoneHash:b,salt:0n,conduitKey:b,counter:await this.getCounter(),totalOriginalConsiderationItems:BigInt(e.offer.length)}}generateFulfillmentsForOrderAndInverse(e){let t=[];return e.offer.forEach((n,a)=>{t.push({offerComponents:[{orderIndex:0n,itemIndex:BigInt(a)}],considerationComponents:[{orderIndex:1n,itemIndex:BigInt(a)}]})}),e.consideration.forEach((n,a)=>{t.push({offerComponents:[{orderIndex:1n,itemIndex:BigInt(a)}],considerationComponents:[{orderIndex:0n,itemIndex:BigInt(a)}]})}),t}async cancel({orderComponents:e}){let t=await this.safeContractWrite.cancel([[e]]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OrderCancelled({offerer:e.offerer}),i=y(n,a);if(i.length===0)throw new Error("Order not cancelled");return{...i[0].args,...n}}}}};d(K,"Seaport");var U=class extends f{constructor({walletClient:e}){let{UserVaultV5Address:t}=T(e.chain);super({walletClient:e,address:t,abi:ue})}async burnAndWithdraw({vaultId:e,collections:t,tokenIds:n,tokens:a=[]}){if(t.length!=n.length)throw new Error("collections and tokenIds must have the same length");let i=await this.safeContractWrite.burnAndWithdraw([e,t,n,a]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),o=await this.contract.createEventFilter.ERC721Withdrawn(),l=y(r,o);if(l.length!==n.length)throw new Error("Withdrawn count mismatch");return{events:l.map(p=>p.args),...r}}}}async createVault(e){let{id:t}=await this.#e(),n=[],a=e.reduce((i,r)=>{let{collection:o,tokenIds:l}=r,p=i.findIndex(u=>u.collection===o);return p===-1?i.push({collection:o,tokenIds:l}):i[p].tokenIds=[...i[p].tokenIds,...l],i},[]);for(let i=0;i<a.length;i++){let{collection:r,tokenIds:o}=a[i],p=await(await this.depositERC721s({vaultId:t,collection:r,tokenIds:o})).waitTxInBlock();n.push(p)}return{vaultId:t,receipts:n}}async depositERC721s({vaultId:e,collection:t,tokenIds:n}){let a=await this.safeContractWrite.depositERC721s([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.ERC721Deposited(),o=y(i,r);if(o.length===0)throw new Error("Deposit not created");return{...o[0].args,...i}}}}async#e(){let e=await this.safeContractWrite.mint(void 0),t=await this.bcClient.waitForTransactionReceipt({hash:e}),n=await this.contract.createEventFilter.Transfer({}),a=y(t,n);if(a.length===0)throw new Error("Vault not created");return{...a[0].args,...t}}};d(U,"UserVaultV5");var q=class{walletClient;publicClient;MultiSourceLoanV4;MultiSourceLoanV5;AuctionLoanLiquidatorV4;AuctionLoanLiquidatorV5;UserVaultV5;Leverage;Seaport;CryptoPunks;constructor(e,t){this.walletClient=t,this.publicClient=e,this.MultiSourceLoanV4=new D({walletClient:t}),this.MultiSourceLoanV5=new V({walletClient:t}),this.AuctionLoanLiquidatorV4=new h({walletClient:t}),this.AuctionLoanLiquidatorV5=new N({walletClient:t}),this.UserVaultV5=new U({walletClient:t}),this.Leverage=new E({walletClient:t,mslAddress:this.MultiSourceLoanV5.address}),this.Seaport=new K({walletClient:t}),this.CryptoPunks=new k({walletClient:t})}Msl(e){if(v(e,this.MultiSourceLoanV4.address))return this.MultiSourceLoanV4;if(v(e,this.MultiSourceLoanV5.address))return this.MultiSourceLoanV5;throw new Error(`Invalid Contract Address ${e}`)}All(e){if(v(e,this.MultiSourceLoanV4.address))return this.AuctionLoanLiquidatorV4;if(v(e,this.MultiSourceLoanV5.address))return this.AuctionLoanLiquidatorV5;throw new Error(`Invalid Contract Address ${e}`)}UserVault(e){if(v(e,this.UserVaultV5.address))return this.UserVaultV5;throw new Error(`Invalid Contract Address ${e}`)}ERC721(e){return Ae({address:e,abi:z,walletClient:this.walletClient,publicClient:this.publicClient})}ERC20(e){return Ae({address:e,abi:pe,walletClient:this.walletClient,publicClient:this.publicClient})}};d(q,"Contracts");var S=Ze,b=`0x${"0".repeat(64)}`,Oe="0x0";function y(s,e){return s.logs.filter(t=>Xe(e)[0]==t.topics[0]).map(t=>Ge({abi:e.abi,data:t.data,topics:t.topics,eventName:e.eventName})).filter(t=>t.eventName==e.eventName)}d(y,"filterLogs");import{ApolloClient as it,ApolloLink as Re,createHttpLink as rt,InMemoryCache as st}from"@apollo/client/core/index.js";import{setContext as ot}from"@apollo/client/link/context/index.js";import{withScalars as lt}from"apollo-link-scalars";import{buildSchema as dt}from"graphql";import{ApolloClient as je,ApolloLink as Pe,createHttpLink as Ye,InMemoryCache as Je}from"@apollo/client/core/index.js";import{gql as Ce}from"graphql-tag";import{SiweMessage as et}from"siwe";var xe=d(()=>process.env.GONDI_URL??"https://api.gondi.xyz","gondiUrl"),ee=d(()=>`${xe()}/graphql`,"authApiUrl"),Me=d(()=>`${xe()}/lending/graphql`,"apiUrl");var tt=d(async()=>{let s=Pe.from([Ye({uri:({operationName:e})=>`${ee()}?operation=${encodeURIComponent(e)}`})]);return new je({link:Pe.from([s]),defaultOptions:{query:{errorPolicy:"all"},mutate:{errorPolicy:"all"}},cache:new Je({})})},"getAuthClient"),nt=d(async({wallet:s})=>{let e=await tt(),{data:t,errors:n}=await e.mutate({mutation:Ce`
|
|
1
|
+
var oe=Object.defineProperty;var De=(s,e,t)=>e in s?oe(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var d=(s,e)=>oe(s,"name",{value:e,configurable:!0});var le=(s,e,t)=>(De(s,typeof e!="symbol"?e+"":e,t),t);import{createPublicClient as jt,createTransport as Yt}from"viem";import{decodeEventLog as Xe,encodeEventTopics as Ze,getContract as Ae,zeroAddress as je}from"viem";var de=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"liquidationDistributor",internalType:"address",type:"address"},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"triggerFee",internalType:"uint256",type:"uint256"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[],name:"AuctionAlreadyInProgressError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionNotOverError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionOverError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CouldNotModifyValidLoansError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"InvalidHashAuctionError"},{type:"error",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"InvalidTriggerFee"},{type:"error",inputs:[{name:"_loan",internalType:"address",type:"address"}],name:"LoanNotAcceptedError"},{type:"error",inputs:[{name:"_minBid",internalType:"uint256",type:"uint256"}],name:"MinBidError"},{type:"error",inputs:[{name:"_owner",internalType:"address",type:"address"}],name:"NFTNotOwnedError"},{type:"error",inputs:[],name:"NoBidsError"},{type:"error",inputs:[],name:"ZeroAddressError"},{type:"event",anonymous:!1,inputs:[{name:"loanContract",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auctionContract",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1},{name:"proceeds",internalType:"uint256",type:"uint256",indexed:!1},{name:"settler",internalType:"address",type:"address",indexed:!1},{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"AuctionSettled"},{type:"event",anonymous:!1,inputs:[{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newBidder",internalType:"address",type:"address",indexed:!1},{name:"bid",internalType:"uint256",type:"uint256",indexed:!1},{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BidPlaced"},{type:"event",anonymous:!1,inputs:[{name:"liquidationDistributor",internalType:"address",type:"address",indexed:!1}],name:"LiquidationDistributorUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractRemoved"},{type:"event",anonymous:!1,inputs:[{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}],indexed:!1}],name:"LoanLiquidationStarted"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"TriggerFeeUpdated"},{stateMutability:"view",type:"function",inputs:[],name:"MAX_TRIGGER_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"MIN_INCREMENT_BPS",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"addLoanContract",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"getAuctionHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidationDistributor",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getTriggerFee",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getValidLoanContracts",outputs:[{name:"",internalType:"address[]",type:"address[]"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_asset",internalType:"address",type:"address"},{name:"_duration",internalType:"uint96",type:"uint96"},{name:"_originator",internalType:"address",type:"address"}],name:"liquidateLoan",outputs:[{name:"",internalType:"bytes",type:"bytes"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_bid",internalType:"uint256",type:"uint256"}],name:"placeBid",outputs:[{name:"",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"removeLoanContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"settleAuction",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"__liquidationDistributor",internalType:"address",type:"address"}],name:"updateLiquidationDistributor",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"updateTriggerFee",outputs:[]}];var pe=[{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"Transfer"},{stateMutability:"view",type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"allowance",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"amount",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"decimals",outputs:[{name:"",internalType:"uint8",type:"uint8"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"nonces",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"owner",internalType:"address",type:"address"},{name:"spender",internalType:"address",type:"address"},{name:"value",internalType:"uint256",type:"uint256"},{name:"deadline",internalType:"uint256",type:"uint256"},{name:"v",internalType:"uint8",type:"uint8"},{name:"r",internalType:"bytes32",type:"bytes32"},{name:"s",internalType:"bytes32",type:"bytes32"}],name:"permit",outputs:[]},{stateMutability:"view",type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[],name:"totalSupply",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"to",internalType:"address",type:"address"},{name:"amount",internalType:"uint256",type:"uint256"}],name:"transfer",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"amount",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[{name:"",internalType:"bool",type:"bool"}]}],z=[{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"operator",internalType:"address",type:"address",indexed:!0},{name:"approved",internalType:"bool",type:"bool",indexed:!1}],name:"ApprovalForAll"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Transfer"},{stateMutability:"nonpayable",type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"owner",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"uint256",type:"uint256"}],name:"getApproved",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"isApprovedForAll",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"ownerOf",outputs:[{name:"owner",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"},{name:"data",internalType:"bytes",type:"bytes"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"operator",internalType:"address",type:"address"},{name:"approved",internalType:"bool",type:"bool"}],name:"setApprovalForAll",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"interfaceId",internalType:"bytes4",type:"bytes4"}],name:"supportsInterface",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"tokenURI",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[]}];var ye=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"_multiSourceLoanAddress",internalType:"address",type:"address"},{name:"_marketplaceContracts",internalType:"address",type:"address"},{name:"_wethAddress",internalType:"address payable",type:"address"},{name:"_punkMarketAddress",internalType:"address payable",type:"address"},{name:"_wrappedPunkAddress",internalType:"address payable",type:"address"},{name:"_seaportAddress",internalType:"address payable",type:"address"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[],name:"CouldNotReturnEthError"},{type:"error",inputs:[],name:"InvalidAddressUpdateError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"MarketplaceAddressNotWhitelisted"},{type:"error",inputs:[],name:"OnlyMultiSourceLoanError"},{type:"error",inputs:[],name:"OnlyWethSupportedError"},{type:"event",anonymous:!1,inputs:[{name:"_loanIds",internalType:"uint256[]",type:"uint256[]",indexed:!1}],name:"BNPLLoansStarted"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"MultiSourceLoanPendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"MultiSourceLoanUpdated"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"SeaportPendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"SeaportUpdated"},{type:"event",anonymous:!1,inputs:[{name:"_loanIds",internalType:"uint256[]",type:"uint256[]",indexed:!1}],name:"SellAndRepayExecuted"},{stateMutability:"payable",type:"fallback"},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_executionData",internalType:"bytes",type:"bytes"}],name:"afterNFTTransfer",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_fee",internalType:"uint256",type:"uint256"},{name:"_executionData",internalType:"bytes",type:"bytes"}],name:"afterPrincipalTransfer",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"payable",type:"function",inputs:[{name:"_executionData",internalType:"bytes[]",type:"bytes[]"}],name:"buy",outputs:[{name:"",internalType:"uint256[]",type:"uint256[]"},{name:"",internalType:"struct IMultiSourceLoan.Loan[]",type:"tuple[]",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"finalUpdateMultiSourceLoanAddress",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"finalUpdateSeaportAddress",outputs:[]},{stateMutability:"view",type:"function",inputs:[],name:"getMultiSourceLoanAddress",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getSeaportAddress",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_executionData",internalType:"bytes[]",type:"bytes[]"}],name:"sell",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"updateMultiSourceLoanAddressFirst",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"updateSeaportAddressFirst",outputs:[]},{stateMutability:"payable",type:"receive"}];var x=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"loanLiquidator",internalType:"address",type:"address"},{name:"protocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"maxSources",internalType:"uint256",type:"uint256"},{name:"minLockPeriod",internalType:"uint256",type:"uint256"},{name:"delegateRegistry",internalType:"address",type:"address"},{name:"flashActionContract",internalType:"address",type:"address"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledOrExecutedOfferError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"CancelledRenegotiationOfferError"},{type:"error",inputs:[],name:"CannotLiquidateError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"ECDSAInvalidSignature"},{type:"error",inputs:[{name:"length",internalType:"uint256",type:"uint256"}],name:"ECDSAInvalidSignatureLength"},{type:"error",inputs:[{name:"s",internalType:"bytes32",type:"bytes32"}],name:"ECDSAInvalidSignatureS"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredOfferError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredRenegotiationOfferError"},{type:"error",inputs:[],name:"ExtensionNotAvailableError"},{type:"error",inputs:[{name:"_amount",internalType:"uint256",type:"uint256"},{name:"_principalAmount",internalType:"uint256",type:"uint256"}],name:"InvalidAmountError"},{type:"error",inputs:[],name:"InvalidBorrowerError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"InvalidCollateralIdError"},{type:"error",inputs:[],name:"InvalidDurationError"},{type:"error",inputs:[],name:"InvalidLenderError"},{type:"error",inputs:[],name:"InvalidLiquidationError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"InvalidLoanError"},{type:"error",inputs:[],name:"InvalidMethodError"},{type:"error",inputs:[{name:"_fraction",internalType:"uint256",type:"uint256"}],name:"InvalidProtocolFeeError"},{type:"error",inputs:[],name:"InvalidRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidSignatureError"},{type:"error",inputs:[],name:"InvalidValueError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"_liquidator",internalType:"address",type:"address"}],name:"LiquidatorOnlyError"},{type:"error",inputs:[],name:"LoanExpiredError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"LoanNotDueError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowOfferIdError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinRenegotiationOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowRenegotiationOfferIdError"},{type:"error",inputs:[],name:"MaxCapacityExceededError"},{type:"error",inputs:[{name:"minLockPeriod",internalType:"uint256",type:"uint256"}],name:"MinLockPeriodTooHighError"},{type:"error",inputs:[{name:"i",internalType:"uint256",type:"uint256"}],name:"MulticallFailed"},{type:"error",inputs:[],name:"NFTNotReturnedError"},{type:"error",inputs:[],name:"NotStrictlyImprovedError"},{type:"error",inputs:[],name:"OnlyBorrowerCallableError"},{type:"error",inputs:[],name:"OnlyLenderCallableError"},{type:"error",inputs:[],name:"OnlyLenderOrBorrowerCallableError"},{type:"error",inputs:[],name:"PartialOfferCannotChangeDurationError"},{type:"error",inputs:[],name:"PartialOfferCannotHaveFeeError"},{type:"error",inputs:[],name:"RefinanceFullError"},{type:"error",inputs:[{name:"minTimestamp",internalType:"uint256",type:"uint256"}],name:"SourceCannotBeRefinancedError"},{type:"error",inputs:[{name:"sourcePrincipal",internalType:"uint256",type:"uint256"},{name:"loanPrincipal",internalType:"uint256",type:"uint256"}],name:"TargetPrincipalTooLowError"},{type:"error",inputs:[{name:"_pendingProtocolFeeSetTime",internalType:"uint256",type:"uint256"}],name:"TooEarlyError"},{type:"error",inputs:[{name:"sources",internalType:"uint256",type:"uint256"}],name:"TooManySourcesError"},{type:"error",inputs:[],name:"ZeroDurationError"},{type:"error",inputs:[],name:"ZeroInterestError"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minOfferId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minRenegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllRenegotiationOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"borrower",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BorrowerOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"newdelegateRegistry",internalType:"address",type:"address",indexed:!1}],name:"DelegateRegistryUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"delegate",internalType:"address",type:"address",indexed:!1},{name:"value",internalType:"bool",type:"bool",indexed:!1}],name:"Delegated"},{type:"event",anonymous:!1,inputs:[{name:"newFlashActionContract",internalType:"address",type:"address",indexed:!1}],name:"FlashActionContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"target",internalType:"address",type:"address",indexed:!1},{name:"data",internalType:"bytes",type:"bytes",indexed:!1}],name:"FlashActionExecuted"},{type:"event",anonymous:!1,inputs:[{name:"minimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ImprovementMinimumUpdated"},{type:"event",anonymous:!1,inputs:[{name:"newDuration",internalType:"uint256",type:"uint256",indexed:!1}],name:"LiquidationAuctionDurationUpdated"},{type:"event",anonymous:!1,inputs:[{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LiquidationContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"borrower",internalType:"address",type:"address",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanEmitted"},{type:"event",anonymous:!1,inputs:[{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"_extension",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanExtended"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanForeclosed"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanLiquidated"},{type:"event",anonymous:!1,inputs:[{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1},{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRefinanced"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"totalRepayment",internalType:"uint256",type:"uint256",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRepaid"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LoanSentToLiquidator"},{type:"event",anonymous:!1,inputs:[{name:"newMax",internalType:"uint256",type:"uint256",indexed:!1}],name:"MaxSourcesUpdated"},{type:"event",anonymous:!1,inputs:[{name:"minLockPeriod",internalType:"uint256",type:"uint256",indexed:!1}],name:"MinLockPeriodUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeePendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeeUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RenegotiationOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"delegate",internalType:"address",type:"address",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RevokeDelegate"},{type:"event",anonymous:!1,inputs:[{name:"contractAdded",internalType:"address",type:"address",indexed:!1},{name:"tax",internalType:"struct WithCallbacks.Taxes",type:"tuple",components:[{name:"buyTax",internalType:"uint128",type:"uint128"},{name:"sellTax",internalType:"uint128",type:"uint128"}],indexed:!1}],name:"WhitelistedCallbackContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"contractRemoved",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractRemoved"},{stateMutability:"view",type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"FEE_UPDATE_NOTICE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"INITIAL_DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"MAX_PROTOCOL_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"MIN_AUCTION_DURATION",outputs:[{name:"",internalType:"uint48",type:"uint48"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tax",internalType:"struct WithCallbacks.Taxes",type:"tuple",components:[{name:"buyTax",internalType:"uint128",type:"uint128"},{name:"sellTax",internalType:"uint128",type:"uint128"}]}],name:"addWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"cancelAllOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_minRenegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelAllRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"cancelOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_offerIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelRenegotiationOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_delegate",internalType:"address",type:"address"},{name:"_rights",internalType:"bytes32",type:"bytes32"},{name:"_value",internalType:"bool",type:"bool"}],name:"delegate",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_executionData",internalType:"struct IMultiSourceLoan.LoanExecutionData",type:"tuple",components:[{name:"executionData",internalType:"struct IBaseLoan.ExecutionData",type:"tuple",components:[{name:"offer",internalType:"struct IBaseLoan.LoanOffer",type:"tuple",components:[{name:"offerId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"borrower",internalType:"address",type:"address"},{name:"capacity",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"validators",internalType:"struct IBaseLoan.OfferValidator[]",type:"tuple[]",components:[{name:"validator",internalType:"address",type:"address"},{name:"arguments",internalType:"bytes",type:"bytes"}]}]},{name:"tokenId",internalType:"uint256",type:"uint256"},{name:"amount",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"callbackData",internalType:"bytes",type:"bytes"}]},{name:"lender",internalType:"address",type:"address"},{name:"borrower",internalType:"address",type:"address"},{name:"lenderOfferSignature",internalType:"bytes",type:"bytes"},{name:"borrowerOfferSignature",internalType:"bytes",type:"bytes"}]}],name:"emitLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_target",internalType:"address",type:"address"},{name:"_data",internalType:"bytes",type:"bytes"}],name:"executeFlashAction",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_extension",internalType:"uint256",type:"uint256"}],name:"extendLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getCollectionManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getCurrencyManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getDelegateRegistry",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getFlashActionContract",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getImprovementMinimum",outputs:[{name:"",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidationAuctionDuration",outputs:[{name:"",internalType:"uint48",type:"uint48"}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidator",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"getLoanHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"getMaxSources",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getMinLockPeriod",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanPrincipal",internalType:"uint256",type:"uint256"}],name:"getMinSourcePrincipal",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFeeSetTime",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getTotalLoansIssued",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"getUsedCapacity",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isBorrowerOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isRenegotiationOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"isWhitelistedCallbackContract",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"lenderMinRenegotiationOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"liquidateLoan",outputs:[{name:"",internalType:"bytes",type:"bytes"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"loanLiquidated",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"minOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"payable",type:"function",inputs:[{name:"data",internalType:"bytes[]",type:"bytes[]"}],name:"multicall",outputs:[{name:"results",internalType:"bytes[]",type:"bytes[]"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_renegotiationOfferSignature",internalType:"bytes",type:"bytes"}],name:"refinanceFull",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"refinancePartial",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"removeWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_repaymentData",internalType:"struct IMultiSourceLoan.LoanRepaymentData",type:"tuple",components:[{name:"data",internalType:"struct IMultiSourceLoan.SignableRepaymentData",type:"tuple",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"callbackData",internalType:"bytes",type:"bytes"},{name:"shouldDelegate",internalType:"bool",type:"bool"}]},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"borrowerSignature",internalType:"bytes",type:"bytes"}]}],name:"repayLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_delegate",internalType:"address",type:"address"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"revokeDelegate",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newDelegateRegistry",internalType:"address",type:"address"}],name:"setDelegateRegistry",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newFlashActionContract",internalType:"address",type:"address"}],name:"setFlashActionContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"__maxSources",internalType:"uint256",type:"uint256"}],name:"setMaxSources",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"__minLockPeriod",internalType:"uint256",type:"uint256"}],name:"setMinLockPeriod",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[],name:"setProtocolFee",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newMinimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}],name:"updateImprovementMinimum",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newDuration",internalType:"uint48",type:"uint48"}],name:"updateLiquidationAuctionDuration",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"loanLiquidator",internalType:"contract ILoanLiquidator",type:"address"}],name:"updateLiquidationContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newProtocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],name:"updateProtocolFee",outputs:[]}];var ue=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"}]},{type:"error",inputs:[],name:"AssetNotOwnedError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"vaultId",internalType:"uint256",type:"uint256"}],name:"NotApprovedError"},{type:"error",inputs:[{name:"vaultId",internalType:"uint256",type:"uint256"}],name:"VaultNotExistsError"},{type:"error",inputs:[],name:"WithdrawingETHError"},{type:"error",inputs:[],name:"WrongMethodError"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"operator",internalType:"address",type:"address",indexed:!0},{name:"approved",internalType:"bool",type:"bool",indexed:!1}],name:"ApprovalForAll"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"token",internalType:"address",type:"address",indexed:!1},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC20Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"token",internalType:"address",type:"address",indexed:!1},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC20Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC721Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC721Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Transfer"},{stateMutability:"view",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"}],name:"ERC20BalanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"ERC721OwnerOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"ETH",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"owner",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_assetRecipient",internalType:"address",type:"address"}],name:"burn",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"},{name:"_tokens",internalType:"address[]",type:"address[]"}],name:"burnAndWithdraw",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"},{name:"_amount",internalType:"uint256",type:"uint256"}],name:"depositERC20",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"depositERC721",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"depositERC721s",outputs:[]},{stateMutability:"payable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"depositEth",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"uint256",type:"uint256"}],name:"getApproved",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"isApprovedForAll",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"nonpayable",type:"function",inputs:[],name:"mint",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"ownerOf",outputs:[{name:"owner",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"},{name:"data",internalType:"bytes",type:"bytes"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"operator",internalType:"address",type:"address"},{name:"approved",internalType:"bool",type:"bool"}],name:"setApprovalForAll",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"interfaceId",internalType:"bytes4",type:"bytes4"}],name:"supportsInterface",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"pure",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"tokenURI",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"}],name:"withdrawERC20",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_tokens",internalType:"address[]",type:"address[]"}],name:"withdrawERC20s",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"withdrawERC721",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"withdrawERC721s",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"withdrawEth",outputs:[]}];import{encodeAbiParameters as Qe}from"viem";import{isAddress as Ve,zeroAddress as He}from"viem";import{goerli as Ke}from"viem/chains";var Ue=31337,M=d(s=>!s||!Ve(s)?null:s,"ensureAddress"),ce="0xb6dfcbc1661d0c0bced9591d06e964f97d41a35984704ffe61f8e062e43919c8",f=d(s=>s?.id===Ue?{MultiSourceLoanV4Address:M(process.env.GONDI_MULTI_SOURCE_LOAN_V4)??"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",MultiSourceLoanV5Address:M(process.env.GONDI_MULTI_SOURCE_LOAN_V5)??"0x610178dA211FEF7D417bC0e6FeD39F05609AD788",AuctionLoanLiquidatorV4Address:M(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V4)??"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0",AuctionLoanLiquidatorV5Address:M(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V5)??"0x8A791620dd6260079BF849Dc5567aDC3F2FdC318",UserVaultV5Address:M(process.env.GONDI_USER_VAULT_V5)??"0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82",LeverageAddress:M(process.env.GONDI_LEVERAGE)??"0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0",SeaportAddress:M(process.env.SEAPORT)??"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",CryptoPunksAddress:M(process.env.CRYPTO_PUNKS)??"0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb"}:s?.id===Ke.id?{MultiSourceLoanV4Address:"0x60C20627429668F267b5cF55c6605c665C69887D",MultiSourceLoanV5Address:"0xTODO",AuctionLoanLiquidatorV4Address:"0x29C73faa2f9180ea5a7B0bEC243ebc63a5B4f280",AuctionLoanLiquidatorV5Address:"0xTODO",UserVaultV5Address:"0xTODO",LeverageAddress:"0xTODO",SeaportAddress:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",CryptoPunksAddress:"0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb"}:{MultiSourceLoanV4Address:"0xCa5a494Ca20483e21ec1E41FE1D9461Da77595Bd",MultiSourceLoanV5Address:"0x478f6F994C6fb3cf3e444a489b3AD9edB8cCaE16",AuctionLoanLiquidatorV4Address:"0x237e4421C742d843Fdd96D22294D338507e17091",AuctionLoanLiquidatorV5Address:"0x97d34635b605c2f1630d6b4c6c5d222b8a2ca47d",UserVaultV5Address:"0x14a6Dcebb2Bb73aae1b199CCAadA75247b81976D",LeverageAddress:"0x87Ce6e8124fFd68fa721FcC7f35fdA14A11E233e",SeaportAddress:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",CryptoPunksAddress:"0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb"},"getContracts"),me=d(()=>({reservoirApiKey:"5b472f8c-b471-531a-a450-56e428e5a00a",infuraApiKey:"9b7006cb0b0b42f1813ae9418741fbb5"}),"getApiKeys"),A=d(()=>({WETH_ADDRESS:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",ETH_ADDRESS:He,USDC_ADDRESS:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"}),"getCurrencies");var fe=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"triggerFee",internalType:"uint256",type:"uint256"}]},{type:"error",inputs:[],name:"AuctionAlreadyInProgressError"},{type:"error",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"AuctionNotExistsError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionNotOverError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionOverError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"InvalidTriggerFee"},{type:"error",inputs:[{name:"_loan",internalType:"address",type:"address"}],name:"LoanNotAcceptedError"},{type:"error",inputs:[{name:"_minBid",internalType:"uint256",type:"uint256"}],name:"MinBidError"},{type:"error",inputs:[{name:"_owner",internalType:"address",type:"address"}],name:"NFTNotOwnedError"},{type:"error",inputs:[],name:"NoBidsError"},{type:"error",inputs:[],name:"ZeroAddressError"},{type:"event",anonymous:!1,inputs:[{name:"loanContract",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auctionContract",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1},{name:"highestBid",internalType:"uint256",type:"uint256",indexed:!1},{name:"settler",internalType:"address",type:"address",indexed:!1},{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"AuctionSettled"},{type:"event",anonymous:!1,inputs:[{name:"auctionContract",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newBidder",internalType:"address",type:"address",indexed:!1},{name:"bid",internalType:"uint256",type:"uint256",indexed:!1},{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BidPlaced"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractRemoved"},{type:"event",anonymous:!1,inputs:[{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"duration",internalType:"uint96",type:"uint96",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1}],name:"LoanLiquidationStarted"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"TriggerFeeUpdated"},{stateMutability:"view",type:"function",inputs:[],name:"MAX_TRIGGER_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"MIN_INCREMENT_BPS",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"addLoanContract",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"getAuction",outputs:[{name:"",internalType:"struct AuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getTriggerFee",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getValidLoanContracts",outputs:[{name:"",internalType:"address[]",type:"address[]"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_asset",internalType:"address",type:"address"},{name:"_duration",internalType:"uint96",type:"uint96"},{name:"_originator",internalType:"address",type:"address"}],name:"liquidateLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_bid",internalType:"uint256",type:"uint256"}],name:"placeBid",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"removeLoanContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"bytes",type:"bytes"}],name:"settleAuction",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"updateTriggerFee",outputs:[]}];var Te=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"loanLiquidator",internalType:"address",type:"address"},{name:"protocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"maxSources",internalType:"uint8",type:"uint8"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledOrExecutedOfferError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledRenegotiationOffer"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"CancelledRenegotiationOfferError"},{type:"error",inputs:[],name:"CannotLiquidateError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"ExpiredLoanError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredOfferError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidBorrowerError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"InvalidCollateralIdError"},{type:"error",inputs:[],name:"InvalidLiquidationError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"InvalidLoanError"},{type:"error",inputs:[{name:"_fraction",internalType:"uint256",type:"uint256"}],name:"InvalidProtocolFeeError"},{type:"error",inputs:[],name:"InvalidRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidSignatureError"},{type:"error",inputs:[],name:"InvalidSignerError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"_liquidator",internalType:"address",type:"address"}],name:"LiquidatorOnlyError"},{type:"error",inputs:[],name:"LoanExpiredError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"LoanNotDueError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"LoanNotFoundError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowOfferIdError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinRenegotiationOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowRenegotiationOfferIdError"},{type:"error",inputs:[],name:"MaxCapacityExceededError"},{type:"error",inputs:[{name:"_id",internalType:"uint256",type:"uint256"}],name:"NotMintedError"},{type:"error",inputs:[],name:"NotStrictlyImprovedError"},{type:"error",inputs:[],name:"OnlyBorrowerCallableError"},{type:"error",inputs:[],name:"OnlyLenderOrSignerCallableError"},{type:"error",inputs:[],name:"PartialOfferCannotChangeDurationError"},{type:"error",inputs:[],name:"PartialOfferCannotHaveFeeError"},{type:"error",inputs:[],name:"RefinanceFullError"},{type:"error",inputs:[],name:"RepaymentError"},{type:"error",inputs:[{name:"sourcePrincipal",internalType:"uint256",type:"uint256"},{name:"loanPrincipal",internalType:"uint256",type:"uint256"}],name:"TargetPrincipalTooLowError"},{type:"error",inputs:[{name:"_pendingProtocolFeeSetTime",internalType:"uint256",type:"uint256"}],name:"TooEarlyError"},{type:"error",inputs:[{name:"sources",internalType:"uint8",type:"uint8"}],name:"TooManySourcesError"},{type:"error",inputs:[],name:"Unauthorized"},{type:"error",inputs:[{name:"_authorized",internalType:"address",type:"address"}],name:"UnauthorizedError"},{type:"error",inputs:[],name:"ZeroAddressError"},{type:"error",inputs:[],name:"ZeroDurationError"},{type:"error",inputs:[],name:"ZeroInterestError"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minOfferId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minRenegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllRenegotiationOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"signer",internalType:"address",type:"address",indexed:!1}],name:"ApprovedSigner"},{type:"event",anonymous:!1,inputs:[{name:"minimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ImprovementMinimumUpdated"},{type:"event",anonymous:!1,inputs:[{name:"newDuration",internalType:"uint256",type:"uint256",indexed:!1}],name:"LiquidationAuctionDurationUpdated"},{type:"event",anonymous:!1,inputs:[{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LiquidationContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanEmitted"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanForeclosed"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"repayment",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanLiquidated"},{type:"event",anonymous:!1,inputs:[{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1},{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRefinanced"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"totalRepayment",internalType:"uint256",type:"uint256",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRepaid"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LoanSentToLiquidator"},{type:"event",anonymous:!1,inputs:[{name:"newMax",internalType:"uint8",type:"uint8",indexed:!1}],name:"MaxSourcesUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeePendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeeUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RenegotiationOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"contract_added",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"contract_removed",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractRemoved"},{stateMutability:"view",type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"FEE_UPDATE_NOTICE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"INITIAL_DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"MAX_PROTOCOL_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"addWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_signer",internalType:"address",type:"address"}],name:"approveSigner",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"cancelAllOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_minRenegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelAllRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"cancelOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelRenegotiationOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanOffer",internalType:"struct IBaseLoan.LoanOffer",type:"tuple",components:[{name:"offerId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"borrower",internalType:"address",type:"address"},{name:"capacity",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"requiresLiquidation",internalType:"bool",type:"bool"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"validators",internalType:"struct IBaseLoan.OfferValidator[]",type:"tuple[]",components:[{name:"validator",internalType:"address",type:"address"},{name:"arguments",internalType:"bytes",type:"bytes"}]}]},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_lenderOfferSignature",internalType:"bytes",type:"bytes"},{name:"_withCallback",internalType:"bool",type:"bool"}],name:"emitLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"getApprovedSigner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getCollectionManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getCurrencyManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getImprovementMinimum",outputs:[{name:"",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidationAuctionDuration",outputs:[{name:"",internalType:"uint48",type:"uint48"}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidator",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"getLoanHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"getMaxSources",outputs:[{name:"",internalType:"uint8",type:"uint8"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanPrincipal",internalType:"uint256",type:"uint256"}],name:"getMinSourcePrincipal",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFeeSetTime",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getTotalLoansIssued",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"getUsedCapacity",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isRenegotiationOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"isWhitelistedCallbackContract",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"lenderMinOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"lenderMinRenegotiationOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"liquidateLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_collateralAddress",internalType:"address",type:"address"},{name:"_collateralTokenId",internalType:"uint256",type:"uint256"},{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_repayment",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"bytes",type:"bytes"}],name:"loanLiquidated",outputs:[]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"strictImprovement",internalType:"bool",type:"bool"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_renegotiationOfferSignature",internalType:"bytes",type:"bytes"}],name:"refinanceFull",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"strictImprovement",internalType:"bool",type:"bool"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"refinancePartial",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer[]",type:"tuple[]",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"strictImprovement",internalType:"bool",type:"bool"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan[]",type:"tuple[]",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"refinancePartialBatch",outputs:[{name:"loanId",internalType:"uint256[]",type:"uint256[]"},{name:"loans",internalType:"struct IMultiSourceLoan.Loan[]",type:"tuple[]",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"removeWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_collateralTo",internalType:"address",type:"address"},{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_withCallback",internalType:"bool",type:"bool"}],name:"repayLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"maxSources",internalType:"uint8",type:"uint8"}],name:"setMaxSources",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[],name:"setProtocolFee",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newMinimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}],name:"updateImprovementMinimum",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newDuration",internalType:"uint48",type:"uint48"}],name:"updateLiquidationAuctionDuration",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"loanLiquidator",internalType:"contract ILoanLiquidator",type:"address"}],name:"updateLiquidationContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newProtocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],name:"updateProtocolFee",outputs:[]}];import{createPublicClient as qe,createTransport as We,getContract as $e}from"viem";var T=class{abi;address;bcClient;wallet;contract;safeContractWrite;constructor({walletClient:e,address:t,abi:n}){this.wallet=e;let a=qe({transport:()=>We(e.transport)});this.bcClient=a,this.address=t,this.abi=n,this.contract=$e({address:this.address,abi:this.abi,walletClient:e,publicClient:this.bcClient}),this.safeContractWrite=new Proxy({},{get(i,r){return async(o,l={})=>{let{request:p}=await a.simulateContract({address:t,abi:n,functionName:r,args:o,account:e.account,...l});return e.writeContract(p)}}})}};d(T,"Contract");var j=class extends T{constructor({walletClient:e}){let{AuctionLoanLiquidatorV4Address:t}=f(e.chain);super({walletClient:e,address:t,abi:fe})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n}){let a=await this.safeContractWrite.placeBid([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.BidPlaced(),o=y(i,r);if(o.length===0)throw new Error("Bid not placed");return{...o[0].args,...i}}}}async settleAuction({loan:e}){let t={...e,source:e.source.map(a=>[Number(a.loanId),a.lender,a.principalAmount,a.accruedInterest,a.startTime,a.aprBps])},n=await this.safeContractWrite.settleAuction([e.nftCollateralAddress,e.nftCollateralTokenId,Qe(j.LOAN_SETTLEMENT_ENCODE_TYPES,[t])]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.AuctionSettled(),r=y(a,i);if(r.length===0)throw new Error("Auction not settled");return{...r[0].args,...a}}}}},w=j;d(w,"AllV4"),le(w,"LOAN_SETTLEMENT_ENCODE_TYPES",[{name:"",type:"tuple",components:[{name:"borrower",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"startTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"source",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]);var N=class extends T{constructor({walletClient:e}){let{AuctionLoanLiquidatorV5Address:t}=f(e.chain);super({walletClient:e,address:t,abi:de})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a}){let i=await this.safeContractWrite.placeBid([e,t,a,n]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),o=await this.contract.createEventFilter.BidPlaced(),l=y(r,o);if(l.length===0)throw new Error("Bid not placed");return{...l[0].args,...r}}}}async settleAuction({auction:e,loan:t}){let n=await this.safeContractWrite.settleAuction([e,t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.AuctionSettled(),r=y(a,i);if(r.length===0)throw new Error("Auction not settled");return{...r[0].args,...a}}}}};d(N,"AllV5");import{encodeFunctionData as ze}from"viem";var ge=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"uint256"}],name:"punksOfferedForSale",outputs:[{name:"isForSale",type:"bool"},{name:"punkIndex",type:"uint256"},{name:"seller",type:"address"},{name:"minValue",type:"uint256"},{name:"onlySellTo",type:"address"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"enterBidForPunk",outputs:[],payable:!0,type:"function",stateMutability:"payable"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"},{name:"minPrice",type:"uint256"}],name:"acceptBidForPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"addresses",type:"address[]"},{name:"indices",type:"uint256[]"}],name:"setInitialOwners",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[],name:"withdraw",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"imageHash",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[],name:"nextPunkIndexToAssign",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"uint256"}],name:"punkIndexToAddress",outputs:[{name:"",type:"address"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[],name:"standard",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"uint256"}],name:"punkBids",outputs:[{name:"hasBid",type:"bool"},{name:"punkIndex",type:"uint256"},{name:"bidder",type:"address"},{name:"value",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[],name:"allInitialOwnersAssigned",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"allPunksAssigned",outputs:[{name:"",type:"bool"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"buyPunk",outputs:[],payable:!0,type:"function",stateMutability:"payable"},{constant:!1,inputs:[{name:"to",type:"address"},{name:"punkIndex",type:"uint256"}],name:"transferPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"withdrawBidForPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[{name:"to",type:"address"},{name:"punkIndex",type:"uint256"}],name:"setInitialOwner",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"},{name:"minSalePriceInWei",type:"uint256"},{name:"toAddress",type:"address"}],name:"offerPunkForSaleToAddress",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"punksRemainingToAssign",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"},{name:"minSalePriceInWei",type:"uint256"}],name:"offerPunkForSale",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"getPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[{name:"",type:"address"}],name:"pendingWithdrawals",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"punkNoLongerForSale",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{inputs:[],payable:!0,type:"constructor",stateMutability:"payable"},{anonymous:!1,inputs:[{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"punkIndex",type:"uint256"}],name:"Assign",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"punkIndex",type:"uint256"}],name:"PunkTransfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"minValue",type:"uint256"},{indexed:!0,name:"toAddress",type:"address"}],name:"PunkOffered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"value",type:"uint256"},{indexed:!0,name:"fromAddress",type:"address"}],name:"PunkBidEntered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"value",type:"uint256"},{indexed:!0,name:"fromAddress",type:"address"}],name:"PunkBidWithdrawn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"value",type:"uint256"},{indexed:!0,name:"fromAddress",type:"address"},{indexed:!0,name:"toAddress",type:"address"}],name:"PunkBought",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"}],name:"PunkNoLongerForSale",type:"event"}];var k=class extends T{constructor({walletClient:e}){let{CryptoPunksAddress:t}=f(e.chain);super({walletClient:e,address:t,abi:ge})}async encodeBuyPunk(e){return ze({abi:this.abi,functionName:"buyPunk",args:[e]})}};d(k,"CryptoPunks");import{encodeFunctionData as Ie}from"viem";var v=d((s,e)=>s&&e&&s.toLowerCase()===e.toLowerCase(),"areSameAddress"),O=d((s,e)=>{let t=f({id:s});return{name:"GONDI_MULTI_SOURCE_LOAN",version:v(e,t.MultiSourceLoanV4Address)?"1":"2",chainId:s,verifyingContract:e}},"getDomain"),be=d(s=>Number(s.valueOf()),"toInteger"),R=d(s=>Math.ceil(be(s)/1e3),"millisToSeconds"),Ge=60*60*24,Fe=d(s=>be(s)/1e4,"bpsToPercentage"),Se="MarketPlace.Native",Y=d(({offer:s,tokenId:e,amount:t,expirationTime:n})=>{let a={...s,lender:s.lenderAddress,borrower:s.borrowerAddress,signer:s.signerAddress??S,validators:s.offerValidators,requiresLiquidation:!!s.requiresLiquidation};return{offer:a,signature:a.signature,tokenId:e,amount:t??a.principalAmount,expirationTime:n??BigInt(R(Date.now())+Ge)}},"emitLoanArgsToMslArgs");var E=class extends T{mslAddress;constructor({walletClient:e,mslAddress:t}){let{LeverageAddress:n}=f(e.chain);super({walletClient:e,address:n,abi:ye}),this.mslAddress=t}async signExecutionData(e){return this.wallet.signTypedData({domain:O(this.wallet.chain.id,this.mslAddress),primaryType:"ExecutionData",types:{ExecutionData:[{name:"offer",type:"LoanOffer"},{name:"tokenId",type:"uint256"},{name:"amount",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"callbackData",type:"bytes"}],LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"borrower",type:"address"},{name:"capacity",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:e})}async signRepaymentData(e){return this.wallet.signTypedData({domain:O(this.wallet.chain.id,this.mslAddress),primaryType:"SignableRepaymentData",types:{SignableRepaymentData:[{name:"loanId",type:"uint256"},{name:"callbackData",type:"bytes"},{name:"shouldDelegate",type:"bool"}]},message:e})}async buy({leverageBuyData:e,ethToSend:t}){let n=await this.safeContractWrite.buy([await Promise.all(e.map(async a=>{let i={offer:a.offer,tokenId:a.nft.tokenId,amount:a.amount,expirationTime:a.expirationTime,callbackData:a.callbackData};return Ie({abi:x,functionName:"emitLoan",args:[{executionData:i,lender:a.offer.lender,borrower:this.wallet.account.address,lenderOfferSignature:a.offer.signature,borrowerOfferSignature:await this.signExecutionData(i)}]})}))],{value:t});return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.BNPLLoansStarted(),r=y(a,i);if(r.length===0)throw new Error("BNPL Loans not started");return{...r[0].args,...a}}}}async sell({loan:e,callbackData:t,shouldDelegate:n,loanId:a}){let i={loanId:a,callbackData:t,shouldDelegate:n},r=await this.safeContractWrite.sell([[Ie({abi:x,functionName:"repayLoan",args:[{data:i,loan:e,borrowerSignature:await this.signRepaymentData(i)}]})]]);return{txHash:r,waitTxInBlock:async()=>{let o=await this.bcClient.waitForTransactionReceipt({hash:r}),l=await this.contract.createEventFilter.SellAndRepayExecuted(),p=y(o,l);if(p.length===0)throw new Error("Sell and repay not executed");return{...p[0].args,...o}}}}};d(E,"Leverage");var D=class extends T{constructor({walletClient:e}){let{MultiSourceLoanV4Address:t}=f(e.chain);super({walletClient:e,address:t,abi:Te})}async signOffer({verifyingContract:e,structToSign:t}){return this.wallet.signTypedData({domain:O(this.wallet.chain.id,e),primaryType:"LoanOffer",types:{LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"borrower",type:"address"},{name:"capacity",type:"uint256"},{name:"signer",type:"address"},{name:"requiresLiquidation",type:"bool"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:t})}async signRenegotiationOffer({verifyingContract:e,structToSign:t}){return this.wallet.signTypedData({domain:O(this.wallet.chain.id,e),primaryType:"RenegotiationOffer",types:{RenegotiationOffer:[{name:"renegotiationId",type:"uint256"},{name:"loanId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"signer",type:"address"},{name:"targetPrincipal",type:"uint256[]"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"strictImprovement",type:"bool"}]},message:t})}async cancelOffer({id:e}){let t=await this.safeContractWrite.cancelOffer([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OfferCancelled(),i=y(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllOffers({minId:e}){let t=await this.safeContractWrite.cancelAllOffers([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllOffersCancelled(),i=y(n,a);if(i.length===0)throw new Error("Offers not cancelled");return{...i[0].args,...n}}}}async cancelRefinanceOffer({id:e}){let t=await this.safeContractWrite.cancelRenegotiationOffer([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=y(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllRenegotiations({minId:e}){let t=await this.safeContractWrite.cancelAllRenegotiationOffers([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=y(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async emitLoan({offer:e,signature:t,tokenId:n}){let a=await this.safeContractWrite.emitLoan([e,n,t,!1]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanEmitted(),o=y(i,r);if(o.length===0)throw new Error("Loan not emitted");let l=o[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${l.loanId}`,...l.loan,contractAddress:this.contract.address},loanId:l.loanId,offerId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${l.offerId}`,...i}}}}async repayLoan({loan:e,nftReceiver:t,loanId:n}){let a=t??this.wallet.account.address,i=await this.safeContractWrite.repayLoan([a,n,e,!1]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),o=await this.contract.createEventFilter.LoanRepaid(),l=y(r,o);if(l.length===0)throw new Error("Loan not repaid");return{...l[0].args,...r}}}}getRemainingLockupSeconds(){return 0}async refinanceFullLoan({offer:e,signature:t,loan:n}){let a=await this.safeContractWrite.refinanceFull([e,n,t]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRefinanced(),o=y(i,r);if(o.length===0)throw new Error("Loan not refinanced");let l=o[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${l.newLoanId}`,...l.loan,contractAddress:this.address},renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${l.renegotiationId}`,...i}}}}async refinancePartialLoan({offer:e,loan:t}){let n=await this.safeContractWrite.refinancePartial([e,t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanRefinanced(),r=y(a,i);if(r.length===0)throw new Error("Loan not refinanced");let o=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${o.newLoanId}`,...o.loan,contractAddress:this.contract.address},renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${o.renegotiationId}`,...a}}}}async extendLoan(){throw new Error("Not implemented for V1")}async delegateMulticall(){throw new Error("Not implemented for V1")}async delegate(){throw new Error("Not implemented for V1")}async revokeDelegate(){throw new Error("Not implemented for V1")}async revokeDelegationsAndEmitLoan(){throw new Error("Not implemented for V1")}async liquidateLoan({loan:e,loanId:t}){let n=await this.safeContractWrite.liquidateLoan([t,e]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanForeclosed(),r=await this.contract.createEventFilter.LoanSentToLiquidator(),o=y(a,i),l=y(a,r);if(o.length===0&&l.length===0)throw new Error("Loan not liquidated");return{...o?.[0]?.args??l?.[0]?.args,...a}}}}};d(D,"MslV4");import{encodeFunctionData as J}from"viem";var V=class extends T{constructor({walletClient:e}){let{MultiSourceLoanV5Address:t}=f(e.chain);super({walletClient:e,address:t,abi:x})}async signOffer({verifyingContract:e,structToSign:t}){return this.wallet.signTypedData({domain:O(this.wallet.chain.id,e),primaryType:"LoanOffer",types:{LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"borrower",type:"address"},{name:"capacity",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:t})}async signRenegotiationOffer({verifyingContract:e,structToSign:t}){return this.wallet.signTypedData({domain:O(this.wallet.chain.id,e),primaryType:"RenegotiationOffer",types:{RenegotiationOffer:[{name:"renegotiationId",type:"uint256"},{name:"loanId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"targetPrincipal",type:"uint256[]"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"}]},message:t})}async cancelOffer({id:e}){let t=await this.safeContractWrite.cancelOffer([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OfferCancelled(),i=y(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllOffers({minId:e}){let t=await this.safeContractWrite.cancelAllOffers([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllOffersCancelled(),i=y(n,a);if(i.length===0)throw new Error("Offers not cancelled");return{...i[0].args,...n}}}}async cancelRefinanceOffer({id:e}){let t=await this.safeContractWrite.cancelRenegotiationOffer([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=y(n,a);if(i.length===0)throw new Error("Renegotiation offer not cancelled");return{...i[0].args,...n}}}}async cancelAllRenegotiations({minId:e}){let t=await this.safeContractWrite.cancelAllRenegotiationOffers([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllRenegotiationOffersCancelled(),i=y(n,a);if(i.length===0)throw new Error("Renegotiation offers not cancelled");return{...i[0].args,...n}}}}mapEmitLoanToMslArgs({offer:e,tokenId:t,amount:n,expirationTime:a,signature:i}){return{executionData:{offer:e,tokenId:t,amount:n,expirationTime:a,callbackData:"0x"},lender:e.lender,borrower:this.wallet.account.address,lenderOfferSignature:i,borrowerOfferSignature:"0x"}}async emitLoan(e){let t=this.mapEmitLoanToMslArgs(e),n=await this.safeContractWrite.emitLoan([t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanEmitted(),r=y(a,i);if(r.length===0)throw new Error("Loan not emitted");let o=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${o.loanId}`,...o.loan,contractAddress:this.contract.address},loanId:o.loanId,offerId:`${this.contract.address.toLowerCase()}.${e.offer.lender.toLowerCase()}.${o.offerId}`,...a}}}}async revokeDelegationsAndEmitLoan({delegations:e,emit:t}){if(e.length===0)throw new Error("At least one delegation must be revoked");let n=e.map(o=>J({abi:x,functionName:"revokeDelegate",args:[o,t.offer.nftCollateralAddress,t.tokenId]})),a=this.mapEmitLoanToMslArgs(t),i=J({abi:x,functionName:"emitLoan",args:[a]}),r=await this.safeContractWrite.multicall([[...n,i]]);return{txHash:r,waitTxInBlock:async()=>{let o=await this.bcClient.waitForTransactionReceipt({hash:r}),l=await this.contract.createEventFilter.RevokeDelegate(),p=y(o,l);if(p.length!==e.length)throw new Error("Revoke delegations failed");let u=await this.contract.createEventFilter.LoanEmitted(),c=y(o,u);if(c.length===0)throw new Error("Loan not emitted");let F=[...p.map(({args:I})=>I),...c.map(({args:I})=>I)],b=c[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${b.loanId}`,...b.loan,contractAddress:this.contract.address},loanId:b.loanId,...o,results:F}}}}async repayLoan({loan:e,loanId:t}){let n={loanId:t,callbackData:"0x",shouldDelegate:!1},a=await this.safeContractWrite.repayLoan([{data:n,loan:e,borrowerSignature:"0x"}]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRepaid(),o=y(i,r);if(o.length===0)throw new Error("Loan not repaid");return{...o[0].args,...i}}}}async getRemainingLockupSeconds({loan:e}){let t=e.source[0],a=e.startTime+e.duration-t.startTime,i=await this.contract.read.getMinLockPeriod(),r=Fe(i),o=Math.ceil(Number(a)*r),l=Math.ceil(R(Date.now())-Number(t.startTime));return l>=o?0:o-l}async refinanceFullLoan({offer:e,signature:t,loan:n}){let a=await this.safeContractWrite.refinanceFull([e,n,t]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRefinanced(),o=y(i,r);if(o.length===0)throw new Error("Loan not refinanced");let l=o[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${l.newLoanId}`,...l.loan,contractAddress:this.contract.address},renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${l.renegotiationId}`,...i}}}}async refinancePartialLoan({offer:e,loan:t}){let n=await this.safeContractWrite.refinancePartial([e,t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanRefinanced(),r=y(a,i);if(r.length===0)throw new Error("Loan not refinanced");let o=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${o.newLoanId}`,...o.loan,contractAddress:this.contract.address},renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${o.renegotiationId}`,...a}}}}async extendLoan({loan:e,loanId:t,newDuration:n}){let a=await this.safeContractWrite.extendLoan([t,e,n-e.duration]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanExtended(),o=y(i,r);if(o.length===0)throw new Error("Loan not extended");let l=o[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${l.newLoanId}`,...l.loan,contractAddress:this.contract.address},newLoanId:l.newLoanId,...i}}}}async delegateMulticall(e){if(e.length===0)throw new Error("At least one delegation must be revoked");let t=await this.safeContractWrite.multicall([e.map(n=>J({abi:x,functionName:"delegate",args:[n.loanId,n.loan,n.to,n.rights??g,n.enable]}))]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.Delegated(),i=y(n,a);if(i.length!==e.length)throw new Error("Delegate multicall failed");return{...n,results:i.map(({args:r})=>r)}}}}async delegate({loan:e,loanId:t,to:n,rights:a=g,enable:i}){let r=await this.safeContractWrite.delegate([t,e,n,a,i]);return{txHash:r,waitTxInBlock:async()=>{let o=await this.bcClient.waitForTransactionReceipt({hash:r}),l=await this.contract.createEventFilter.Delegated(),p=y(o,l);if(p.length===0)throw new Error("Token not delegated");let u=p[0].args;return{loan:{...e,loanId:t,contractAddress:this.contract.address},value:u.value,...o}}}}async revokeDelegate({to:e,collection:t,tokenId:n}){let a=await this.safeContractWrite.revokeDelegate([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.RevokeDelegate(),o=y(i,r);if(o.length===0)throw new Error("Token delegation not revoked");return{...o[0].args,...i}}}}async liquidateLoan({loan:e,loanId:t}){let n=await this.safeContractWrite.liquidateLoan([t,e]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanForeclosed(),r=await this.contract.createEventFilter.LoanSentToLiquidator(),o=y(a,i),l=y(a,r);if(o.length===0&&l.length===0)throw new Error("Loan not liquidated");return{...o?.[0]?.args??l?.[0]?.args,...a}}}}};d(V,"MslV5");import{zeroAddress as H}from"viem";var L=[{inputs:[{internalType:"address",name:"conduitController",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"BadContractSignature",type:"error"},{inputs:[],name:"BadFraction",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"BadReturnValueFromERC20OnTransfer",type:"error"},{inputs:[{internalType:"uint8",name:"v",type:"uint8"}],name:"BadSignatureV",type:"error"},{inputs:[],name:"CannotCancelOrder",type:"error"},{inputs:[],name:"ConsiderationCriteriaResolverOutOfRange",type:"error"},{inputs:[],name:"ConsiderationLengthNotEqualToTotalOriginal",type:"error"},{inputs:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"considerationIndex",type:"uint256"},{internalType:"uint256",name:"shortfallAmount",type:"uint256"}],name:"ConsiderationNotMet",type:"error"},{inputs:[],name:"CriteriaNotEnabledForItem",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256[]",name:"identifiers",type:"uint256[]"},{internalType:"uint256[]",name:"amounts",type:"uint256[]"}],name:"ERC1155BatchTransferGenericFailure",type:"error"},{inputs:[],name:"InexactFraction",type:"error"},{inputs:[],name:"InsufficientNativeTokensSupplied",type:"error"},{inputs:[],name:"Invalid1155BatchTransferEncoding",type:"error"},{inputs:[],name:"InvalidBasicOrderParameterEncoding",type:"error"},{inputs:[{internalType:"address",name:"conduit",type:"address"}],name:"InvalidCallToConduit",type:"error"},{inputs:[{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"address",name:"conduit",type:"address"}],name:"InvalidConduit",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"InvalidContractOrder",type:"error"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidERC721TransferAmount",type:"error"},{inputs:[],name:"InvalidFulfillmentComponentData",type:"error"},{inputs:[{internalType:"uint256",name:"value",type:"uint256"}],name:"InvalidMsgValue",type:"error"},{inputs:[],name:"InvalidNativeOfferItem",type:"error"},{inputs:[],name:"InvalidProof",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"InvalidRestrictedOrder",type:"error"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[],name:"InvalidSigner",type:"error"},{inputs:[{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"}],name:"InvalidTime",type:"error"},{inputs:[{internalType:"uint256",name:"fulfillmentIndex",type:"uint256"}],name:"MismatchedFulfillmentOfferAndConsiderationComponents",type:"error"},{inputs:[{internalType:"enum Side",name:"side",type:"uint8"}],name:"MissingFulfillmentComponentOnAggregation",type:"error"},{inputs:[],name:"MissingItemAmount",type:"error"},{inputs:[],name:"MissingOriginalConsiderationItems",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"NativeTokenTransferGenericFailure",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"NoContract",type:"error"},{inputs:[],name:"NoReentrantCalls",type:"error"},{inputs:[],name:"NoSpecifiedOrdersAvailable",type:"error"},{inputs:[],name:"OfferAndConsiderationRequiredOnFulfillment",type:"error"},{inputs:[],name:"OfferCriteriaResolverOutOfRange",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderAlreadyFilled",type:"error"},{inputs:[{internalType:"enum Side",name:"side",type:"uint8"}],name:"OrderCriteriaResolverOutOfRange",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderIsCancelled",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderPartiallyFilled",type:"error"},{inputs:[],name:"PartialFillsNotEnabledForOrder",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TokenTransferGenericFailure",type:"error"},{inputs:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"considerationIndex",type:"uint256"}],name:"UnresolvedConsiderationCriteria",type:"error"},{inputs:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"offerIndex",type:"uint256"}],name:"UnresolvedOfferCriteria",type:"error"},{inputs:[],name:"UnusedItemParameters",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newCounter",type:"uint256"},{indexed:!0,internalType:"address",name:"offerer",type:"address"}],name:"CounterIncremented",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{indexed:!0,internalType:"address",name:"offerer",type:"address"},{indexed:!0,internalType:"address",name:"zone",type:"address"}],name:"OrderCancelled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{indexed:!0,internalType:"address",name:"offerer",type:"address"},{indexed:!0,internalType:"address",name:"zone",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],indexed:!1,internalType:"struct SpentItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],indexed:!1,internalType:"struct ReceivedItem[]",name:"consideration",type:"tuple[]"}],name:"OrderFulfilled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],indexed:!1,internalType:"struct OrderParameters",name:"orderParameters",type:"tuple"}],name:"OrderValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32[]",name:"orderHashes",type:"bytes32[]"}],name:"OrdersMatched",type:"event"},{inputs:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"counter",type:"uint256"}],internalType:"struct OrderComponents[]",name:"orders",type:"tuple[]"}],name:"cancel",outputs:[{internalType:"bool",name:"cancelled",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder",name:"",type:"tuple"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"",type:"tuple[]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"}],name:"fulfillAdvancedOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"maximumFulfilled",type:"uint256"}],name:"fulfillAvailableAdvancedOrders",outputs:[{internalType:"bool[]",name:"",type:"bool[]"},{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"maximumFulfilled",type:"uint256"}],name:"fulfillAvailableOrders",outputs:[{internalType:"bool[]",name:"",type:"bool[]"},{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"considerationToken",type:"address"},{internalType:"uint256",name:"considerationIdentifier",type:"uint256"},{internalType:"uint256",name:"considerationAmount",type:"uint256"},{internalType:"address payable",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{internalType:"address",name:"offerToken",type:"address"},{internalType:"uint256",name:"offerIdentifier",type:"uint256"},{internalType:"uint256",name:"offerAmount",type:"uint256"},{internalType:"enum BasicOrderType",name:"basicOrderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"offererConduitKey",type:"bytes32"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalAdditionalRecipients",type:"uint256"},{components:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct AdditionalRecipient[]",name:"additionalRecipients",type:"tuple[]"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct BasicOrderParameters",name:"parameters",type:"tuple"}],name:"fulfillBasicOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"considerationToken",type:"address"},{internalType:"uint256",name:"considerationIdentifier",type:"uint256"},{internalType:"uint256",name:"considerationAmount",type:"uint256"},{internalType:"address payable",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{internalType:"address",name:"offerToken",type:"address"},{internalType:"uint256",name:"offerIdentifier",type:"uint256"},{internalType:"uint256",name:"offerAmount",type:"uint256"},{internalType:"enum BasicOrderType",name:"basicOrderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"offererConduitKey",type:"bytes32"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalAdditionalRecipients",type:"uint256"},{components:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct AdditionalRecipient[]",name:"additionalRecipients",type:"tuple[]"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct BasicOrderParameters",name:"parameters",type:"tuple"}],name:"fulfillBasicOrder_efficient_6GL6yc",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order",name:"",type:"tuple"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"}],name:"fulfillOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"contractOfferer",type:"address"}],name:"getContractOffererNonce",outputs:[{internalType:"uint256",name:"nonce",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"offerer",type:"address"}],name:"getCounter",outputs:[{internalType:"uint256",name:"counter",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"counter",type:"uint256"}],internalType:"struct OrderComponents",name:"",type:"tuple"}],name:"getOrderHash",outputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"getOrderStatus",outputs:[{internalType:"bool",name:"isValidated",type:"bool"},{internalType:"bool",name:"isCancelled",type:"bool"},{internalType:"uint256",name:"totalFilled",type:"uint256"},{internalType:"uint256",name:"totalSize",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"incrementCounter",outputs:[{internalType:"uint256",name:"newCounter",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"information",outputs:[{internalType:"string",name:"version",type:"string"},{internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{internalType:"address",name:"conduitController",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"",type:"tuple[]"},{components:[{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"offerComponents",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"considerationComponents",type:"tuple[]"}],internalType:"struct Fulfillment[]",name:"",type:"tuple[]"},{internalType:"address",name:"recipient",type:"address"}],name:"matchAdvancedOrders",outputs:[{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"",type:"tuple[]"},{components:[{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"offerComponents",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"considerationComponents",type:"tuple[]"}],internalType:"struct Fulfillment[]",name:"",type:"tuple[]"}],name:"matchOrders",outputs:[{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"",type:"tuple[]"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var K=class extends T{constructor({walletClient:e}){let{SeaportAddress:t}=f(e.chain);super({walletClient:e,address:t,abi:L})}async getOrderHash(e){return this.contract.read.getOrderHash([e])}async getCounter(){return this.contract.read.getCounter([this.wallet.account.address])}async signOrder(e){let t={name:"Seaport",version:"1.5",chainId:this.wallet.chain?.id,verifyingContract:this.address},n={OrderComponents:[{name:"offerer",type:"address"},{name:"zone",type:"address"},{name:"offer",type:"OfferItem[]"},{name:"consideration",type:"ConsiderationItem[]"},{name:"orderType",type:"uint8"},{name:"startTime",type:"uint256"},{name:"endTime",type:"uint256"},{name:"zoneHash",type:"bytes32"},{name:"salt",type:"uint256"},{name:"conduitKey",type:"bytes32"},{name:"counter",type:"uint256"}],OfferItem:[{name:"itemType",type:"uint8"},{name:"token",type:"address"},{name:"identifierOrCriteria",type:"uint256"},{name:"startAmount",type:"uint256"},{name:"endAmount",type:"uint256"}],ConsiderationItem:[{name:"itemType",type:"uint8"},{name:"token",type:"address"},{name:"identifierOrCriteria",type:"uint256"},{name:"startAmount",type:"uint256"},{name:"endAmount",type:"uint256"},{name:"recipient",type:"address"}]};return this.wallet.signTypedData({domain:t,types:n,primaryType:"OrderComponents",message:e})}async generateOrderFromSaleOffer({collectionContractAddress:e,tokenId:t,price:n,expirationTime:a}){let{WETH_ADDRESS:i}=A(),r={offerer:this.wallet.account.address,zone:H,offer:[{itemType:1,token:i,identifierOrCriteria:0n,startAmount:n,endAmount:n}],consideration:[{itemType:2,token:e,identifierOrCriteria:t,startAmount:1n,endAmount:1n,recipient:this.wallet.account.address}],orderType:0,startTime:BigInt(Math.floor(R(Date.now()))),endTime:a,zoneHash:g,salt:0n,conduitKey:g,counter:await this.getCounter(),totalOriginalConsiderationItems:1n},o=await this.signOrder(r);return{parameters:r,signature:o}}async recoverOrderFromNativeBid({nativeBid:e,collectionContractAddress:t,tokenId:n}){let{WETH_ADDRESS:a}=A();return{offerer:e.maker,zone:H,offer:[{itemType:1,token:a,identifierOrCriteria:0n,startAmount:e.netAmount,endAmount:e.netAmount}],consideration:[{itemType:2,token:t,identifierOrCriteria:n,startAmount:1n,endAmount:1n,recipient:e.maker}],orderType:0,startTime:BigInt(Math.floor(R(e.startTime.getTime()))),endTime:BigInt(Math.floor(R(e.expiration?.getTime()??Date.now()))),zoneHash:g,salt:0n,conduitKey:g,counter:await this.getCounter(),totalOriginalConsiderationItems:1n}}async generateInverseOrder(e){return{offerer:this.wallet.account?.address??H,zone:H,offer:e.consideration,consideration:e.offer.map(t=>({...t,recipient:this.wallet.account?.address??H})),orderType:0,startTime:e.startTime,endTime:e.endTime,zoneHash:g,salt:0n,conduitKey:g,counter:await this.getCounter(),totalOriginalConsiderationItems:BigInt(e.offer.length)}}generateFulfillmentsForOrderAndInverse(e){let t=[];return e.offer.forEach((n,a)=>{t.push({offerComponents:[{orderIndex:0n,itemIndex:BigInt(a)}],considerationComponents:[{orderIndex:1n,itemIndex:BigInt(a)}]})}),e.consideration.forEach((n,a)=>{t.push({offerComponents:[{orderIndex:1n,itemIndex:BigInt(a)}],considerationComponents:[{orderIndex:0n,itemIndex:BigInt(a)}]})}),t}async cancel({orderComponents:e}){let t=await this.safeContractWrite.cancel([[e]]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OrderCancelled({offerer:e.offerer}),i=y(n,a);if(i.length===0)throw new Error("Order not cancelled");return{...i[0].args,...n}}}}};d(K,"Seaport");var U=class extends T{constructor({walletClient:e}){let{UserVaultV5Address:t}=f(e.chain);super({walletClient:e,address:t,abi:ue})}async burnAndWithdraw({vaultId:e,collections:t,tokenIds:n,tokens:a=[]}){if(t.length!=n.length)throw new Error("collections and tokenIds must have the same length");let i=await this.safeContractWrite.burnAndWithdraw([e,t,n,a]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),o=await this.contract.createEventFilter.ERC721Withdrawn(),l=y(r,o);if(l.length!==n.length)throw new Error("Withdrawn count mismatch");return{events:l.map(p=>p.args),...r}}}}async createVault(e){let{id:t}=await this.#e(),n=[],a=e.reduce((i,r)=>{let{collection:o,tokenIds:l}=r,p=i.findIndex(u=>u.collection===o);return p===-1?i.push({collection:o,tokenIds:l}):i[p].tokenIds=[...i[p].tokenIds,...l],i},[]);for(let i=0;i<a.length;i++){let{collection:r,tokenIds:o}=a[i],p=await(await this.depositERC721s({vaultId:t,collection:r,tokenIds:o})).waitTxInBlock();n.push(p)}return{vaultId:t,receipts:n}}async depositERC721s({vaultId:e,collection:t,tokenIds:n}){let a=await this.safeContractWrite.depositERC721s([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.ERC721Deposited(),o=y(i,r);if(o.length===0)throw new Error("Deposit not created");return{...o[0].args,...i}}}}async#e(){let e=await this.safeContractWrite.mint(void 0),t=await this.bcClient.waitForTransactionReceipt({hash:e}),n=await this.contract.createEventFilter.Transfer({}),a=y(t,n);if(a.length===0)throw new Error("Vault not created");return{...a[0].args,...t}}};d(U,"UserVaultV5");var q=class{walletClient;publicClient;MultiSourceLoanV4;MultiSourceLoanV5;AuctionLoanLiquidatorV4;AuctionLoanLiquidatorV5;UserVaultV5;Leverage;Seaport;CryptoPunks;constructor(e,t){this.walletClient=t,this.publicClient=e,this.MultiSourceLoanV4=new D({walletClient:t}),this.MultiSourceLoanV5=new V({walletClient:t}),this.AuctionLoanLiquidatorV4=new w({walletClient:t}),this.AuctionLoanLiquidatorV5=new N({walletClient:t}),this.UserVaultV5=new U({walletClient:t}),this.Leverage=new E({walletClient:t,mslAddress:this.MultiSourceLoanV5.address}),this.Seaport=new K({walletClient:t}),this.CryptoPunks=new k({walletClient:t})}Msl(e){if(v(e,this.MultiSourceLoanV4.address))return this.MultiSourceLoanV4;if(v(e,this.MultiSourceLoanV5.address))return this.MultiSourceLoanV5;throw new Error(`Invalid Contract Address ${e}`)}All(e){if(v(e,this.MultiSourceLoanV4.address))return this.AuctionLoanLiquidatorV4;if(v(e,this.MultiSourceLoanV5.address))return this.AuctionLoanLiquidatorV5;throw new Error(`Invalid Contract Address ${e}`)}UserVault(e){if(v(e,this.UserVaultV5.address))return this.UserVaultV5;throw new Error(`Invalid Contract Address ${e}`)}ERC721(e){return Ae({address:e,abi:z,walletClient:this.walletClient,publicClient:this.publicClient})}ERC20(e){return Ae({address:e,abi:pe,walletClient:this.walletClient,publicClient:this.publicClient})}};d(q,"Contracts");var S=je,g=`0x${"0".repeat(64)}`,Oe="0x0";function y(s,e){return s.logs.filter(t=>Ze(e)[0]==t.topics[0]).map(t=>Xe({abi:e.abi,data:t.data,topics:t.topics,eventName:e.eventName})).filter(t=>t.eventName==e.eventName)}d(y,"filterLogs");import{ApolloClient as rt,ApolloLink as Re,createHttpLink as st,InMemoryCache as ot}from"@apollo/client/core/index.js";import{setContext as lt}from"@apollo/client/link/context/index.js";import{withScalars as dt}from"apollo-link-scalars";import{buildSchema as pt}from"graphql";import{ApolloClient as Ye,ApolloLink as Pe,createHttpLink as Je,InMemoryCache as et}from"@apollo/client/core/index.js";import{gql as Ce}from"graphql-tag";import{SiweMessage as tt}from"siwe";var xe=d(()=>process.env.GONDI_URL??"https://api.gondi.xyz","gondiUrl"),ee=d(()=>`${xe()}/graphql`,"authApiUrl"),Me=d(()=>`${xe()}/lending/graphql`,"apiUrl");var nt=d(async()=>{let s=Pe.from([Je({uri:({operationName:e})=>`${ee()}?operation=${encodeURIComponent(e)}`})]);return new Ye({link:Pe.from([s]),defaultOptions:{query:{errorPolicy:"all"},mutate:{errorPolicy:"all"}},cache:new et({})})},"getAuthClient"),at=d(async({wallet:s})=>{let e=await nt(),{data:t,errors:n}=await e.mutate({mutation:Ce`
|
|
2
2
|
mutation GenerateSignInNonce($nonceInput: NonceInput!) {
|
|
3
3
|
generateSignInNonce(nonceInput: $nonceInput)
|
|
4
4
|
}
|
|
5
|
-
`,variables:{nonceInput:{walletAddress:s.account.address,blockchain:"ETHEREUM"}}});if(n)throw new Error(n.map(u=>u.message).join(", "));let a=t?.generateSignInNonce,i=new
|
|
5
|
+
`,variables:{nonceInput:{walletAddress:s.account.address,blockchain:"ETHEREUM"}}});if(n)throw new Error(n.map(u=>u.message).join(", "));let a=t?.generateSignInNonce,i=new tt({domain:"gondi.xyz",address:s.account.address,chainId:s.chain.id,statement:"Sign in with Ethereum to the app.",uri:ee(),version:"1",nonce:a}),r=await s.signMessage({message:i.prepareMessage()}),{data:o,errors:l}=await e.mutate({mutation:Ce`
|
|
6
6
|
mutation SignInWithEthereum($siweInput: SiweInput!) {
|
|
7
7
|
signInWithEthereum(siweInput: $siweInput)
|
|
8
8
|
}
|
|
9
|
-
`,variables:{siweInput:{message:i.prepareMessage(),signature:r}}});if(l)throw new Error(l.map(u=>u.message).join(", "));let p=o?.signInWithEthereum;if(!p)throw new Error("Couldn't generate Access Token, please try again later");return p},"signIn"),W=class{token;wallet;constructor({token:e,wallet:t}){this.token=e,this.wallet=t}async authorizeRequest(e){await this.signIn();let{headers:t={}}=e.context||{headers:{}};return{...e,headers:{...t,authorization:`Bearer ${this.token}`}}}async signIn(){this.token||(this.token=await
|
|
9
|
+
`,variables:{siweInput:{message:i.prepareMessage(),signature:r}}});if(l)throw new Error(l.map(u=>u.message).join(", "));let p=o?.signInWithEthereum;if(!p)throw new Error("Couldn't generate Access Token, please try again later");return p},"signIn"),W=class{token;wallet;constructor({token:e,wallet:t}){this.token=e,this.wallet=t}async authorizeRequest(e){await this.signIn();let{headers:t={}}=e.context||{headers:{}};return{...e,headers:{...t,authorization:`Bearer ${this.token}`}}}async signIn(){this.token||(this.token=await at({wallet:this.wallet}))}};d(W,"SessionToken");var ve=`type ActiveOfferNotification implements Node & Notification {
|
|
10
10
|
createdOn: DateTime!
|
|
11
11
|
id: String!
|
|
12
12
|
notificationType: String!
|
|
@@ -1639,7 +1639,7 @@ input UserFilter {
|
|
|
1639
1639
|
Represents NULL values
|
|
1640
1640
|
"""
|
|
1641
1641
|
scalar Void
|
|
1642
|
-
`;var pt
|
|
1642
|
+
`;var yt=pt(ve);Object.assign(BigInt.prototype,{toJSON(){return this.toString()}});var ut={datetime:{serialize:s=>s instanceof Date?s.toISOString():null,parseValue:s=>typeof s=="string"?new Date(s):s instanceof Date?s:null},BigInt:{serialize:s=>typeof s=="bigint"?String(s):null,parseValue:s=>typeof s=="string"?BigInt(s):null},DateTime:{serialize:s=>s instanceof Date?s.toISOString():null,parseValue:s=>typeof s=="string"?new Date(s):s instanceof Date?s:null}},ct=d(s=>lt(async e=>await s.authorizeRequest(e)),"authLink"),mt=Re.from([dt({schema:yt,typesMap:ut}),st({uri:({operationName:s})=>`${Me()}?operation=${encodeURIComponent(s)}`})]),Le=d(s=>{let e=new W({wallet:s});return new rt({link:Re.from([ct(e),mt]),defaultOptions:{query:{errorPolicy:"all",fetchPolicy:"no-cache"},mutate:{errorPolicy:"all",fetchPolicy:"no-cache"},watchQuery:{fetchPolicy:"no-cache",nextFetchPolicy:"no-cache",errorPolicy:"ignore"}},cache:new ot({})})},"apolloClient");import m from"graphql-tag";var he=(r=>(r.LoanAuctioned="LOAN_AUCTIONED",r.LoanDefaulted="LOAN_DEFAULTED",r.LoanForeclosed="LOAN_FORECLOSED",r.LoanInitiated="LOAN_INITIATED",r.LoanRepaid="LOAN_REPAID",r.LoanSentToAuction="LOAN_SENT_TO_AUCTION",r))(he||{}),te=(t=>(t.Gondi="GONDI",t.Nftfi="NFTFI",t))(te||{});var we=(r=>(r.Active="ACTIVE",r.Cancelled="CANCELLED",r.Executed="EXECUTED",r.Expired="EXPIRED",r.Inactive="INACTIVE",r.Outperformed="OUTPERFORMED",r))(we||{}),ne=(c=>(c.AprBps="APR_BPS",c.CreatedDate="CREATED_DATE",c.DailyInterest="DAILY_INTEREST",c.Duration="DURATION",c.Expiration="EXPIRATION",c.NetInterest="NET_INTEREST",c.NetPrincipal="NET_PRINCIPAL",c.PrincipalAmount="PRINCIPAL_AMOUNT",c.Repayment="REPAYMENT",c.Status="STATUS",c.TotalInterest="TOTAL_INTEREST",c))(ne||{}),ae=(t=>(t.Asc="ASC",t.Desc="DESC",t))(ae||{});var Zi=m`
|
|
1643
1643
|
fragment SaleOfferInfo on SingleNFTOrder {
|
|
1644
1644
|
id
|
|
1645
1645
|
netAmount
|
|
@@ -1655,19 +1655,19 @@ scalar Void
|
|
|
1655
1655
|
currencyAddress
|
|
1656
1656
|
nonce
|
|
1657
1657
|
}
|
|
1658
|
-
`,
|
|
1658
|
+
`,ft=m`
|
|
1659
1659
|
mutation listNft($nftId: Int!) {
|
|
1660
1660
|
addOrUpdateListing(nftId: $nftId) {
|
|
1661
1661
|
id
|
|
1662
1662
|
}
|
|
1663
1663
|
}
|
|
1664
|
-
`,
|
|
1664
|
+
`,Tt=m`
|
|
1665
1665
|
mutation unlistNft($nftId: Int!) {
|
|
1666
1666
|
removeListing(nftId: $nftId) {
|
|
1667
1667
|
id
|
|
1668
1668
|
}
|
|
1669
1669
|
}
|
|
1670
|
-
`,
|
|
1670
|
+
`,gt=m`
|
|
1671
1671
|
mutation generateCollectionOfferHash($offerInput: CollectionOfferInput!) {
|
|
1672
1672
|
offer: generateCollectionOfferToBeSigned(offerInput: $offerInput) {
|
|
1673
1673
|
offerHash
|
|
@@ -1686,7 +1686,7 @@ scalar Void
|
|
|
1686
1686
|
}
|
|
1687
1687
|
}
|
|
1688
1688
|
}
|
|
1689
|
-
`,
|
|
1689
|
+
`,bt=m`
|
|
1690
1690
|
mutation saveCollectionOffer($offer: CollectionSignedOfferInput!) {
|
|
1691
1691
|
offer: saveSignedCollectionOffer(signedOfferInput: $offer) {
|
|
1692
1692
|
id
|
|
@@ -1698,13 +1698,13 @@ scalar Void
|
|
|
1698
1698
|
}
|
|
1699
1699
|
}
|
|
1700
1700
|
}
|
|
1701
|
-
`,
|
|
1701
|
+
`,Ft=m`
|
|
1702
1702
|
mutation hideOffer($contract: Address!, $id: String!) {
|
|
1703
1703
|
hideOffer(contractAddress: $contract, offerId: $id) {
|
|
1704
1704
|
id
|
|
1705
1705
|
}
|
|
1706
1706
|
}
|
|
1707
|
-
`,
|
|
1707
|
+
`,St=m`
|
|
1708
1708
|
mutation generateSingleNftOfferHash($offerInput: SingleNFTOfferInput!) {
|
|
1709
1709
|
offer: generateSingleNftOfferToBeSigned(offerInput: $offerInput) {
|
|
1710
1710
|
offerHash
|
|
@@ -1726,7 +1726,7 @@ scalar Void
|
|
|
1726
1726
|
}
|
|
1727
1727
|
}
|
|
1728
1728
|
}
|
|
1729
|
-
`,
|
|
1729
|
+
`,It=m`
|
|
1730
1730
|
mutation saveSingleNftOffer($offer: SingleNFTSignedOfferInput!) {
|
|
1731
1731
|
offer: saveSignedSingleNftOffer(signedOfferInput: $offer) {
|
|
1732
1732
|
id
|
|
@@ -1741,13 +1741,13 @@ scalar Void
|
|
|
1741
1741
|
}
|
|
1742
1742
|
}
|
|
1743
1743
|
}
|
|
1744
|
-
`,
|
|
1744
|
+
`,At=m`
|
|
1745
1745
|
mutation unhideOffer($contract: Address!, $id: String!) {
|
|
1746
1746
|
showOffer(contractAddress: $contract, offerId: $id) {
|
|
1747
1747
|
id
|
|
1748
1748
|
}
|
|
1749
1749
|
}
|
|
1750
|
-
`,
|
|
1750
|
+
`,Ot=m`
|
|
1751
1751
|
mutation generateRenegotiationOfferHash(
|
|
1752
1752
|
$renegotiationInput: RenegotiationOfferInput!
|
|
1753
1753
|
) {
|
|
@@ -1769,32 +1769,32 @@ scalar Void
|
|
|
1769
1769
|
}
|
|
1770
1770
|
}
|
|
1771
1771
|
}
|
|
1772
|
-
`,
|
|
1772
|
+
`,xt=m`
|
|
1773
1773
|
mutation hideRenegotiationOffer($id: String!, $contractAddress: Address!) {
|
|
1774
1774
|
hideRenegotiation(renegotiationId: $id, contractAddress: $contractAddress) {
|
|
1775
1775
|
id
|
|
1776
1776
|
}
|
|
1777
1777
|
}
|
|
1778
|
-
`,
|
|
1778
|
+
`,Mt=m`
|
|
1779
1779
|
mutation saveRenegotiationOffer($offer: SignedRenegotiationOfferInput!) {
|
|
1780
1780
|
offer: saveRenegotiationSignedOffer(signedRenegotiationInput: $offer) {
|
|
1781
1781
|
id
|
|
1782
1782
|
status
|
|
1783
1783
|
}
|
|
1784
1784
|
}
|
|
1785
|
-
`,
|
|
1785
|
+
`,Pt=m`
|
|
1786
1786
|
mutation unhideRenegotiationOffer($id: String!, $contractAddress: Address!) {
|
|
1787
1787
|
showRenegotiation(renegotiationId: $id, contractAddress: $contractAddress) {
|
|
1788
1788
|
id
|
|
1789
1789
|
}
|
|
1790
1790
|
}
|
|
1791
|
-
`,
|
|
1791
|
+
`,Ct=m`
|
|
1792
1792
|
mutation hideSaleOffer($id: String!) {
|
|
1793
1793
|
hideSaleOffer(saleOfferId: $id) {
|
|
1794
1794
|
id
|
|
1795
1795
|
}
|
|
1796
1796
|
}
|
|
1797
|
-
`,
|
|
1797
|
+
`,vt=m`
|
|
1798
1798
|
query listBestBidsForNft($nftId: Int!, $currencyAddress: String!) {
|
|
1799
1799
|
bids: listBestBidsForNft(nftId: $nftId, currencyAddress: $currencyAddress) {
|
|
1800
1800
|
id
|
|
@@ -1812,20 +1812,20 @@ scalar Void
|
|
|
1812
1812
|
nonce
|
|
1813
1813
|
}
|
|
1814
1814
|
}
|
|
1815
|
-
`,
|
|
1815
|
+
`,Rt=m`
|
|
1816
1816
|
mutation saveSignedSaleOffer($offer: SignedOrderInput!) {
|
|
1817
1817
|
offer: saveSignedSaleOffer(signedOfferInput: $offer) {
|
|
1818
1818
|
id
|
|
1819
1819
|
status
|
|
1820
1820
|
}
|
|
1821
1821
|
}
|
|
1822
|
-
`,
|
|
1822
|
+
`,Lt=m`
|
|
1823
1823
|
mutation unhideSaleOffer($id: String!) {
|
|
1824
1824
|
showSaleOffer(saleOfferId: $id) {
|
|
1825
1825
|
id
|
|
1826
1826
|
}
|
|
1827
1827
|
}
|
|
1828
|
-
`,
|
|
1828
|
+
`,ht=m`
|
|
1829
1829
|
query collectionsIdByContractAddress($contractAddress: Address!) {
|
|
1830
1830
|
collections: getCollectionsByContractAddress(
|
|
1831
1831
|
contractAddress: $contractAddress
|
|
@@ -1833,13 +1833,13 @@ scalar Void
|
|
|
1833
1833
|
id
|
|
1834
1834
|
}
|
|
1835
1835
|
}
|
|
1836
|
-
`,
|
|
1836
|
+
`,wt=m`
|
|
1837
1837
|
query collectionIdBySlug($slug: String!) {
|
|
1838
1838
|
collection: getCollectionBySlug(slug: $slug) {
|
|
1839
1839
|
id
|
|
1840
1840
|
}
|
|
1841
1841
|
}
|
|
1842
|
-
`,
|
|
1842
|
+
`,_t=m`
|
|
1843
1843
|
query listListings(
|
|
1844
1844
|
$collections: [Int!]
|
|
1845
1845
|
$userFilter: UserFilter
|
|
@@ -1881,7 +1881,7 @@ scalar Void
|
|
|
1881
1881
|
}
|
|
1882
1882
|
}
|
|
1883
1883
|
}
|
|
1884
|
-
`,
|
|
1884
|
+
`,Bt=m`
|
|
1885
1885
|
query listLoans(
|
|
1886
1886
|
$borrowerAddress: String = ""
|
|
1887
1887
|
$collections: [Int!] = []
|
|
@@ -1976,7 +1976,7 @@ scalar Void
|
|
|
1976
1976
|
}
|
|
1977
1977
|
}
|
|
1978
1978
|
}
|
|
1979
|
-
`,
|
|
1979
|
+
`,Nt=m`
|
|
1980
1980
|
query nftIdByContractAddressAndTokenId(
|
|
1981
1981
|
$contractAddress: Address!
|
|
1982
1982
|
$tokenId: BigInt!
|
|
@@ -1988,13 +1988,13 @@ scalar Void
|
|
|
1988
1988
|
id
|
|
1989
1989
|
}
|
|
1990
1990
|
}
|
|
1991
|
-
`,
|
|
1991
|
+
`,kt=m`
|
|
1992
1992
|
query nftIdBySlugTokenId($slug: String!, $tokenId: BigInt!) {
|
|
1993
1993
|
nft: getNftBySlugAndTokenId(slug: $slug, tokenId: $tokenId) {
|
|
1994
1994
|
id
|
|
1995
1995
|
}
|
|
1996
1996
|
}
|
|
1997
|
-
`,
|
|
1997
|
+
`,Et=m`
|
|
1998
1998
|
query listOffers(
|
|
1999
1999
|
$borrowerAddress: String
|
|
2000
2000
|
$lenderAddress: String
|
|
@@ -2082,5 +2082,5 @@ scalar Void
|
|
|
2082
2082
|
}
|
|
2083
2083
|
}
|
|
2084
2084
|
}
|
|
2085
|
-
`;function _e(s){return{listNft(e,t){return s(mt,e,t)},unlistNft(e,t){return s(ft,e,t)},generateCollectionOfferHash(e,t){return s(Tt,e,t)},saveCollectionOffer(e,t){return s(gt,e,t)},hideOffer(e,t){return s(bt,e,t)},generateSingleNftOfferHash(e,t){return s(Ft,e,t)},saveSingleNftOffer(e,t){return s(St,e,t)},unhideOffer(e,t){return s(It,e,t)},generateRenegotiationOfferHash(e,t){return s(At,e,t)},hideRenegotiationOffer(e,t){return s(Ot,e,t)},saveRenegotiationOffer(e,t){return s(xt,e,t)},unhideRenegotiationOffer(e,t){return s(Mt,e,t)},hideSaleOffer(e,t){return s(Pt,e,t)},listBestBidsForNft(e,t){return s(Ct,e,t)},saveSignedSaleOffer(e,t){return s(vt,e,t)},unhideSaleOffer(e,t){return s(Rt,e,t)},collectionsIdByContractAddress(e,t){return s(Lt,e,t)},collectionIdBySlug(e,t){return s(ht,e,t)},listListings(e,t){return s(wt,e,t)},listLoans(e,t){return s(_t,e,t)},nftIdByContractAddressAndTokenId(e,t){return s(Bt,e,t)},nftIdBySlugTokenId(e,t){return s(Nt,e,t)},listOffers(e,t){return s(kt,e,t)}}}d(_e,"getSdk");var Et=["mutation","query","subscription"];function Be(s){return _e(d(async(t,n,a)=>{if(a={...a,context:{...a?.context,clientName:"lending"}},t.definitions.filter(r=>r.kind==="OperationDefinition"&&Et.includes(r.operation)).length!==1)throw new Error("DocumentNode passed to Apollo Client must contain single query or mutation");let i=t.definitions[0];if(i.kind!=="OperationDefinition")throw new Error("DocumentNode passed to Apollo Client must contain single query or mutation");switch(i.operation){case"mutation":{let r=await s.mutate({mutation:t,variables:n,...a,fetchPolicy:"no-cache"});if(r.errors)throw new Error(JSON.stringify(r.errors));if(r.data===void 0||r.data===null)throw new Error("No data presented in the GraphQL response");return r.data}case"query":{let r=await s.query({query:t,variables:n,...a});if(r.errors)throw new Error(JSON.stringify(r.errors));if(r.data===void 0||r.data===null)throw new Error("No data presented in the GraphQL response");return r.data}case"subscription":throw new Error("Subscription requests through SDK interface are not supported");default:throw new Error("Operation not supported")}},"requester"))}d(Be,"getSdkApollo");var ie=d(({endCursor:s,hasNextPage:e})=>e?{hasNextPage:e,cursor:s}:{hasNextPage:e,cursor:null},"mapPageInfo"),$=class{api;generateSingleNftOfferHash;generateCollectionOfferHash;generateRenegotiationOfferHash;nftIdBySlugTokenId;nftIdByContractAddressAndTokenId;collectionIdBySlug;collectionsIdByContractAddress;listNft;unlistNft;hideOffer;hideRenegotiationOffer;unhideOffer;unhideRenegotiationOffer;saveSignedSaleOffer;hideSaleOffer;unhideSaleOffer;listBestBidsForNft;constructor({apiClient:e,wallet:t}){let n=e??Le(t);this.api=Be(n),this.generateSingleNftOfferHash=this.api.generateSingleNftOfferHash,this.generateCollectionOfferHash=this.api.generateCollectionOfferHash,this.generateRenegotiationOfferHash=this.api.generateRenegotiationOfferHash,this.nftIdBySlugTokenId=this.api.nftIdBySlugTokenId,this.nftIdByContractAddressAndTokenId=this.api.nftIdByContractAddressAndTokenId,this.collectionIdBySlug=this.api.collectionIdBySlug,this.collectionsIdByContractAddress=this.api.collectionsIdByContractAddress,this.listNft=this.api.listNft,this.unlistNft=this.api.unlistNft,this.saveSignedSaleOffer=this.api.saveSignedSaleOffer,this.hideOffer=this.api.hideOffer,this.hideRenegotiationOffer=this.api.hideRenegotiationOffer,this.unhideOffer=this.api.unhideOffer,this.unhideRenegotiationOffer=this.api.unhideRenegotiationOffer,this.hideSaleOffer=this.api.hideSaleOffer,this.unhideSaleOffer=this.api.unhideSaleOffer,this.listBestBidsForNft=this.api.listBestBidsForNft}async saveSingleNftOffer(e){let t={...e,borrowerAddress:e.borrowerAddress||S},n=await this.api.saveSingleNftOffer({offer:t}),a=n.offer.nft.collection?.contractData?.contractAddress||S;return{id:n.offer.id,nftCollateralAddress:a,nftCollateralTokenId:n.offer.nft.tokenId,...e}}async saveCollectionOffer(e){let t={...e,borrowerAddress:e.borrowerAddress||S},n=await this.api.saveCollectionOffer({offer:t}),a=n.offer.collection?.contractData?.contractAddress||S;return{id:n.offer.id,nftCollateralAddress:a,nftCollateralTokenId:0n,...e}}async saveRefinanceOffer(e){return{id:(await this.api.saveRenegotiationOffer({offer:e})).offer.id,...e}}async listOffers(e){let{result:{edges:t,pageInfo:n}}=await this.api.listOffers(e),a=t.map(i=>{let{__typename:r,lenderAddress:o,borrowerAddress:l,signerAddress:p,...u}=i.node;return{type:r,lender:o,borrower:l,signer:p,...u}});return{...ie(n),offers:a}}async listLoans(e){let{loans:{edges:t,pageInfo:n}}=await this.api.listLoans(e),a=t.map(i=>{let{__typename:r,...o}=i.node;return{type:r,...o}});return{...ie(n),loans:a}}async listListings(e){let{result:{edges:t,pageInfo:n}}=await this.api.listListings(e),a=t.map(i=>i.node);return{...ie(n),listings:a}}};d($,"Api");var Ne=115792089237316195423570985008687907853269984665640564039457584007913129639935n;import{createClient as qt}from"@reservoir0x/reservoir-sdk";import{createPublicClient as Wt,encodeAbiParameters as $t,encodeFunctionData as Qt,getContract as zt,http as Gt}from"viem";import{mainnet as Xt}from"viem/chains";var _=class{orderId;to;callbackData;value;constructor({orderId:e,to:t,callbackData:n,value:a}){this.orderId=e,this.to=t,this.callbackData=n,this.value=a}};d(_,"InterruptedSendTransactionStepError");var P=class extends _{signature;constructor({orderId:e,to:t,callbackData:n,value:a,signature:i}){super({orderId:e,to:t,callbackData:n,value:a}),this.signature=i}};d(P,"InterruptedSeaportSendTransactionStepError");var L=class extends _{};d(L,"InterruptedCryptoPunksSendTransactionStepError");var C=class extends _{};d(C,"InterruptedGenericSendTransactionStepError");import{adaptViemWallet as Vt}from"@reservoir0x/reservoir-sdk";import{decodeFunctionData as Ht,zeroAddress as Kt}from"viem";var re=d(s=>s==="opensea.io","isOpensea"),Ut=d(s=>s==="cryptopunks.app","isCryptopunks"),ke=d(s=>s==="gondi.xyz","isNative"),se=d((s,e)=>({...Vt(s),transport:void 0,handleSendTransactionStep:async(a,i,r)=>{if(r.id!=="sale")return console.log(r),ce;let o=i.orderIds?.[0]??"",l=i.data.to,p=i.data.data,u=BigInt(i.data.value??0);if(re(e)){let F=Ht({abi:w,data:i.data.data})?.args?.[0],g=Array.isArray(F)?F[0].signature:typeof F=="object"?F.signature:Kt;throw new P({orderId:o,to:l,callbackData:p,value:u,signature:g})}else throw Ut(e)?new L({orderId:o,to:l,callbackData:p,value:u}):new C({orderId:o,to:l,callbackData:p,value:u})}}),"adaptWalletToCaptureTxData");var Q=class{baseApiUrl;mainnetClient;wallet;Seaport;CryptoPunks;client;EXECUTION_INFO_ABI=[{name:"ExecutionInfo",type:"tuple",components:[{name:"module",type:"address"},{name:"data",type:"bytes"},{name:"value",type:"uint256"}]}];constructor({baseApiUrl:e="https://api.reservoir.tools",wallet:t,Seaport:n,CryptoPunks:a}){this.baseApiUrl=e,this.wallet=t,this.Seaport=n,this.CryptoPunks=a;let{reservoirApiKey:i,infuraApiKey:r}=me();this.client=qt({chains:[{id:t.chain.id,name:t.chain.name,baseApiUrl:e,active:!0}],apiKey:i,source:"gondi.xyz"}),this.mainnetClient=Wt({chain:Xt,transport:Gt(`https://mainnet.infura.io/v3/${r}`)})}async getAsk({orderId:e}){return fetch(`${this.baseApiUrl}/orders/asks/v5?ids=${e}&includeRawData=true`).then(t=>t.json()).then(({orders:t})=>{if(!t)throw new Error(`Order ${e} is not available anymore`);return t[0]})}async getBid({orderId:e}){return fetch(`${this.baseApiUrl}/orders/bids/v6?ids=${e}&includeRawData=true`).then(t=>t.json()).then(({orders:t})=>{if(!t)throw new Error(`Order ${e} is not available anymore`);return t[0]})}generateExpectedCurrencyPriceObject(e,t){return{[t]:{raw:e,currencyAddress:t,currencyDecimals:18}}}encodeExecutionData({module:e,data:t,value:n}){return $t(this.EXECUTION_INFO_ABI,[{module:e,data:t,value:n}])}async generateMatchOrdersExecutionData({askOrBid:e,signature:t,side:n="ask"}){let a={parameters:{...e.rawData,totalOriginalConsiderationItems:BigInt(e.rawData.consideration.length)},signature:t},i=await this.Seaport.generateInverseOrder(a.parameters),r={parameters:i,signature:await this.Seaport.signOrder(i)},o=this.Seaport.generateFulfillmentsForOrderAndInverse(a.parameters),l=Qt({abi:w,functionName:"matchOrders",args:[[a,r],o]}),p=n==="ask"?a.parameters.consideration.reduce((u,c)=>u+(c.itemType===0?BigInt(c.endAmount):0n),0n):BigInt(e.price.netAmount.raw);return{callbackData:this.encodeExecutionData({module:this.Seaport.address,data:l,value:p}),value:p,isSeaportCall:!0}}async buyTokens(e){let{ETH_ADDRESS:t}=A(),n=e.reduce((a,i)=>a+i.price,0n);return this.client?.actions.buyToken({items:e.map(a=>({token:`${a.collectionContractAddress}:${a.tokenId}`,quantity:1,exactOrderSource:a.orderSource})),expectedPrice:this.generateExpectedCurrencyPriceObject(n,t),wallet:this.wallet,onProgress:()=>null,precheck:!1,options:{excludeEOA:!0,skipBalanceCheck:!0}})}async getExecutionDataForBuyToken({collectionContractAddress:e,tokenId:t,price:n,exactOrderSource:a}){let i=se(this.wallet,a),{ETH_ADDRESS:r}=A();try{throw await this.client?.actions.buyToken({items:[{token:`${e}:${t}`,quantity:1,exactOrderSource:a}],expectedPrice:this.generateExpectedCurrencyPriceObject(n,r),wallet:i,onProgress:()=>null,precheck:!1,options:{excludeEOA:!0,skipBalanceCheck:!0}}),new Error("This should never happen since we will throw inside the wallet tx")}catch(o){if(o instanceof P){let{orderId:l,signature:p}=o,u=await this.getAsk({orderId:l});return this.generateMatchOrdersExecutionData({askOrBid:u,signature:p})}else if(o instanceof L){let{value:l}=o,p=await this.CryptoPunks.encodeBuyPunk(t);return{callbackData:this.encodeExecutionData({module:this.CryptoPunks.address,data:p,value:l}),value:l,isSeaportCall:!1}}else if(o instanceof C){let{to:l,callbackData:p,value:u}=o;return{callbackData:this.encodeExecutionData({module:l,data:p,value:u}),value:u,isSeaportCall:!1}}else throw new Error(`No available offer for price ${n}`)}}async getCallbackDataForSellToken({collectionContractAddress:e,tokenId:t,price:n,exactOrderSource:a,leverageAddress:i}){let r=se(this.wallet,a),{WETH_ADDRESS:o}=A(),p=await zt({abi:z,address:e,publicClient:this.mainnetClient}).read.ownerOf([t]);try{throw await this.client?.actions.acceptOffer({items:[{token:`${e}:${t}`,quantity:1,exactOrderSource:a}],expectedPrice:this.generateExpectedCurrencyPriceObject(n,o),wallet:r,onProgress:()=>null,precheck:!1,options:{excludeEOA:!0,taker:re(a)?p:i}}),new Error("This should never happen since we will throw inside the wallet tx")}catch(u){if(u instanceof P){let{orderId:c,signature:F}=u,g=await this.getBid({orderId:c});return this.generateMatchOrdersExecutionData({askOrBid:g,signature:F,side:"bid"})}else if(u instanceof C){let{orderId:c,to:F,callbackData:g}=u,I=await this.getBid({orderId:c});return{callbackData:this.encodeExecutionData({module:F,data:g,value:BigInt(I.price?.netAmount?.raw??0n)}),value:BigInt(I.price?.netAmount?.raw??0n),isSeaportCall:!1}}else throw new Error(`No available offer for price ${n}`)}}};d(Q,"Reservoir");var G=class{contracts;wallet;bcClient;api;reservoir;constructor({wallet:e,apiClient:t,reservoirBaseApiUrl:n}){this.wallet=e,this.bcClient=Zt({chain:e.chain,transport:()=>jt(e.transport)}),this.contracts=new q(this.bcClient,e),this.api=new $({wallet:e,apiClient:t}),this.reservoir=new Q({baseApiUrl:n,wallet:e,Seaport:this.contracts.Seaport,CryptoPunks:this.contracts.CryptoPunks})}async makeSingleNftOffer(e){return await this._makeSingleNftOffer(e)}async _makeSingleNftOffer(e,t){let n=t?this.contracts.Msl(t):this.contracts.MultiSourceLoanV5,a=n.address,i={...e,lenderAddress:this.wallet.account?.address,signerAddress:this.wallet.account?.address,borrowerAddress:e.borrowerAddress??S,requiresLiquidation:!!e.requiresLiquidation,contractAddress:a,offerValidators:[]},r=await this.api.generateSingleNftOfferHash({offerInput:i}),{offerHash:o,offerId:l,validators:p,lenderAddress:u,signerAddress:c,borrowerAddress:F}=r.offer,g=r.offer.nft.collection?.contractData?.contractAddress;if(g===void 0)throw new Error("Invalid nft");let I={...i,lender:u??i.lenderAddress,signer:c??i.signerAddress,borrower:F??i.borrowerAddress,nftCollateralTokenId:r.offer.nft.tokenId,nftCollateralAddress:g,validators:p,offerId:l},X=await n.signOffer({verifyingContract:i.contractAddress,structToSign:I}),Z={...i,offerValidators:p.map(B=>({arguments:B.arguments,validator:B.validator})),offerHash:o??b,offerId:l,signature:X};return await this.api.saveSingleNftOffer(Z)}async makeCollectionOffer(e){return await this._makeCollectionOffer(e)}async _makeCollectionOffer(e,t){let n=t?this.contracts.Msl(t):this.contracts.MultiSourceLoanV5,a=n.address,i={...e,lenderAddress:this.wallet.account?.address,signerAddress:this.wallet.account?.address,borrowerAddress:e.borrowerAddress??S,requiresLiquidation:!!e.requiresLiquidation,contractAddress:a,offerValidators:[{validator:S,arguments:Oe}]},r=await this.api.generateCollectionOfferHash({offerInput:i}),o=r.offer.collection.contractData?.contractAddress;if(o===void 0)throw new Error("Invalid collection");let{offerHash:l,offerId:p,validators:u,lenderAddress:c,signerAddress:F,borrowerAddress:g}=r.offer,I={...i,lender:c??i.lenderAddress,signer:F??i.signerAddress,borrower:g??i.borrowerAddress,nftCollateralTokenId:0n,nftCollateralAddress:o,validators:u,offerId:p},X=await n.signOffer({verifyingContract:i.contractAddress,structToSign:I}),Z={...i,offerValidators:u.map(B=>({arguments:B.arguments,validator:B.validator})),offerHash:l??b,offerId:p,signature:X};return await this.api.saveCollectionOffer(Z)}async makeSaleOffer({collectionContractAddress:e,tokenId:t,price:n,expirationTime:a}){let{parameters:{totalOriginalConsiderationItems:i,...r},signature:o}=await this.contracts.Seaport.generateOrderFromSaleOffer({collectionContractAddress:e,tokenId:t,price:n,expirationTime:a});return this.api.saveSignedSaleOffer({offer:{...r,signature:o}})}async cancelSaleOffer({saleOffer:e}){return this.contracts.Seaport.cancel({orderComponents:e})}async cancelOffer({id:e,contractAddress:t}){return this.contracts.Msl(t).cancelOffer({id:e})}async cancelAllOffers({minId:e,contractAddress:t}){return this.contracts.Msl(t).cancelAllOffers({minId:e})}async hideOffer({id:e,contractAddress:t}){return this.api.hideOffer({contract:t,id:e.toString()})}async unhideOffer({id:e,contractAddress:t}){return this.api.unhideOffer({contract:t,id:e.toString()})}async makeRefinanceOffer({renegotiation:e,contractAddress:t,skipSignature:n}){let a={lenderAddress:this.wallet.account?.address,signerAddress:this.wallet.account?.address,...e},i=await this.api.generateRenegotiationOfferHash({renegotiationInput:a}),{renegotiationId:r,offerHash:o,loanId:l,lenderAddress:p,signerAddress:u}=i.offer,c={...a,fee:a.feeAmount,lender:p??a.lenderAddress,signer:u??a.signerAddress??S,strictImprovement:!1,loanId:l,renegotiationId:r};if(n)return{...a,offerHash:o??b,signature:b,renegotiationId:r};let g=await this.contracts.Msl(t).signRenegotiationOffer({verifyingContract:t,structToSign:c}),I={...a,signature:g,offerHash:o??b,renegotiationId:r};return await this.api.saveRefinanceOffer(I)}async cancelRefinanceOffer({id:e,contractAddress:t}){return this.contracts.Msl(t).cancelRefinanceOffer({id:e})}async hideRenegotiationOffer({id:e,contractAddress:t}){return this.api.hideRenegotiationOffer({id:e.toString(),contractAddress:t})}async unhideRenegotiationOffer({id:e,contractAddress:t}){return this.api.unhideRenegotiationOffer({id:e.toString(),contractAddress:t})}async hideSaleOffer({id:e}){return this.api.hideSaleOffer({id:e})}async unhideSaleOffer({id:e}){return this.api.unhideSaleOffer({id:e})}async cancelAllRenegotiations({minId:e,contractAddress:t}){return this.contracts.Msl(t).cancelAllRenegotiations({minId:e})}async emitLoan({offer:e,...t}){let n=Y({offer:e,...t});return this.contracts.Msl(e.contractAddress).emitLoan(n)}async repayLoan({loan:e,loanId:t,nftReceiver:n}){return this.contracts.Msl(e.contractAddress).repayLoan({loan:e,nftReceiver:n,loanId:t})}async offers({limit:e=20,cursor:t,sortBy:n={field:"CREATED_DATE",order:"DESC"},filterBy:a={}}){let{status:i,nft:r,collection:o,lender:l,borrower:p,...u}=a;return await this.api.listOffers({first:e,after:t,sortBy:n,statuses:i,nfts:r?[r]:[],collections:o?[o]:[],lenderAddress:l,borrowerAddress:p,...u})}async loans({limit:e=20,cursor:t,...n}){return await this.api.listLoans({first:e,after:t,...n})}async list({nft:e}){return await this.api.listNft({nftId:e})}async unlist({nft:e}){return await this.api.unlistNft({nftId:e})}async listings({collections:e,user:t,marketPlaces:n=["GONDI"],limit:a=20,cursor:i}){return await this.api.listListings({collections:e,userFilter:t,marketplaceNames:n,after:i,first:a})}async nftId(e){let t;if(e.slug&&(t=await this.api.nftIdBySlugTokenId(e)),e.contractAddress&&(t=await this.api.nftIdByContractAddressAndTokenId(e)),!t?.nft)throw new Error(`invalid nft ${e}`);return Number(t.nft.id)}async collectionId(e){let t;if(e.slug){if(t=await this.api.collectionIdBySlug(e),!t?.collection)throw new Error(`invalid collection ${e}`);return Number(t.collection.id)}if(e.contractAddress){if(t=await this.api.collectionsIdByContractAddress(e),!t?.collections)throw new Error(`invalid collection ${e}`);return t.collections.map(n=>Number(n.id))}}async getRemainingLockupSeconds({loan:e}){return this.contracts.Msl(e.contractAddress).getRemainingLockupSeconds({loan:e})}async getBestNativeSaleOffer({contractAddress:e,tokenId:t}){let{WETH_ADDRESS:n}=A(),a=await this.nftId({contractAddress:e,tokenId:t}),{bids:i}=await this.api.listBestBidsForNft({nftId:a,currencyAddress:n});return i.find(o=>o.marketPlace===Se)??null}async refinanceFullLoan({offer:e,loan:t,loanId:n}){let a={...e,loanId:n,strictImprovement:e.strictImprovement??!1,lender:e.lenderAddress,signer:e.signerAddress??S,fee:e.feeAmount};return this.contracts.Msl(t.contractAddress).refinanceFullLoan({offer:a,loan:t,signature:e.signature})}async refinancePartialLoan({offer:e,loan:t,loanId:n}){let a={...e,loanId:n,strictImprovement:e.strictImprovement??!1,lender:e.lenderAddress,signer:e.signerAddress??S,fee:e.feeAmount};return this.contracts.Msl(t.contractAddress).refinancePartialLoan({offer:a,loan:t})}async extendLoan({loan:e,newDuration:t,loanId:n}){return this.contracts.Msl(e.contractAddress).extendLoan({loan:e,newDuration:t,loanId:n})}async delegateMulticall(e){let t=e[0].loan.contractAddress;return this.contracts.Msl(t).delegateMulticall(e)}async delegate({loan:e,loanId:t,to:n,enable:a,rights:i}){return this.contracts.Msl(e.contractAddress).delegate({loan:e,loanId:t,to:n,rights:i,enable:a})}async revokeDelegate({to:e,collection:t,tokenId:n,contract:a=this.contracts.MultiSourceLoanV5.address}){return this.contracts.Msl(a).revokeDelegate({to:e,collection:t,tokenId:n})}async revokeDelegationsAndEmitLoan({delegations:e,emit:t}){let n=Y(t);return this.contracts.Msl(t.offer.contractAddress).revokeDelegationsAndEmitLoan({delegations:e,emit:n})}async liquidateLoan({loan:e,loanId:t}){return this.contracts.Msl(e.contractAddress).liquidateLoan({loan:e,loanId:t})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a}){return this.contracts.All(a.loanAddress).placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a})}async settleAuction({loan:e,auction:t}){return this.contracts.All(t.loanAddress).settleAuction({loan:e,auction:t})}async buy(e){return this.reservoir.buyTokens(e)}async leverageBuy({leverageBuyData:e}){let t=await Promise.all(e.map(i=>this.reservoir.getExecutionDataForBuyToken({collectionContractAddress:i.nft.collectionContractAddress,tokenId:i.nft.tokenId,price:i.nft.price,exactOrderSource:i.nft.orderSource}))),n=t.reduce((i,{value:r},o)=>i+r-e[o].amount+e[o].offer.fee,0n),a=e.map((i,r)=>({...i,callbackData:t[r].callbackData}));return this.contracts.Leverage.buy({leverageBuyData:a,ethToSend:n<0n?0n:n})}async leverageSell({loan:e,loanId:t,price:n,orderSource:a}){let i=null;if(ke(a)){let o=await this.getBestNativeSaleOffer({contractAddress:e.nftCollateralAddress,tokenId:e.nftCollateralTokenId});if(!o||o.netAmount<n)throw new Error(`No native bid for price ${n}`);i=await this.reservoir.generateMatchOrdersExecutionData({askOrBid:{rawData:await this.contracts.Seaport.recoverOrderFromNativeBid({nativeBid:o,collectionContractAddress:e.nftCollateralAddress,tokenId:e.nftCollateralTokenId}),price:{netAmount:{raw:String(n)}}},signature:o.signature,side:"bid"})}else i=await this.reservoir.getCallbackDataForSellToken({collectionContractAddress:e.nftCollateralAddress,tokenId:e.nftCollateralTokenId,price:n,exactOrderSource:a,leverageAddress:this.contracts.Leverage.address});let r=i.isSeaportCall;return this.contracts.Leverage.sell({loan:e,callbackData:i.callbackData,shouldDelegate:r,loanId:t})}async getOwner({nftAddress:e,tokenId:t}){return this.contracts.ERC721(e).read.ownerOf([t])}async isApprovedNFTForAll({nftAddress:e,to:t=this.contracts.MultiSourceLoanV5.address}){return this.contracts.ERC721(e).read.isApprovedForAll([this.wallet.account?.address,t])}async approveNFTForAll({nftAddress:e,to:t=this.contracts.MultiSourceLoanV5.address}){let n=this.contracts.ERC721(e),a=await n.write.setApprovalForAll([t,!0]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await n.createEventFilter.ApprovalForAll({}),o=y(i,r);if(o.length===0)throw new Error("ERC721 approval for all not set");return{...o[0].args,...i}}}}async isApprovedToken({tokenAddress:e,amount:t,to:n=this.contracts.MultiSourceLoanV5.address}){return await this.contracts.ERC20(e).read.allowance([this.wallet.account?.address,n])>=t}async approveToken({tokenAddress:e,amount:t=Ne,to:n=this.contracts.MultiSourceLoanV5.address}){let a=this.contracts.ERC20(e),i=await a.write.approve([n,t]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),o=await a.createEventFilter.Approval({}),l=y(r,o);if(l.length===0)throw new Error("ERC20 approval not set");return{...l[0].args,...r}}}}async createUserVault({nfts:e,userVaultAddress:t=this.contracts.UserVaultV5.address}){return this.contracts.UserVault(t).createVault(e)}async depositUserVaultERC721s({userVaultAddress:e=this.contracts.UserVaultV5.address,...t}){return this.contracts.UserVault(e).depositERC721s(t)}async burnUserVaultAndWithdraw({userVaultAddress:e=this.contracts.UserVaultV5.address,...t}){return this.contracts.UserVault(e).burnAndWithdraw(t)}};d(G,"Gondi");export{G as Gondi,he as LoanStatusType,te as MarketplaceEnum,we as OfferStatus,ne as OffersSortField,ae as Ordering};
|
|
2085
|
+
`;function _e(s){return{listNft(e,t){return s(ft,e,t)},unlistNft(e,t){return s(Tt,e,t)},generateCollectionOfferHash(e,t){return s(gt,e,t)},saveCollectionOffer(e,t){return s(bt,e,t)},hideOffer(e,t){return s(Ft,e,t)},generateSingleNftOfferHash(e,t){return s(St,e,t)},saveSingleNftOffer(e,t){return s(It,e,t)},unhideOffer(e,t){return s(At,e,t)},generateRenegotiationOfferHash(e,t){return s(Ot,e,t)},hideRenegotiationOffer(e,t){return s(xt,e,t)},saveRenegotiationOffer(e,t){return s(Mt,e,t)},unhideRenegotiationOffer(e,t){return s(Pt,e,t)},hideSaleOffer(e,t){return s(Ct,e,t)},listBestBidsForNft(e,t){return s(vt,e,t)},saveSignedSaleOffer(e,t){return s(Rt,e,t)},unhideSaleOffer(e,t){return s(Lt,e,t)},collectionsIdByContractAddress(e,t){return s(ht,e,t)},collectionIdBySlug(e,t){return s(wt,e,t)},listListings(e,t){return s(_t,e,t)},listLoans(e,t){return s(Bt,e,t)},nftIdByContractAddressAndTokenId(e,t){return s(Nt,e,t)},nftIdBySlugTokenId(e,t){return s(kt,e,t)},listOffers(e,t){return s(Et,e,t)}}}d(_e,"getSdk");var Dt=["mutation","query","subscription"];function Be(s){return _e(d(async(t,n,a)=>{if(a={...a,context:{...a?.context,clientName:"lending"}},t.definitions.filter(r=>r.kind==="OperationDefinition"&&Dt.includes(r.operation)).length!==1)throw new Error("DocumentNode passed to Apollo Client must contain single query or mutation");let i=t.definitions[0];if(i.kind!=="OperationDefinition")throw new Error("DocumentNode passed to Apollo Client must contain single query or mutation");switch(i.operation){case"mutation":{let r=await s.mutate({mutation:t,variables:n,...a,fetchPolicy:"no-cache"});if(r.errors)throw new Error(JSON.stringify(r.errors));if(r.data===void 0||r.data===null)throw new Error("No data presented in the GraphQL response");return r.data}case"query":{let r=await s.query({query:t,variables:n,...a});if(r.errors)throw new Error(JSON.stringify(r.errors));if(r.data===void 0||r.data===null)throw new Error("No data presented in the GraphQL response");return r.data}case"subscription":throw new Error("Subscription requests through SDK interface are not supported");default:throw new Error("Operation not supported")}},"requester"))}d(Be,"getSdkApollo");var ie=d(({endCursor:s,hasNextPage:e})=>e?{hasNextPage:e,cursor:s}:{hasNextPage:e,cursor:null},"mapPageInfo"),$=class{api;generateSingleNftOfferHash;generateCollectionOfferHash;generateRenegotiationOfferHash;nftIdBySlugTokenId;nftIdByContractAddressAndTokenId;collectionIdBySlug;collectionsIdByContractAddress;listNft;unlistNft;hideOffer;hideRenegotiationOffer;unhideOffer;unhideRenegotiationOffer;saveSignedSaleOffer;hideSaleOffer;unhideSaleOffer;listBestBidsForNft;constructor({apiClient:e,wallet:t}){let n=e??Le(t);this.api=Be(n),this.generateSingleNftOfferHash=this.api.generateSingleNftOfferHash,this.generateCollectionOfferHash=this.api.generateCollectionOfferHash,this.generateRenegotiationOfferHash=this.api.generateRenegotiationOfferHash,this.nftIdBySlugTokenId=this.api.nftIdBySlugTokenId,this.nftIdByContractAddressAndTokenId=this.api.nftIdByContractAddressAndTokenId,this.collectionIdBySlug=this.api.collectionIdBySlug,this.collectionsIdByContractAddress=this.api.collectionsIdByContractAddress,this.listNft=this.api.listNft,this.unlistNft=this.api.unlistNft,this.saveSignedSaleOffer=this.api.saveSignedSaleOffer,this.hideOffer=this.api.hideOffer,this.hideRenegotiationOffer=this.api.hideRenegotiationOffer,this.unhideOffer=this.api.unhideOffer,this.unhideRenegotiationOffer=this.api.unhideRenegotiationOffer,this.hideSaleOffer=this.api.hideSaleOffer,this.unhideSaleOffer=this.api.unhideSaleOffer,this.listBestBidsForNft=this.api.listBestBidsForNft}async saveSingleNftOffer(e){let t={...e,borrowerAddress:e.borrowerAddress||S},n=await this.api.saveSingleNftOffer({offer:t}),a=n.offer.nft.collection?.contractData?.contractAddress||S;return{id:n.offer.id,nftCollateralAddress:a,nftCollateralTokenId:n.offer.nft.tokenId,...e}}async saveCollectionOffer(e){let t={...e,borrowerAddress:e.borrowerAddress||S},n=await this.api.saveCollectionOffer({offer:t}),a=n.offer.collection?.contractData?.contractAddress||S;return{id:n.offer.id,nftCollateralAddress:a,nftCollateralTokenId:0n,...e}}async saveRefinanceOffer(e){return{id:(await this.api.saveRenegotiationOffer({offer:e})).offer.id,...e}}async listOffers(e){let{result:{edges:t,pageInfo:n}}=await this.api.listOffers(e),a=t.map(i=>{let{__typename:r,lenderAddress:o,borrowerAddress:l,signerAddress:p,...u}=i.node;return{type:r,lender:o,borrower:l,signer:p,...u}});return{...ie(n),offers:a}}async listLoans(e){let{loans:{edges:t,pageInfo:n}}=await this.api.listLoans(e),a=t.map(i=>{let{__typename:r,...o}=i.node;return{type:r,...o}});return{...ie(n),loans:a}}async listListings(e){let{result:{edges:t,pageInfo:n}}=await this.api.listListings(e),a=t.map(i=>i.node);return{...ie(n),listings:a}}};d($,"Api");var Ne=115792089237316195423570985008687907853269984665640564039457584007913129639935n;import{createClient as Wt}from"@reservoir0x/reservoir-sdk";import{createPublicClient as $t,encodeAbiParameters as Qt,encodeFunctionData as Ee,getContract as zt,http as Gt,zeroAddress as Xt}from"viem";import{mainnet as Zt}from"viem/chains";var _=class{orderId;to;callbackData;value;constructor({orderId:e,to:t,callbackData:n,value:a}){this.orderId=e,this.to=t,this.callbackData=n,this.value=a}};d(_,"InterruptedSendTransactionStepError");var P=class extends _{signature;constructor({orderId:e,to:t,callbackData:n,value:a,signature:i}){super({orderId:e,to:t,callbackData:n,value:a}),this.signature=i}};d(P,"InterruptedSeaportSendTransactionStepError");var h=class extends _{};d(h,"InterruptedCryptoPunksSendTransactionStepError");var C=class extends _{};d(C,"InterruptedGenericSendTransactionStepError");import{adaptViemWallet as Ht}from"@reservoir0x/reservoir-sdk";import{decodeFunctionData as Kt,zeroAddress as Ut}from"viem";var re=d(s=>s==="opensea.io","isOpensea"),qt=d(s=>s==="cryptopunks.app","isCryptopunks"),ke=d(s=>s==="gondi.xyz","isNative"),se=d((s,e)=>({...Ht(s),transport:void 0,handleSendTransactionStep:async(a,i,r)=>{if(r.id!=="sale")return console.log(r),ce;let o=i.orderIds?.[0]??"",l=i.data.to,p=i.data.data,u=BigInt(i.data.value??0);if(re(e)){let F=Kt({abi:L,data:i.data.data})?.args?.[0],b=Array.isArray(F)?F[0].signature:typeof F=="object"?F.signature:Ut;throw new P({orderId:o,to:l,callbackData:p,value:u,signature:b})}else throw qt(e)?new h({orderId:o,to:l,callbackData:p,value:u}):new C({orderId:o,to:l,callbackData:p,value:u})}}),"adaptWalletToCaptureTxData");var Q=class{baseApiUrl;mainnetClient;wallet;Seaport;CryptoPunks;client;EXECUTION_INFO_ABI=[{name:"ExecutionInfo",type:"tuple",components:[{name:"module",type:"address"},{name:"data",type:"bytes"},{name:"value",type:"uint256"}]}];constructor({baseApiUrl:e="https://api.reservoir.tools",wallet:t,Seaport:n,CryptoPunks:a}){this.baseApiUrl=e,this.wallet=t,this.Seaport=n,this.CryptoPunks=a;let{reservoirApiKey:i,infuraApiKey:r}=me();this.client=Wt({chains:[{id:t.chain.id,name:t.chain.name,baseApiUrl:e,active:!0}],apiKey:i,source:"gondi.xyz"}),this.mainnetClient=$t({chain:Zt,transport:Gt(`https://mainnet.infura.io/v3/${r}`)})}async getAsk({orderId:e}){return fetch(`${this.baseApiUrl}/orders/asks/v5?ids=${e}&includeRawData=true`).then(t=>t.json()).then(({orders:t})=>{if(!t)throw new Error(`Order ${e} is not available anymore`);return t[0]})}async getBid({orderId:e}){return fetch(`${this.baseApiUrl}/orders/bids/v6?ids=${e}&includeRawData=true`).then(t=>t.json()).then(({orders:t})=>{if(!t)throw new Error(`Order ${e} is not available anymore`);return t[0]})}generateExpectedCurrencyPriceObject(e,t){return{[t]:{raw:e,currencyAddress:t,currencyDecimals:18}}}encodeExecutionData({module:e,data:t,value:n}){return Qt(this.EXECUTION_INFO_ABI,[{module:e,data:t,value:n}])}async generateMatchOrdersExecutionData({askOrBid:e,signature:t,side:n="ask"}){let a={parameters:{...e.rawData,totalOriginalConsiderationItems:BigInt(e.rawData.consideration.length)},signature:t},i=await this.Seaport.generateInverseOrder(a.parameters),r={parameters:i,signature:await this.Seaport.signOrder(i)},o=this.Seaport.generateFulfillmentsForOrderAndInverse(a.parameters),l=Ee({abi:L,functionName:"matchOrders",args:[[a,r],o]}),p=n==="ask"?a.parameters.consideration.reduce((u,c)=>u+(c.itemType===0?BigInt(c.endAmount):0n),0n):BigInt(e.price.netAmount.raw);return{callbackData:this.encodeExecutionData({module:this.Seaport.address,data:l,value:p}),value:p,isSeaportCall:!0}}async generateFulfillOrderExecutionData({askOrBid:e,signature:t,tokenId:n}){let a={parameters:{...e.rawData,totalOriginalConsiderationItems:BigInt(e.rawData.consideration.length)},numerator:1n,denominator:1n,signature:t,extraData:"0x"},i=a.parameters.consideration.findIndex(l=>l.itemType===4),r=Ee({abi:L,functionName:"fulfillAdvancedOrder",args:[a,i!==-1?[{orderIndex:0n,side:1,index:BigInt(i),identifier:n,criteriaProof:[]}]:[],g,Xt]}),o=BigInt(e.price.netAmount.raw);return{callbackData:this.encodeExecutionData({module:this.Seaport.address,data:r,value:o}),value:o,isSeaportCall:!0}}async buyTokens(e){let{ETH_ADDRESS:t}=A(),n=e.reduce((a,i)=>a+i.price,0n);return this.client?.actions.buyToken({items:e.map(a=>({token:`${a.collectionContractAddress}:${a.tokenId}`,quantity:1,exactOrderSource:a.orderSource})),expectedPrice:this.generateExpectedCurrencyPriceObject(n,t),wallet:this.wallet,onProgress:()=>null,precheck:!1,options:{excludeEOA:!0,skipBalanceCheck:!0}})}async getExecutionDataForBuyToken({collectionContractAddress:e,tokenId:t,price:n,exactOrderSource:a}){let i=se(this.wallet,a),{ETH_ADDRESS:r}=A();try{throw await this.client?.actions.buyToken({items:[{token:`${e}:${t}`,quantity:1,exactOrderSource:a}],expectedPrice:this.generateExpectedCurrencyPriceObject(n,r),wallet:i,onProgress:()=>null,precheck:!1,options:{excludeEOA:!0,skipBalanceCheck:!0}}),new Error("This should never happen since we will throw inside the wallet tx")}catch(o){if(o instanceof P){let{orderId:l,signature:p}=o,u=await this.getAsk({orderId:l});return this.generateMatchOrdersExecutionData({askOrBid:u,signature:p})}else if(o instanceof h){let{value:l}=o,p=await this.CryptoPunks.encodeBuyPunk(t);return{callbackData:this.encodeExecutionData({module:this.CryptoPunks.address,data:p,value:l}),value:l,isSeaportCall:!1}}else if(o instanceof C){let{to:l,callbackData:p,value:u}=o;return{callbackData:this.encodeExecutionData({module:l,data:p,value:u}),value:u,isSeaportCall:!1}}else throw new Error(`No available offer for price ${n}`)}}async getCallbackDataForSellToken({collectionContractAddress:e,tokenId:t,price:n,exactOrderSource:a}){let i=se(this.wallet,a),{WETH_ADDRESS:r}=A(),{LeverageAddress:o}=f(this.wallet.chain),p=await zt({abi:z,address:e,publicClient:this.mainnetClient}).read.ownerOf([t]);try{throw await this.client?.actions.acceptOffer({items:[{token:`${e}:${t}`,quantity:1,exactOrderSource:a}],expectedPrice:this.generateExpectedCurrencyPriceObject(n,r),wallet:i,onProgress:()=>null,precheck:!1,options:{excludeEOA:!0,taker:re(a)?p:o}}),new Error("This should never happen since we will throw inside the wallet tx")}catch(u){if(u instanceof P){let{orderId:c,signature:F}=u,b=await this.getBid({orderId:c});return this.generateFulfillOrderExecutionData({askOrBid:b,signature:F,tokenId:t})}else if(u instanceof C){let{orderId:c,to:F,callbackData:b}=u,I=await this.getBid({orderId:c});return{callbackData:this.encodeExecutionData({module:F,data:b,value:BigInt(I.price?.netAmount?.raw??0n)}),value:BigInt(I.price?.netAmount?.raw??0n),isSeaportCall:!1}}else throw new Error(`No available offer for price ${n}`)}}};d(Q,"Reservoir");var G=class{contracts;wallet;bcClient;api;reservoir;constructor({wallet:e,apiClient:t,reservoirBaseApiUrl:n}){this.wallet=e,this.bcClient=jt({chain:e.chain,transport:()=>Yt(e.transport)}),this.contracts=new q(this.bcClient,e),this.api=new $({wallet:e,apiClient:t}),this.reservoir=new Q({baseApiUrl:n,wallet:e,Seaport:this.contracts.Seaport,CryptoPunks:this.contracts.CryptoPunks})}async makeSingleNftOffer(e){return await this._makeSingleNftOffer(e)}async _makeSingleNftOffer(e,t){let n=t?this.contracts.Msl(t):this.contracts.MultiSourceLoanV5,a=n.address,i={...e,lenderAddress:this.wallet.account?.address,signerAddress:this.wallet.account?.address,borrowerAddress:e.borrowerAddress??S,requiresLiquidation:!!e.requiresLiquidation,contractAddress:a,offerValidators:[]},r=await this.api.generateSingleNftOfferHash({offerInput:i}),{offerHash:o,offerId:l,validators:p,lenderAddress:u,signerAddress:c,borrowerAddress:F}=r.offer,b=r.offer.nft.collection?.contractData?.contractAddress;if(b===void 0)throw new Error("Invalid nft");let I={...i,lender:u??i.lenderAddress,signer:c??i.signerAddress,borrower:F??i.borrowerAddress,nftCollateralTokenId:r.offer.nft.tokenId,nftCollateralAddress:b,validators:p,offerId:l},X=await n.signOffer({verifyingContract:i.contractAddress,structToSign:I}),Z={...i,offerValidators:p.map(B=>({arguments:B.arguments,validator:B.validator})),offerHash:o??g,offerId:l,signature:X};return await this.api.saveSingleNftOffer(Z)}async makeCollectionOffer(e){return await this._makeCollectionOffer(e)}async _makeCollectionOffer(e,t){let n=t?this.contracts.Msl(t):this.contracts.MultiSourceLoanV5,a=n.address,i={...e,lenderAddress:this.wallet.account?.address,signerAddress:this.wallet.account?.address,borrowerAddress:e.borrowerAddress??S,requiresLiquidation:!!e.requiresLiquidation,contractAddress:a,offerValidators:[{validator:S,arguments:Oe}]},r=await this.api.generateCollectionOfferHash({offerInput:i}),o=r.offer.collection.contractData?.contractAddress;if(o===void 0)throw new Error("Invalid collection");let{offerHash:l,offerId:p,validators:u,lenderAddress:c,signerAddress:F,borrowerAddress:b}=r.offer,I={...i,lender:c??i.lenderAddress,signer:F??i.signerAddress,borrower:b??i.borrowerAddress,nftCollateralTokenId:0n,nftCollateralAddress:o,validators:u,offerId:p},X=await n.signOffer({verifyingContract:i.contractAddress,structToSign:I}),Z={...i,offerValidators:u.map(B=>({arguments:B.arguments,validator:B.validator})),offerHash:l??g,offerId:p,signature:X};return await this.api.saveCollectionOffer(Z)}async makeSaleOffer({collectionContractAddress:e,tokenId:t,price:n,expirationTime:a}){let{parameters:{totalOriginalConsiderationItems:i,...r},signature:o}=await this.contracts.Seaport.generateOrderFromSaleOffer({collectionContractAddress:e,tokenId:t,price:n,expirationTime:a});return this.api.saveSignedSaleOffer({offer:{...r,signature:o}})}async cancelSaleOffer({saleOffer:e}){return this.contracts.Seaport.cancel({orderComponents:e})}async cancelOffer({id:e,contractAddress:t}){return this.contracts.Msl(t).cancelOffer({id:e})}async cancelAllOffers({minId:e,contractAddress:t}){return this.contracts.Msl(t).cancelAllOffers({minId:e})}async hideOffer({id:e,contractAddress:t}){return this.api.hideOffer({contract:t,id:e.toString()})}async unhideOffer({id:e,contractAddress:t}){return this.api.unhideOffer({contract:t,id:e.toString()})}async makeRefinanceOffer({renegotiation:e,contractAddress:t,skipSignature:n}){let a={lenderAddress:this.wallet.account?.address,signerAddress:this.wallet.account?.address,...e},i=await this.api.generateRenegotiationOfferHash({renegotiationInput:a}),{renegotiationId:r,offerHash:o,loanId:l,lenderAddress:p,signerAddress:u}=i.offer,c={...a,fee:a.feeAmount,lender:p??a.lenderAddress,signer:u??a.signerAddress??S,strictImprovement:!1,loanId:l,renegotiationId:r};if(n)return{...a,offerHash:o??g,signature:g,renegotiationId:r};let b=await this.contracts.Msl(t).signRenegotiationOffer({verifyingContract:t,structToSign:c}),I={...a,signature:b,offerHash:o??g,renegotiationId:r};return await this.api.saveRefinanceOffer(I)}async cancelRefinanceOffer({id:e,contractAddress:t}){return this.contracts.Msl(t).cancelRefinanceOffer({id:e})}async hideRenegotiationOffer({id:e,contractAddress:t}){return this.api.hideRenegotiationOffer({id:e.toString(),contractAddress:t})}async unhideRenegotiationOffer({id:e,contractAddress:t}){return this.api.unhideRenegotiationOffer({id:e.toString(),contractAddress:t})}async hideSaleOffer({id:e}){return this.api.hideSaleOffer({id:e})}async unhideSaleOffer({id:e}){return this.api.unhideSaleOffer({id:e})}async cancelAllRenegotiations({minId:e,contractAddress:t}){return this.contracts.Msl(t).cancelAllRenegotiations({minId:e})}async emitLoan({offer:e,...t}){let n=Y({offer:e,...t});return this.contracts.Msl(e.contractAddress).emitLoan(n)}async repayLoan({loan:e,loanId:t,nftReceiver:n}){return this.contracts.Msl(e.contractAddress).repayLoan({loan:e,nftReceiver:n,loanId:t})}async offers({limit:e=20,cursor:t,sortBy:n={field:"CREATED_DATE",order:"DESC"},filterBy:a={}}){let{status:i,nft:r,collection:o,lender:l,borrower:p,...u}=a;return await this.api.listOffers({first:e,after:t,sortBy:n,statuses:i,nfts:r?[r]:[],collections:o?[o]:[],lenderAddress:l,borrowerAddress:p,...u})}async loans({limit:e=20,cursor:t,...n}){return await this.api.listLoans({first:e,after:t,...n})}async list({nft:e}){return await this.api.listNft({nftId:e})}async unlist({nft:e}){return await this.api.unlistNft({nftId:e})}async listings({collections:e,user:t,marketPlaces:n=["GONDI"],limit:a=20,cursor:i}){return await this.api.listListings({collections:e,userFilter:t,marketplaceNames:n,after:i,first:a})}async nftId(e){let t;if(e.slug&&(t=await this.api.nftIdBySlugTokenId(e)),e.contractAddress&&(t=await this.api.nftIdByContractAddressAndTokenId(e)),!t?.nft)throw new Error(`invalid nft ${e}`);return Number(t.nft.id)}async collectionId(e){let t;if(e.slug){if(t=await this.api.collectionIdBySlug(e),!t?.collection)throw new Error(`invalid collection ${e}`);return Number(t.collection.id)}if(e.contractAddress){if(t=await this.api.collectionsIdByContractAddress(e),!t?.collections)throw new Error(`invalid collection ${e}`);return t.collections.map(n=>Number(n.id))}}async getRemainingLockupSeconds({loan:e}){return this.contracts.Msl(e.contractAddress).getRemainingLockupSeconds({loan:e})}async getBestNativeSaleOffer({contractAddress:e,tokenId:t}){let{WETH_ADDRESS:n}=A(),a=await this.nftId({contractAddress:e,tokenId:t}),{bids:i}=await this.api.listBestBidsForNft({nftId:a,currencyAddress:n});return i.find(o=>o.marketPlace===Se)??null}async refinanceFullLoan({offer:e,loan:t,loanId:n}){let a={...e,loanId:n,strictImprovement:e.strictImprovement??!1,lender:e.lenderAddress,signer:e.signerAddress??S,fee:e.feeAmount};return this.contracts.Msl(t.contractAddress).refinanceFullLoan({offer:a,loan:t,signature:e.signature})}async refinancePartialLoan({offer:e,loan:t,loanId:n}){let a={...e,loanId:n,strictImprovement:e.strictImprovement??!1,lender:e.lenderAddress,signer:e.signerAddress??S,fee:e.feeAmount};return this.contracts.Msl(t.contractAddress).refinancePartialLoan({offer:a,loan:t})}async extendLoan({loan:e,newDuration:t,loanId:n}){return this.contracts.Msl(e.contractAddress).extendLoan({loan:e,newDuration:t,loanId:n})}async delegateMulticall(e){let t=e[0].loan.contractAddress;return this.contracts.Msl(t).delegateMulticall(e)}async delegate({loan:e,loanId:t,to:n,enable:a,rights:i}){return this.contracts.Msl(e.contractAddress).delegate({loan:e,loanId:t,to:n,rights:i,enable:a})}async revokeDelegate({to:e,collection:t,tokenId:n,contract:a=this.contracts.MultiSourceLoanV5.address}){return this.contracts.Msl(a).revokeDelegate({to:e,collection:t,tokenId:n})}async revokeDelegationsAndEmitLoan({delegations:e,emit:t}){let n=Y(t);return this.contracts.Msl(t.offer.contractAddress).revokeDelegationsAndEmitLoan({delegations:e,emit:n})}async liquidateLoan({loan:e,loanId:t}){return this.contracts.Msl(e.contractAddress).liquidateLoan({loan:e,loanId:t})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a}){return this.contracts.All(a.loanAddress).placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a})}async settleAuction({loan:e,auction:t}){return this.contracts.All(t.loanAddress).settleAuction({loan:e,auction:t})}async buy(e){return this.reservoir.buyTokens(e)}async leverageBuy({leverageBuyData:e}){let t=await Promise.all(e.map(i=>this.reservoir.getExecutionDataForBuyToken({collectionContractAddress:i.nft.collectionContractAddress,tokenId:i.nft.tokenId,price:i.nft.price,exactOrderSource:i.nft.orderSource}))),n=t.reduce((i,{value:r},o)=>i+r-e[o].amount+e[o].offer.fee,0n),a=e.map((i,r)=>({...i,callbackData:t[r].callbackData}));return this.contracts.Leverage.buy({leverageBuyData:a,ethToSend:n<0n?0n:n})}async leverageSell({loan:e,loanId:t,price:n,orderSource:a}){let i=null;if(ke(a)){let o=await this.getBestNativeSaleOffer({contractAddress:e.nftCollateralAddress,tokenId:e.nftCollateralTokenId});if(!o||o.netAmount<n)throw new Error(`No native bid for price ${n}`);i=await this.reservoir.generateFulfillOrderExecutionData({askOrBid:{rawData:await this.contracts.Seaport.recoverOrderFromNativeBid({nativeBid:o,collectionContractAddress:e.nftCollateralAddress,tokenId:e.nftCollateralTokenId}),price:{netAmount:{raw:String(n)}}},signature:o.signature,tokenId:e.nftCollateralTokenId})}else i=await this.reservoir.getCallbackDataForSellToken({collectionContractAddress:e.nftCollateralAddress,tokenId:e.nftCollateralTokenId,price:n,exactOrderSource:a});let r=i.isSeaportCall;return this.contracts.Leverage.sell({loan:e,callbackData:i.callbackData,shouldDelegate:r,loanId:t})}async getOwner({nftAddress:e,tokenId:t}){return this.contracts.ERC721(e).read.ownerOf([t])}async isApprovedNFTForAll({nftAddress:e,to:t=this.contracts.MultiSourceLoanV5.address}){return this.contracts.ERC721(e).read.isApprovedForAll([this.wallet.account?.address,t])}async approveNFTForAll({nftAddress:e,to:t=this.contracts.MultiSourceLoanV5.address}){let n=this.contracts.ERC721(e),a=await n.write.setApprovalForAll([t,!0]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await n.createEventFilter.ApprovalForAll({}),o=y(i,r);if(o.length===0)throw new Error("ERC721 approval for all not set");return{...o[0].args,...i}}}}async isApprovedToken({tokenAddress:e,amount:t,to:n=this.contracts.MultiSourceLoanV5.address}){return await this.contracts.ERC20(e).read.allowance([this.wallet.account?.address,n])>=t}async approveToken({tokenAddress:e,amount:t=Ne,to:n=this.contracts.MultiSourceLoanV5.address}){let a=this.contracts.ERC20(e),i=await a.write.approve([n,t]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),o=await a.createEventFilter.Approval({}),l=y(r,o);if(l.length===0)throw new Error("ERC20 approval not set");return{...l[0].args,...r}}}}async createUserVault({nfts:e,userVaultAddress:t=this.contracts.UserVaultV5.address}){return this.contracts.UserVault(t).createVault(e)}async depositUserVaultERC721s({userVaultAddress:e=this.contracts.UserVaultV5.address,...t}){return this.contracts.UserVault(e).depositERC721s(t)}async burnUserVaultAndWithdraw({userVaultAddress:e=this.contracts.UserVaultV5.address,...t}){return this.contracts.UserVault(e).burnAndWithdraw(t)}};d(G,"Gondi");export{G as Gondi,he as LoanStatusType,te as MarketplaceEnum,we as OfferStatus,ne as OffersSortField,ae as Ordering};
|
|
2086
2086
|
//# sourceMappingURL=index.mjs.map
|