@opensea/seaport-js 1.0.1-beta.0 → 1.0.3
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/LICENSE +7 -0
- package/README.md +141 -5
- package/lib/abi/ERC1155.d.ts +29 -29
- package/lib/abi/ERC1155.js +319 -0
- package/lib/abi/ERC1155.js.map +1 -0
- package/lib/abi/ERC20.d.ts +29 -29
- package/lib/abi/ERC20.js +317 -0
- package/lib/abi/ERC20.js.map +1 -0
- package/lib/abi/ERC721.d.ts +29 -29
- package/lib/abi/ERC721.js +337 -0
- package/lib/abi/ERC721.js.map +1 -0
- package/lib/abi/Seaport.d.ts +112 -112
- package/lib/abi/Seaport.js +2585 -0
- package/lib/abi/Seaport.js.map +1 -0
- package/lib/constants.d.ts +53 -49
- package/lib/constants.js +78 -0
- package/lib/constants.js.map +1 -0
- package/lib/index.d.ts +2 -2
- package/lib/index.js +6 -2
- package/lib/index.js.map +1 -1
- package/lib/seaport.d.ts +184 -181
- package/lib/seaport.js +732 -0
- package/lib/seaport.js.map +1 -0
- package/lib/typechain/ERC1155.d.ts +189 -0
- package/lib/typechain/ERC1155.js +3 -0
- package/lib/typechain/ERC1155.js.map +1 -0
- package/lib/typechain/ERC20.d.ts +209 -0
- package/lib/typechain/ERC20.js +3 -0
- package/lib/typechain/ERC20.js.map +1 -0
- package/lib/typechain/ERC721.d.ts +220 -0
- package/lib/typechain/ERC721.js +3 -0
- package/lib/typechain/ERC721.js.map +1 -0
- package/lib/typechain/Seaport.d.ts +686 -0
- package/lib/typechain/Seaport.js +3 -0
- package/lib/typechain/Seaport.js.map +1 -0
- package/lib/typechain/common.d.ts +21 -0
- package/lib/typechain/common.js +3 -0
- package/lib/typechain/common.js.map +1 -0
- package/lib/types.d.ts +221 -207
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/lib/utils/approval.d.ts +9 -9
- package/lib/utils/approval.js +108 -0
- package/lib/utils/approval.js.map +1 -0
- package/lib/utils/balance.d.ts +4 -4
- package/lib/utils/balance.js +86 -0
- package/lib/utils/balance.js.map +1 -0
- package/lib/utils/balanceAndApprovalCheck.d.ts +108 -108
- package/lib/utils/balanceAndApprovalCheck.js +322 -0
- package/lib/utils/balanceAndApprovalCheck.js.map +1 -0
- package/lib/utils/criteria.d.ts +14 -13
- package/lib/utils/criteria.js +91 -0
- package/lib/utils/criteria.js.map +1 -0
- package/lib/utils/fulfill.d.ts +84 -84
- package/lib/utils/fulfill.js +573 -0
- package/lib/utils/fulfill.js.map +1 -0
- package/lib/utils/gcd.d.ts +3 -3
- package/lib/utils/gcd.js +25 -0
- package/lib/utils/gcd.js.map +1 -0
- package/lib/utils/item.d.ts +29 -30
- package/lib/utils/item.js +136 -0
- package/lib/utils/item.js.map +1 -0
- package/lib/utils/match.d.ts +49 -49
- package/lib/utils/match.js +56 -0
- package/lib/utils/match.js.map +1 -0
- package/lib/utils/merkletree.d.ts +11 -11
- package/lib/utils/merkletree.js +32 -0
- package/lib/utils/merkletree.js.map +1 -0
- package/lib/utils/order.d.ts +37 -37
- package/lib/utils/order.js +224 -0
- package/lib/utils/order.js.map +1 -0
- package/lib/utils/usecase.d.ts +4 -4
- package/lib/utils/usecase.js +158 -0
- package/lib/utils/usecase.js.map +1 -0
- package/package.json +43 -43
- package/lib/index.esm.mjs +0 -2
- package/lib/index.esm.mjs.map +0 -1
- package/lib/index.modern.mjs +0 -2
- package/lib/index.modern.mjs.map +0 -1
- package/lib/index.umd.js +0 -2
- package/lib/index.umd.js.map +0 -1
package/lib/index.modern.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{providers as e}from"@0xsequence/multicall";import{BigNumber as t,Contract as n,ethers as r}from"ethers";import{keccak256 as a,formatBytes32String as i,_TypedDataEncoder as s}from"ethers/lib/utils";import p from"merkletreejs";function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}const d=[{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:"ConsiderationCriteriaResolverOutOfRange",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:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"EtherTransferGenericFailure",type:"error"},{inputs:[],name:"InexactFraction",type:"error"},{inputs:[],name:"InsufficientEtherSupplied",type:"error"},{inputs:[],name:"InvalidBasicOrderParameterEncoding",type:"error"},{inputs:[{internalType:"address",name:"conduit",type:"address"}],name:"InvalidCallToConduit",type:"error"},{inputs:[],name:"InvalidCanceller",type:"error"},{inputs:[{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"address",name:"conduit",type:"address"}],name:"InvalidConduit",type:"error"},{inputs:[],name:"InvalidERC721TransferAmount",type:"error"},{inputs:[],name:"InvalidFulfillmentComponentData",type:"error"},{inputs:[{internalType:"uint256",name:"value",type:"uint256"}],name:"InvalidMsgValue",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:[],name:"InvalidTime",type:"error"},{inputs:[],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"}],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:[],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:[],name:"UnresolvedConsiderationCriteria",type:"error"},{inputs:[],name:"UnresolvedOfferCriteria",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"},{indexed:!0,internalType:"address",name:"offerer",type:"address"},{indexed:!0,internalType:"address",name:"zone",type:"address"}],name:"OrderValidated",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:"advancedOrder",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:"criteriaResolvers",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:"advancedOrders",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:"criteriaResolvers",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"offerFulfillments",type:"tuple[][]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"considerationFulfillments",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:"availableOrders",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:"executions",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:"orders",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"offerFulfillments",type:"tuple[][]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"considerationFulfillments",type:"tuple[][]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"maximumFulfilled",type:"uint256"}],name:"fulfillAvailableOrders",outputs:[{internalType:"bool[]",name:"availableOrders",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:"executions",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:[{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:"order",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:"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:"order",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:"advancedOrders",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:"criteriaResolvers",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:"fulfillments",type:"tuple[]"}],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:"executions",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:"orders",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:"fulfillments",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:"executions",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"contractName",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:"orders",type:"tuple[]"}],name:"validate",outputs:[{internalType:"bool",name:"validated",type:"bool"}],stateMutability:"nonpayable",type:"function"}],y={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"}]};var l,u,m,f;!function(e){e[e.FULL_OPEN=0]="FULL_OPEN",e[e.PARTIAL_OPEN=1]="PARTIAL_OPEN",e[e.FULL_RESTRICTED=2]="FULL_RESTRICTED",e[e.PARTIAL_RESTRICTED=3]="PARTIAL_RESTRICTED"}(l||(l={})),function(e){e[e.NATIVE=0]="NATIVE",e[e.ERC20=1]="ERC20",e[e.ERC721=2]="ERC721",e[e.ERC1155=3]="ERC1155",e[e.ERC721_WITH_CRITERIA=4]="ERC721_WITH_CRITERIA",e[e.ERC1155_WITH_CRITERIA=5]="ERC1155_WITH_CRITERIA"}(u||(u={})),function(e){e[e.OFFER=0]="OFFER",e[e.CONSIDERATION=1]="CONSIDERATION"}(m||(m={})),function(e){e[e.ETH_TO_ERC721=0]="ETH_TO_ERC721",e[e.ETH_TO_ERC1155=1]="ETH_TO_ERC1155",e[e.ERC20_TO_ERC721=2]="ERC20_TO_ERC721",e[e.ERC20_TO_ERC1155=3]="ERC20_TO_ERC1155",e[e.ERC721_TO_ERC20=4]="ERC721_TO_ERC20",e[e.ERC1155_TO_ERC20=5]="ERC1155_TO_ERC20"}(f||(f={}));const c=t.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),T="0x0000000000000000000000000000000000000000000000000000000000000000",b={},A=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],C=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!0,internalType:"uint256",name:"id",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!1,internalType:"bool",name:"approved",type:"bool"}],name:"ApprovalForAll",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!0,internalType:"uint256",name:"id",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"id",type:"uint256"}],name:"approve",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"getApproved",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"id",type:"uint256"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"id",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"bool",name:"approved",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"}],name:"tokenURI",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"id",type:"uint256"}],name:"transferFrom",outputs:[],stateMutability:"nonpayable",type:"function"}],O=(e,n)=>{const r=t.from(e),a=t.from(n);return r.eq(0)?a:O(a.mod(e),r)},v=({itemType:e})=>[u.NATIVE,u.ERC20].includes(e),g=e=>e===u.ERC20,I=e=>[u.ERC721,u.ERC721_WITH_CRITERIA].includes(e),h=e=>[u.ERC1155,u.ERC1155_WITH_CRITERIA].includes(e),E=e=>[u.ERC721_WITH_CRITERIA,u.ERC1155_WITH_CRITERIA].includes(e),R=({startAmount:e,endAmount:n,timeBasedItemParams:r})=>{const a=t.from(e),i=t.from(n);if(!r)return a.gt(i)?a:i;const{isConsiderationItem:s,currentBlockTimestamp:p,ascendingAmountTimestampBuffer:o,startTime:d,endTime:y}=r,l=t.from(y).sub(d),u=i.gt(e),m=t.from(u?p+o:p);if(m.lt(d))return a;const f=(m.gt(y)?t.from(y):m).sub(d),c=l.sub(f);return a.mul(c).add(i.mul(f)).add(s?l.sub(1):0).div(l)},x=({items:e,criterias:n,timeBasedItemParams:r})=>{const a=k(e,n);return e.reduce((e,n)=>{var i,s,p,d;const y=null!=(i=null==(s=a.get(n))?void 0:s.identifier)?i:n.identifierOrCriteria;return o({},e,{[n.token]:o({},e[n.token],{[y]:(null!=(p=null==(d=e[n.token])?void 0:d[y])?p:t.from(0)).add(R({startAmount:n.startAmount,endAmount:n.endAmount,timeBasedItemParams:r}))})})},{})},w=({parameters:{offer:e,consideration:n}})=>(e=>{let n=t.from(e[0]);for(let t=1;t<e.length;t++)if(n=O(e[t],n),n.eq(1))return n;return n})([...e,...n].flatMap(({startAmount:e,endAmount:t})=>[e,t])),k=(e,t)=>{const n=[...t];return e.reduce((e,t)=>(E(t.itemType)&&e.set(t,n.shift()),e),new Map)},S=async e=>{for(let t=0;t<e.length-1;t++){const n=e[t];"approval"===n.type&&await n.transactionMethods.transact()}const t=e[e.length-1];return"create"===t.type?await t.createOrder():await t.transactionMethods.transact()},B=(e,t,n)=>{const r=n[n.length-1];let a;return(e=>{const t=["gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","nonce","type","accessList","customData","ccipReadEnabled","value","blockTag","CallOverrides"];return void 0===e||Object.keys(e).every(e=>t.includes(e))})(r)&&(a=r,n.pop()),{callStatic:r=>{const i=o({},a,r);return e.callStatic[t](...n,i)},estimateGas:r=>{const i=o({},a,r);return e.estimateGas[t](...n,i)},transact:r=>{const i=o({},a,r);return e[t](...n,i)},buildTransaction:r=>{const i=o({},a,r);return e.populateTransaction[t](...n,i)}}};function F(e,t){return Promise.all(e.filter((t,n)=>n===e.length-1||e[n+1].token!==t.token).map(async({token:e,operator:r,itemType:a,identifierOrCriteria:i})=>{if(I(a)||h(a)){const s=new n(e,C,t);return{type:"approval",token:e,identifierOrCriteria:i,itemType:a,operator:r,transactionMethods:B(s.connect(t),"setApprovalForAll",[r,!0])}}{const s=new n(e,A,t);return{type:"approval",token:e,identifierOrCriteria:i,itemType:a,transactionMethods:B(s.connect(t),"approve",[r,c]),operator:r}}}))}const P=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!1,internalType:"bool",name:"approved",type:"bool"}],name:"ApprovalForAll",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256[]",name:"ids",type:"uint256[]"},{indexed:!1,internalType:"uint256[]",name:"amounts",type:"uint256[]"}],name:"TransferBatch",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"id",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferSingle",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"value",type:"string"},{indexed:!0,internalType:"uint256",name:"id",type:"uint256"}],name:"URI",type:"event"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"owners",type:"address[]"},{internalType:"uint256[]",name:"ids",type:"uint256[]"}],name:"balanceOfBatch",outputs:[{internalType:"uint256[]",name:"balances",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256[]",name:"ids",type:"uint256[]"},{internalType:"uint256[]",name:"amounts",type:"uint256[]"},{internalType:"bytes",name:"data",type:"bytes"}],name:"safeBatchTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"id",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"bool",name:"approved",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"}],name:"uri",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"}],_=async(e,r,a,i)=>{if(I(r.itemType)){const s=new n(r.token,C,a);return r.itemType===u.ERC721_WITH_CRITERIA?i?s.ownerOf(i.identifier).then(n=>t.from(Number(n.toLowerCase()===e.toLowerCase()))):s.balanceOf(e):s.ownerOf(r.identifierOrCriteria).then(n=>t.from(Number(n.toLowerCase()===e.toLowerCase())))}if(h(r.itemType)){const s=new n(r.token,P,a);if(r.itemType===u.ERC1155_WITH_CRITERIA){if(!i){const e=t.from(r.startAmount),n=t.from(r.endAmount);return e.gt(n)?e:n}return s.balanceOf(e,i.identifier)}return s.balanceOf(e,r.identifierOrCriteria)}return g(r.itemType)?new n(r.token,A,a).balanceOf(e):a.getBalance(e)},M=(e,t,n)=>{const r=e.find(({token:e,identifierOrCriteria:r})=>t.toLowerCase()===e.toLowerCase()&&r.toLowerCase()===n.toLowerCase());if(!r)throw new Error("Balances and approvals didn't contain all tokens and identifiers");return r},H=async({owner:e,items:r,criterias:a,operator:i,multicallProvider:s})=>{const p=k(r,a);return Promise.all(r.map(async r=>{var a,o;let d=Promise.resolve(t.from(0));return d=I(r.itemType)||h(r.itemType)||g(r.itemType)?(async(e,r,a,i)=>I(r.itemType)||h(r.itemType)?new n(r.token,C,i).isApprovedForAll(e,a).then(e=>e?c:t.from(0)):r.itemType===u.ERC20?new n(r.token,A,i).allowance(e,a):c)(e,r,i,s):Promise.resolve(c),{token:r.token,identifierOrCriteria:null!=(a=null==(o=p.get(r))?void 0:o.identifier)?a:r.identifierOrCriteria,balance:await _(e,r,s,p.get(r)),approvedAmount:await d,itemType:r.itemType}}))},K=({balancesAndApprovals:e,tokenAndIdentifierAmounts:t,operator:n})=>{const r=[...Object.entries(t).map(([e,t])=>Object.entries(t).map(([t,n])=>[e,t,n]))].flat(),a=t=>r.filter(([n,r,a])=>M(e,n,r)[t].lt(a)).map(([n,r,a])=>{const i=M(e,n,r);return{token:n,identifierOrCriteria:r,requiredAmount:a,amountHave:i[t],itemType:i.itemType}}),[i,s]=[a("balance"),a("approvedAmount").map(e=>({token:e.token,identifierOrCriteria:e.identifierOrCriteria,approvedAmount:e.amountHave,requiredApprovedAmount:e.requiredAmount,itemType:e.itemType,operator:n}))];return{insufficientBalances:i,insufficientApprovals:s}},z=({offer:e,criterias:t,balancesAndApprovals:n,timeBasedItemParams:r,throwOnInsufficientBalances:a=!0,throwOnInsufficientApprovals:i,operator:s})=>{const{insufficientBalances:p,insufficientApprovals:d}=K({balancesAndApprovals:n,tokenAndIdentifierAmounts:x({items:e,criterias:t,timeBasedItemParams:r?o({},r,{isConsiderationItem:!1}):void 0}),operator:s});if(a&&p.length>0)throw new Error("The offerer does not have the amount needed to create or fulfill.");if(i&&d.length>0)throw new Error("The offerer does not have the sufficient approvals.");return d},N=({offer:e,consideration:t,offerCriteria:n,considerationCriteria:r,offererBalancesAndApprovals:a,fulfillerBalancesAndApprovals:i,timeBasedItemParams:s,offererOperator:p,fulfillerOperator:d})=>{z({offer:e,criterias:n,balancesAndApprovals:a,timeBasedItemParams:s,throwOnInsufficientApprovals:!0,operator:p});const y=D({items:e,criterias:n,balancesAndApprovals:i,timeBasedItemParams:s}),{insufficientBalances:l,insufficientApprovals:u}=K({balancesAndApprovals:y,tokenAndIdentifierAmounts:x({items:t,criterias:r,timeBasedItemParams:o({},s,{isConsiderationItem:!0})}),operator:d});if(l.length>0)throw new Error("The fulfiller does not have the balances needed to fulfill.");return u},D=({items:e,criterias:t,timeBasedItemParams:n,balancesAndApprovals:r})=>{const a=x({items:e,criterias:t,timeBasedItemParams:o({},n,{isConsiderationItem:!1})}),i=r.map(e=>o({},e));return Object.entries(a).forEach(([e,t])=>Object.entries(t).forEach(([t,n])=>{const r=M(i,e,t),a=i.indexOf(r);i[a].balance=i[a].balance.add(n)})),i},L=({orders:e,offerCriterias:t=[[]],considerationCriterias:n=[[]]})=>{const r=e.flatMap((e,t)=>e.parameters.offer.map((e,n)=>({orderIndex:t,item:e,index:n,side:m.OFFER})).filter(({item:e})=>E(e.itemType))),a=e.flatMap((e,t)=>e.parameters.consideration.map((e,n)=>({orderIndex:t,item:e,index:n,side:m.CONSIDERATION})).filter(({item:e})=>E(e.itemType))),i=(e,t)=>e.map(({orderIndex:e,item:n,index:r,side:a},i)=>{const s=t[e][i];return{orderIndex:e,index:r,side:a,identifier:s.identifier,criteriaProof:"0"===(n.identifierOrCriteria||"0")?[]:s.proof}});return[...i(r,t),...i(a,n)]},j=e=>a(Buffer.from(t.from(e).toHexString().slice(2).padStart(64,"0"),"hex"));class V{constructor(e){this.tree=void 0,this.tree=new p(e.map(j),a,{sort:!0})}getProof(e){return this.tree.getHexProof(j(e))}getRoot(){return this.tree.getRoot().toString("hex")?this.tree.getHexRoot():"0"}}const Z=(e,n)=>t.from(e).mul(t.from(n)).div(1e4),q=(e,n)=>{if(!n)return e;const r=n.reduce((e,t)=>e+t.basisPoints,0);return e.map(e=>o({},e,{startAmount:v(e)?t.from(e.startAmount).sub(Z(e.startAmount,r)).toString():e.startAmount,endAmount:v(e)?t.from(e.endAmount).sub(Z(e.endAmount,r)).toString():e.endAmount}))},U=e=>{var t,n;if("itemType"in e){if("identifiers"in e){var a,i,s;const t=new V(e.identifiers);return{itemType:e.itemType===u.ERC721?u.ERC721_WITH_CRITERIA:u.ERC1155_WITH_CRITERIA,token:e.token,identifierOrCriteria:t.getRoot(),startAmount:null!=(a=e.amount)?a:"1",endAmount:null!=(i=null!=(s=e.endAmount)?s:e.amount)?i:"1"}}var p,o;return"amount"in e||"endAmount"in e?{itemType:e.itemType,token:e.token,identifierOrCriteria:e.identifier,startAmount:e.amount,endAmount:null!=(p=null!=(o=e.endAmount)?o:e.amount)?p:"1"}:{itemType:e.itemType,token:e.token,identifierOrCriteria:e.identifier,startAmount:"1",endAmount:"1"}}return{itemType:e.token&&e.token!==r.constants.AddressZero?u.ERC20:u.NATIVE,token:null!=(t=e.token)?t:r.constants.AddressZero,identifierOrCriteria:"0",startAmount:e.amount,endAmount:null!=(n=e.endAmount)?n:e.amount}},W=({offer:e,consideration:t})=>{const n=[...e,...t].filter(v);return n.every(({itemType:e,token:t})=>e===n[0].itemType&&t.toLowerCase()===n[0].token.toLowerCase())},$=e=>(t.from(0),t.from(0),e.map(({startAmount:e,endAmount:t})=>({startAmount:e,endAmount:t})).reduce(({startAmount:e,endAmount:t},{startAmount:n,endAmount:r})=>({startAmount:e.add(n),endAmount:t.add(r)}),{startAmount:t.from(0),endAmount:t.from(0)})),G=(e,{totalFilled:t,totalSize:n})=>{if(t.eq(0)||n.eq(0))return e;const r=n.sub(t).mul(1e4).div(n);return{parameters:o({},e.parameters,{offer:e.parameters.offer.map(e=>o({},e,{startAmount:Z(e.startAmount,r).toString(),endAmount:Z(e.endAmount,r).toString()})),consideration:e.parameters.consideration.map(e=>o({},e,{startAmount:Z(e.startAmount,r).toString(),endAmount:Z(e.endAmount,r).toString()}))}),signature:e.signature}},Y=(e,{unitsToFill:n,totalFilled:r,totalSize:a})=>{const i=t.from(n);if(i.lte(0))throw new Error("Units to fill must be greater than 1");const s=w(e);a.eq(0)&&(a=s);const p=a.sub(r).mul(1e4).div(a),d=i.mul(1e4).div(s),y=p.gt(d)?d:p;return{parameters:o({},e.parameters,{offer:e.parameters.offer.map(e=>o({},e,{startAmount:Z(e.startAmount,y).toString(),endAmount:Z(e.endAmount,y).toString()})),consideration:e.parameters.consideration.map(e=>o({},e,{startAmount:Z(e.startAmount,y).toString(),endAmount:Z(e.endAmount,y).toString()}))}),signature:e.signature}},J=()=>`0x${Buffer.from(r.utils.randomBytes(16)).toString("hex")}`,Q={[u.ERC20]:{[u.ERC721]:f.ERC721_TO_ERC20,[u.ERC1155]:f.ERC1155_TO_ERC20},[u.ERC721]:{[u.NATIVE]:f.ETH_TO_ERC721,[u.ERC20]:f.ERC20_TO_ERC721},[u.ERC1155]:{[u.NATIVE]:f.ETH_TO_ERC1155,[u.ERC20]:f.ERC20_TO_ERC1155}};function X(e,t){const{isValidated:n,isCancelled:r,totalFilled:a,totalSize:i}=t;if(i.gt(0)&&a.div(i).eq(1))throw new Error("The order you are trying to fulfill is already filled");if(r)throw new Error("The order you are trying to fulfill is cancelled");return n?{parameters:o({},e.parameters),signature:"0x"}:e}const ee=(e,n)=>{const r=w(e),a=t.from(n),i=O(a,r);return{numerator:n?a.div(i):t.from(1),denominator:n?r.div(i):t.from(1)}};class te{constructor(t,{overrides:a,ascendingAmountFulfillmentBuffer:i=300,balanceAndApprovalChecksOnOrderCreation:s=!0,conduitKeyToConduit:p}={}){var y,l;this.contract=void 0,this.provider=void 0,this.multicallProvider=void 0,this.config=void 0,this.defaultConduitKey=void 0,this.getOrderHash=e=>{const t="OfferItem(uint8 itemType,address token,uint256 identifierOrCriteria,uint256 startAmount,uint256 endAmount)",n="ConsiderationItem(uint8 itemType,address token,uint256 identifierOrCriteria,uint256 startAmount,uint256 endAmount,address recipient)",a=`OrderComponents(address offerer,address zone,OfferItem[] offer,ConsiderationItem[] consideration,uint8 orderType,uint256 startTime,uint256 endTime,bytes32 zoneHash,uint256 salt,bytes32 conduitKey,uint256 counter)${n}${t}`,i=r.utils.keccak256(r.utils.toUtf8Bytes(t)),s=r.utils.keccak256(r.utils.toUtf8Bytes(n)),p=r.utils.keccak256(r.utils.toUtf8Bytes(a)),o=r.utils.keccak256("0x"+e.offer.map(e=>r.utils.keccak256("0x"+[i.slice(2),e.itemType.toString().padStart(64,"0"),e.token.slice(2).padStart(64,"0"),r.BigNumber.from(e.identifierOrCriteria).toHexString().slice(2).padStart(64,"0"),r.BigNumber.from(e.startAmount).toHexString().slice(2).padStart(64,"0"),r.BigNumber.from(e.endAmount).toHexString().slice(2).padStart(64,"0")].join("")).slice(2)).join("")),d=r.utils.keccak256("0x"+e.consideration.map(e=>r.utils.keccak256("0x"+[s.slice(2),e.itemType.toString().padStart(64,"0"),e.token.slice(2).padStart(64,"0"),r.BigNumber.from(e.identifierOrCriteria).toHexString().slice(2).padStart(64,"0"),r.BigNumber.from(e.startAmount).toHexString().slice(2).padStart(64,"0"),r.BigNumber.from(e.endAmount).toHexString().slice(2).padStart(64,"0"),e.recipient.slice(2).padStart(64,"0")].join("")).slice(2)).join(""));return r.utils.keccak256("0x"+[p.slice(2),e.offerer.slice(2).padStart(64,"0"),e.zone.slice(2).padStart(64,"0"),o.slice(2),d.slice(2),e.orderType.toString().padStart(64,"0"),r.BigNumber.from(e.startTime).toHexString().slice(2).padStart(64,"0"),r.BigNumber.from(e.endTime).toHexString().slice(2).padStart(64,"0"),e.zoneHash.slice(2),e.salt.slice(2).padStart(64,"0"),e.conduitKey.slice(2).padStart(64,"0"),r.BigNumber.from(e.counter).toHexString().slice(2).padStart(64,"0")].join(""))},this.provider=t,this.multicallProvider=new e.MulticallProvider(t),this.contract=new n(null!=(y=null==a?void 0:a.contractAddress)?y:"0x00000000006c3852cbef3e08e8df289169ede581",d,this.multicallProvider),this.config={ascendingAmountFulfillmentBuffer:i,balanceAndApprovalChecksOnOrderCreation:s,conduitKeyToConduit:o({},b,{[T]:this.contract.address},p)},this.defaultConduitKey=null!=(l=null==a?void 0:a.defaultConduitKey)?l:T}_getOrderTypeFromOrderOptions({allowPartialFills:e,restrictedByZone:t}){return e?t?l.PARTIAL_RESTRICTED:l.PARTIAL_OPEN:t?l.FULL_RESTRICTED:l.FULL_OPEN}async createOrder({conduitKey:e=this.defaultConduitKey,zone:t=r.constants.AddressZero,startTime:n=Math.floor(Date.now()/1e3).toString(),endTime:a=c.toString(),offer:s,consideration:p,counter:d,allowPartialFills:y,restrictedByZone:l,fees:m,salt:f=J()},T){var b,A=this;const C=await this.provider.getSigner(T),O=await C.getAddress(),g=s.map(U),I=[...p.map(e=>{var t;return o({},U(e),{recipient:null!=(t=e.recipient)?t:O})})];if(!W({offer:g,consideration:I}))throw new Error("All currency tokens in the order must be the same token");const h=[...g,...I].filter(v),E=$(h),R=this.config.conduitKeyToConduit[e],[x,w]=await Promise.all([null!=d?d:this.getCounter(O),H({owner:O,items:g,criterias:[],multicallProvider:this.multicallProvider,operator:R})]),k=this._getOrderTypeFromOrderOptions({allowPartialFills:y,restrictedByZone:l}),B=[...q(I,m),...h.length&&null!=(b=null==m?void 0:m.map(e=>(({fee:e,token:t,baseAmount:n,baseEndAmount:a=n})=>({itemType:t===r.constants.AddressZero?u.NATIVE:u.ERC20,token:t,identifierOrCriteria:"0",startAmount:Z(n,e.basisPoints).toString(),endAmount:Z(a,e.basisPoints).toString(),recipient:e.recipient}))({fee:e,token:h[0].token,baseAmount:E.startAmount,baseEndAmount:E.endAmount})))?b:[]],P={offerer:O,zone:t,zoneHash:i(x.toString()),startTime:n,endTime:a,orderType:k,offer:g,consideration:B,totalOriginalConsiderationItems:B.length,salt:f,conduitKey:e},_=this.config.balanceAndApprovalChecksOnOrderCreation,M=_?z({offer:g,criterias:[],balancesAndApprovals:w,throwOnInsufficientBalances:_,operator:R}):[],K=[..._?await F(M,C):[],{type:"create",getMessageToSign:()=>this._getMessageToSign(P,x),createOrder:async function(){const e=await A.signOrder(P,x,O);return{parameters:o({},P,{counter:x}),signature:e}}}];return{actions:K,executeAllActions:()=>S(K)}}async _getDomainData(){const{chainId:e}=await this.provider.getNetwork();return{name:"Seaport",version:"1.1",chainId:e,verifyingContract:this.contract.address}}async _getMessageToSign(e,t){const n=await this._getDomainData(),r=o({},e,{counter:t});return JSON.stringify(s.getPayload(n,y,r))}async signOrder(e,t,n){const a=this.provider.getSigner(n),i=await this._getDomainData(),s=o({},e,{counter:t}),p=await a._signTypedData(i,y,s);return r.utils.splitSignature(p).compact}cancelOrders(e,t){const n=this.provider.getSigner(t);return B(this.contract.connect(n),"cancel",[e])}bulkCancelOrders(e){const t=this.provider.getSigner(e);return B(this.contract.connect(t),"incrementCounter",[])}validate(e,t){const n=this.provider.getSigner(t);return B(this.contract.connect(n),"validate",[e])}getOrderStatus(e){return this.contract.getOrderStatus(e)}getCounter(e){return this.contract.getCounter(e).then(e=>e.toNumber())}async fulfillOrder({order:e,unitsToFill:n,offerCriteria:a=[],considerationCriteria:i=[],tips:s=[],extraData:p="0x",accountAddress:d,conduitKey:y=this.defaultConduitKey,recipientAddress:l=r.constants.AddressZero}){const{parameters:m}=e,{offerer:f,offer:c,consideration:b}=m,A=await this.provider.getSigner(d),C=await A.getAddress(),O=this.config.conduitKeyToConduit[m.conduitKey],g=this.config.conduitKeyToConduit[y],[I,h,R,k]=await Promise.all([H({owner:f,items:c,criterias:a,multicallProvider:this.multicallProvider,operator:O}),H({owner:C,items:[...c,...b],criterias:[...a,...i],multicallProvider:this.multicallProvider,operator:g}),this.multicallProvider.getBlock("latest"),this.getOrderStatus(this.getOrderHash(m))]),P=R.timestamp,{totalFilled:_,totalSize:M}=k,D=X(e,k),j={startTime:D.parameters.startTime,endTime:D.parameters.endTime,currentBlockTimestamp:P,ascendingAmountTimestampBuffer:this.config.ascendingAmountFulfillmentBuffer},V=s.map(e=>o({},U(e),{recipient:e.recipient}));return!n&&l===r.constants.AddressZero&&(({offer:e,consideration:n,offerer:a},i)=>{if(!i.eq(0))return!1;if(e.length>1||0===n.length)return!1;const s=[...e,...n],p=s.filter(({itemType:e})=>[u.ERC721,u.ERC1155].includes(e)),o=s.filter(({itemType:e})=>E(e));if((({itemType:e})=>e===u.NATIVE)(e[0]))return!1;if(1!==p.length||0!==o.length)return!1;if(!W({offer:e,consideration:n}))return!1;if(s.some(({startAmount:e,endAmount:t})=>e!==t))return!1;const[d,...y]=n;if(d.recipient.toLowerCase()!==a.toLowerCase())return!1;if(n.length>1&&y.every(t=>t.itemType===e[0].itemType)&&$(y).endAmount.gt(e[0].endAmount))return!1;const l=s.filter(v),m=l.filter(({itemType:e})=>e===u.NATIVE).every(({token:e})=>e===r.constants.AddressZero),f=l.every(({identifierOrCriteria:e})=>t.from(e).eq(0)),c=p.filter(({itemType:e})=>e===u.ERC721).every(({endAmount:e})=>"1"===e);return m&&f&&c})(D.parameters,_)?async function({order:e,seaportContract:t,offererBalancesAndApprovals:n,fulfillerBalancesAndApprovals:a,timeBasedItemParams:i,offererOperator:s,fulfillerOperator:p,signer:d,tips:y=[],conduitKey:l=T}){var u,m;const{offer:f,consideration:c}=e.parameters,b=[...c,...y],A=f[0],[C,...O]=b,v=null==(u=Q[A.itemType])?void 0:u[C.itemType];if(void 0===v)throw new Error("Order parameters did not result in a valid basic fulfillment");const g=O.map(({startAmount:e,recipient:t})=>({amount:e,recipient:t})),I=b.filter(e=>e.itemType!==f[0].itemType),h=null==(m=x({items:I,criterias:[],timeBasedItemParams:o({},i,{isConsiderationItem:!0})})[r.constants.AddressZero])?void 0:m[0],E=(({offer:e,consideration:t,offererBalancesAndApprovals:n,fulfillerBalancesAndApprovals:r,timeBasedItemParams:a,offererOperator:i,fulfillerOperator:s})=>{z({offer:e,criterias:[],balancesAndApprovals:n,timeBasedItemParams:a,throwOnInsufficientApprovals:!0,operator:i});const p=t.filter(t=>t.itemType!==e[0].itemType),{insufficientBalances:d,insufficientApprovals:y}=K({balancesAndApprovals:r,tokenAndIdentifierAmounts:x({items:p,criterias:[],timeBasedItemParams:o({},a,{isConsiderationItem:!0})}),operator:s});if(d.length>0)throw new Error("The fulfiller does not have the balances needed to fulfill.");return y})({offer:f,consideration:b,offererBalancesAndApprovals:n,fulfillerBalancesAndApprovals:a,timeBasedItemParams:i,offererOperator:s,fulfillerOperator:p}),R={offerer:e.parameters.offerer,offererConduitKey:e.parameters.conduitKey,zone:e.parameters.zone,basicOrderType:e.parameters.orderType+4*v,offerToken:A.token,offerIdentifier:A.identifierOrCriteria,offerAmount:A.endAmount,considerationToken:C.token,considerationIdentifier:C.identifierOrCriteria,considerationAmount:C.endAmount,startTime:e.parameters.startTime,endTime:e.parameters.endTime,salt:e.parameters.salt,totalOriginalAdditionalRecipients:e.parameters.consideration.length-1,signature:e.signature,fulfillerConduitKey:l,additionalRecipients:g,zoneHash:e.parameters.zoneHash},w={value:h},k=[...await F(E,d),{type:"exchange",transactionMethods:B(t.connect(d),"fulfillBasicOrder",[R,w])}];return{actions:k,executeAllActions:()=>S(k)}}({order:D,seaportContract:this.contract,offererBalancesAndApprovals:I,fulfillerBalancesAndApprovals:h,timeBasedItemParams:j,conduitKey:y,offererOperator:O,fulfillerOperator:g,signer:A,tips:V}):async function({order:e,unitsToFill:t=0,totalSize:n,totalFilled:a,offerCriteria:i,considerationCriteria:s,tips:p=[],extraData:d,seaportContract:y,offererBalancesAndApprovals:l,fulfillerBalancesAndApprovals:u,offererOperator:m,fulfillerOperator:f,timeBasedItemParams:c,conduitKey:T,recipientAddress:b,signer:A}){var C;const O=t?Y(e,{unitsToFill:t,totalFilled:a,totalSize:n}):G(e,{totalFilled:a,totalSize:n}),{parameters:{offer:v,consideration:g}}=O,I=[...g,...p],h=v.filter(({itemType:e})=>E(e)),R=I.filter(({itemType:e})=>E(e)),w=h.length>0||R.length>0;if(h.length!==i.length||R.length!==s.length)throw new Error("You must supply the appropriate criterias for criteria based items");const k=null==(C=x({items:I,criterias:s,timeBasedItemParams:o({},c,{isConsiderationItem:!0})})[r.constants.AddressZero])?void 0:C[0],P=N({offer:v,consideration:I,offerCriteria:i,considerationCriteria:s,offererBalancesAndApprovals:l,fulfillerBalancesAndApprovals:u,timeBasedItemParams:c,offererOperator:m,fulfillerOperator:f}),_={value:k},M=await F(P,A),H=b!==r.constants.AddressZero,K=Boolean(t)||w||H,z=o({},e,{parameters:o({},e.parameters,{consideration:[...e.parameters.consideration,...p],totalOriginalConsiderationItems:g.length})}),{numerator:D,denominator:j}=ee(e,t),V=[...M,{type:"exchange",transactionMethods:K?B(y.connect(A),"fulfillAdvancedOrder",[o({},z,{numerator:D,denominator:j,extraData:null!=d?d:"0x"}),w?L({orders:[e],offerCriterias:[i],considerationCriterias:[s]}):[],T,b,_]):B(y.connect(A),"fulfillOrder",[z,T,_])}];return{actions:V,executeAllActions:()=>S(V)}}({order:D,unitsToFill:n,totalFilled:_,totalSize:M.eq(0)?w(D):M,offerCriteria:a,considerationCriteria:i,tips:V,extraData:p,seaportContract:this.contract,offererBalancesAndApprovals:I,fulfillerBalancesAndApprovals:h,timeBasedItemParams:j,conduitKey:y,signer:A,offererOperator:O,fulfillerOperator:g,recipientAddress:l})}async fulfillOrders({fulfillOrderDetails:e,accountAddress:n,conduitKey:a=this.defaultConduitKey,recipientAddress:i=r.constants.AddressZero}){const s=await this.provider.getSigner(n),p=await s.getAddress(),d=e.map(({order:e})=>this.config.conduitKeyToConduit[e.parameters.conduitKey]),y=this.config.conduitKeyToConduit[a],l=e.flatMap(({order:e})=>e.parameters.offer),u=e.flatMap(({order:e})=>e.parameters.consideration),m=e.flatMap(({offerCriteria:e=[]})=>e),f=e.flatMap(({considerationCriteria:e=[]})=>e),[c,T,b,A]=await Promise.all([Promise.all(e.map(({order:e,offerCriteria:t=[]},n)=>H({owner:e.parameters.offerer,items:e.parameters.offer,criterias:t,operator:d[n],multicallProvider:this.multicallProvider}))),H({owner:p,items:[...l,...u],criterias:[...m,...f],operator:y,multicallProvider:this.multicallProvider}),this.multicallProvider.getBlock("latest"),Promise.all(e.map(({order:e})=>this.getOrderStatus(this.getOrderHash(e.parameters))))]);return async function({ordersMetadata:e,seaportContract:n,fulfillerBalancesAndApprovals:a,fulfillerOperator:i,currentBlockTimestamp:s,ascendingAmountTimestampBuffer:p,conduitKey:d,signer:y,recipientAddress:l}){const u=e.map(e=>o({},e,{order:X(e.order,e.orderStatus)})),m=u.map(e=>o({},e,{order:e.unitsToFill?Y(e.order,{unitsToFill:e.unitsToFill,totalFilled:e.orderStatus.totalFilled,totalSize:e.orderStatus.totalSize}):G(e.order,{totalFilled:e.orderStatus.totalFilled,totalSize:e.orderStatus.totalSize})}));let f=t.from(0);const c=[];m.forEach(({order:e,tips:n,offerCriteria:o,considerationCriteria:d,offererBalancesAndApprovals:y,offererOperator:l})=>{var u,m;const T=[...e.parameters.consideration,...n],b={startTime:e.parameters.startTime,endTime:e.parameters.endTime,currentBlockTimestamp:s,ascendingAmountTimestampBuffer:p,isConsiderationItem:!0};f=f.add(null!=(u=null==(m=x({items:T,criterias:d,timeBasedItemParams:b})[r.constants.AddressZero])?void 0:m[0])?u:t.from(0));const A=N({offer:e.parameters.offer,consideration:T,offerCriteria:o,considerationCriteria:d,offererBalancesAndApprovals:y,fulfillerBalancesAndApprovals:a,timeBasedItemParams:b,offererOperator:l,fulfillerOperator:i}),C=e.parameters.offer.filter(({itemType:e})=>E(e)),O=T.filter(({itemType:e})=>E(e));if(C.length!==o.length||O.length!==d.length)throw new Error("You must supply the appropriate criterias for criteria based items");A.forEach(e=>{c.find(t=>t.token===e.token)||c.push(e)})});const T={value:f},b=await F(c,y),A=u.map(({order:e,unitsToFill:t=0,tips:n,extraData:r})=>{const{numerator:a,denominator:i}=ee(e,t),s=[...e.parameters.consideration,...n];return o({},e,{parameters:o({},e.parameters,{consideration:s,totalOriginalConsiderationItems:e.parameters.consideration.length}),numerator:a,denominator:i,extraData:r})}),{offerFulfillments:C,considerationFulfillments:O}=function(e){const t=({sourceOrDestination:e,operator:t="",token:n,identifier:r})=>`${e}-${t}-${n}-${r}`,n={},r={};return e.forEach(({order:e,offererOperator:r,offerCriteria:a},i)=>{const s=k(e.parameters.offer,a);return e.parameters.offer.forEach((a,p)=>{var o,d,y;const l=`${t({sourceOrDestination:e.parameters.offerer,operator:r,token:a.token,identifier:null!=(o=null==(d=s.get(a))?void 0:d.identifier)?o:a.identifierOrCriteria})}${I(a.itemType)?p:""}`;n[l]=[...null!=(y=n[l])?y:[],{orderIndex:i,itemIndex:p}]})}),e.forEach(({order:e,considerationCriteria:n,tips:a},i)=>{const s=k(e.parameters.consideration,n);return[...e.parameters.consideration,...a].forEach((e,n)=>{var a,p,o;const d=`${t({sourceOrDestination:e.recipient,token:e.token,identifier:null!=(a=null==(p=s.get(e))?void 0:p.identifier)?a:e.identifierOrCriteria})}${I(e.itemType)?n:""}`;r[d]=[...null!=(o=r[d])?o:[],{orderIndex:i,itemIndex:n}]})}),{offerFulfillments:Object.values(n),considerationFulfillments:Object.values(r)}}(e),v=[...b,{type:"exchange",transactionMethods:B(n.connect(y),"fulfillAvailableAdvancedOrders",[A,[],C,O,d,l,A.length,T])}];return{actions:v,executeAllActions:()=>S(v)}}({ordersMetadata:e.map((e,t)=>{var n,r,a,i,s;return{order:e.order,unitsToFill:e.unitsToFill,orderStatus:A[t],offerCriteria:null!=(n=e.offerCriteria)?n:[],considerationCriteria:null!=(r=e.considerationCriteria)?r:[],tips:null!=(a=null==(i=e.tips)?void 0:i.map(e=>o({},U(e),{recipient:e.recipient})))?a:[],extraData:null!=(s=e.extraData)?s:"0x",offererBalancesAndApprovals:c[t],offererOperator:d[t]}}),seaportContract:this.contract,fulfillerBalancesAndApprovals:T,currentBlockTimestamp:b.timestamp,ascendingAmountTimestampBuffer:this.config.ascendingAmountFulfillmentBuffer,fulfillerOperator:y,signer:s,conduitKey:a,recipientAddress:i})}matchOrders({orders:e,fulfillments:t,overrides:n,accountAddress:r}){const a=this.provider.getSigner(r);return B(this.contract.connect(a),"matchOrders",[e,t,n])}}export{te as Seaport};
|
|
2
|
-
//# sourceMappingURL=index.modern.mjs.map
|