@tradeport/sui-trading-sdk 0.4.63 → 0.4.65
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/.claude/settings.local.json +5 -0
- package/dist/index.d.mts +50 -22
- package/dist/index.d.ts +50 -22
- package/dist/index.js +627 -256
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +615 -249
- package/dist/index.mjs.map +1 -1
- package/package.json +65 -59
- package/src/helpers/kiosk/getRulePackageId.ts +2 -1
- package/src/helpers/kiosk/getTransferPoliciesToResolve.ts +3 -0
- package/src/helpers/kiosk/upgradeKioskRulesPackageId.ts +17 -0
- package/src/methods/listNfts/listNfts.ts +0 -1
- package/src/methods/sponsorNftListing/addSponsorNftListingTx.ts +14 -12
- package/src/methods/sponsorNftListing/sponsorNftListing.ts +0 -3
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/SuiTradingClient.ts","../src/apiClients/createKioskClient.ts","../src/apiClients/createSuiClient.ts","../src/apiClients/graphqlClient.ts","../src/graphql/createChainGQLQuery.ts","../src/graphql/gqlChainRequest.ts","../src/graphql/queries/fetchCollectionBidById.ts","../src/graphql/queries/fetchCollectionBidsAtSamePrice.ts","../src/methods/acceptCollectionBid/acceptCollectionBid.ts","../src/constants.ts","../src/graphql/queries/fetchNftsById.ts","../src/helpers/getNftType.ts","../src/graphql/queries/fetchSharedObjectsByType.ts","../src/utils/addLeadingZerosAfter0x.ts","../src/helpers/getSharedObjects.ts","../src/methods/acceptCollectionBid/addAcceptCollectionBIdTxs.ts","../src/utils/normalizeNftType.ts","../src/helpers/getRoyaltyRuleModule.ts","../src/helpers/kiosk/getNativeKioskTransferPolicies.ts","../src/helpers/hasPersonalKioskRule.ts","../src/helpers/hasTransferPolicyRules.ts","../src/helpers/isSIngleBid.ts","../src/graphql/queries/fetchKiosksByOwner.ts","../src/helpers/kiosk/assertNftInSharedKiosk.ts","../src/helpers/kiosk/getRulePackageId.ts","../src/utils/addHexPrefix.ts","../src/helpers/getTransferPolicyRuleNamesFromSuiObject.ts","../src/helpers/kiosk/isBluemoveKioskBid.ts","../src/helpers/kiosk/isTradePortKioskBid.ts","../src/helpers/kiosk/kioskTxWrapper.ts","../src/graphql/queries/fetchOwnerCapByKiosk.ts","../src/graphql/queries/fetchPersonalCapByKiosk.ts","../src/helpers/kiosk/getKioskIdFromKioskTx.ts","../src/helpers/kiosk/getTransferPoliciesToResolve.ts","../src/helpers/kiosk/resolveFloorPriceRule.ts","../src/helpers/kiosk/resolveKioskLockRule.ts","../src/helpers/kiosk/resolvePersonalKioskRule.ts","../src/helpers/kiosk/getKioskCollectionRoyaltyFeeAmount.ts","../src/helpers/kiosk/resolveRoyaltyRule.ts","../src/helpers/kiosk/resolveTableAllowlistRule.ts","../src/helpers/kiosk/resolveCustomTransferPolicyRules.ts","../src/helpers/kiosk/resolveTransferPolicies.ts","../src/helpers/kiosk/takeLockedNftFromKiosk.ts","../src/helpers/kiosk/takeAndBorrowNftFromKiosk.ts","../src/helpers/originByte/confirmOBTranfer.ts","../src/helpers/originByte/depositNftIntoOBKiosk.ts","../src/helpers/originByte/createOBKiosk.ts","../src/graphql/queries/fetchWalletKiosks.ts","../src/helpers/originByte/getOBKiosk.ts","../src/helpers/originByte/getOrCreateOBKiosk.ts","../src/helpers/originByte/isOriginByteBid.ts","../src/helpers/originByte/isOriginByteCollection.ts","../src/helpers/originByte/shareOriginByteKiosk.ts","../src/helpers/rpc/getObjectType.ts","../src/methods/acceptNftBids/addAcceptNftBidTxs.ts","../src/graphql/queries/fetchMultibidById.ts","../src/helpers/kiosk/lockNftInsideKioskIfNotLocked.ts","../src/helpers/originByte/getOBBidderKiosk.ts","../src/helpers/isNonKioskListing.ts","../src/methods/unlistListings/addUnlistListingTxs.ts","../src/methods/acceptNftBids/acceptNftBids.ts","../src/graphql/queries/fetchBidsById.ts","../src/methods/applyFtStrategy/applyFtStrategy.ts","../src/graphql/queries/fetchCollectionChainState.ts","../src/helpers/getCollectionChainState.ts","../src/methods/applyNftStrategy/applyNftStrategy.ts","../src/graphql/queries/fetchCollectionFloorListingForMarket.ts","../src/methods/buyListings/buyListings.ts","../src/graphql/queries/fetchListingsById.ts","../src/helpers/addThirdPartyTxFee.ts","../src/helpers/kiosk/preProcessSharedBulkBuyingData.ts","../src/methods/buyListings/addBuyListingTxs.ts","../src/graphql/queries/fetchCommissionByListingId.ts","../src/graphql/queries/getCommissionByListingId.ts","../src/helpers/destroyZeroCoin.ts","../src/helpers/getMarketFeePrice.ts","../src/bigNumberConfig.ts","../src/helpers/calculateRoyaltyFee.ts","../src/methods/cancelMultiBid/cancelMultiBid.ts","../src/methods/removeNftBids/addRemoveNftBidTxs.ts","../src/methods/cancelNftTransfers/cancelNftTransfers.ts","../src/graphql/queries/fetchAccountKiosks.ts","../src/helpers/originByte/isOBKiosk.ts","../src/methods/cancelNftTransfers/addCancelNftTransfersTx.ts","../src/methods/claimNfts/claimNfts.ts","../src/helpers/splitCoins.ts","../src/methods/claimNfts/addClaimNftsTxs.ts","../src/methods/createMultiBid/createMultiBid.ts","../src/methods/updateMultiBid/updateMultiBid.ts","../src/methods/listNfts/listNfts.ts","../src/helpers/isExpiredListing.ts","../src/helpers/validateMinFloorPrice.ts","../src/methods/listNfts/addListTxs.ts","../src/methods/listNfts/addRelistTxs.ts","../src/methods/relistNft/relistNft.ts","../src/methods/sponsorNftListing/addSponsorNftListingTx.ts","../src/methods/migrateNftsFromUnsharedToSharedKiosks/migrateNftsFromUnsharedToSharedKiosks.ts","../src/graphql/queries/fetchNftsByKioskId.ts","../src/graphql/queries/fetchTransferPoliciesByType.ts","../src/helpers/kiosk/getNativeKioskTransferPoliciesByNftType.ts","../src/methods/transferNfts/addTransferNftTx.ts","../src/methods/placeCollectionBids/placeCollectionBids.ts","../src/graphql/queries/fetchCollectionsById.ts","../src/methods/placeNftBids/addPlaceNftBidTxs.ts","../src/graphql/queries/fetchCollectionFloorListings.ts","../src/helpers/getCollectionFloorPrice.ts","../src/methods/placeCollectionBids/addPlaceCollectionBidTxs.ts","../src/methods/placeNftBids/placeNftBids.ts","../src/methods/removeCollectionBids/removeCollectionBids.ts","../src/methods/removeCollectionBids/addRemoveCollectionBidsTxs.ts","../src/methods/removeNftBids/removeNftBids.ts","../src/methods/sponsorNftListing/sponsorNftListing.ts","../src/graphql/queries/fetchNftCollectionChainState.ts","../src/methods/transferNfts/transferNfts.ts","../src/methods/unlistListings/unlistListings.ts","../src/methods/withdrawProfitsFromKiosks/withdrawProfitsFromKiosks.ts"],"sourcesContent":["import { getFullnodeUrl } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { GraphQLClient } from 'graphql-request';\nimport createKioskClient from './apiClients/createKioskClient';\nimport createSuiClient from './apiClients/createSuiClient';\nimport { getGraphqlClient, setGraphqlClient } from './apiClients/graphqlClient';\nimport { gqlChainRequest } from './graphql/gqlChainRequest';\nimport { fetchCollectionBidsById } from './graphql/queries/fetchCollectionBidById';\nimport { fetchCollectionBidsAtSamePrice } from './graphql/queries/fetchCollectionBidsAtSamePrice';\nimport {\n\tacceptCollectionBid,\n\ttype AcceptCollectionBid,\n} from './methods/acceptCollectionBid/acceptCollectionBid';\nimport { acceptNftBids, type AcceptNftBids } from './methods/acceptNftBids/acceptNftBids';\nimport { applyFtStrategy, type ApplyFtStrategy } from './methods/applyFtStrategy/applyFtStrategy';\nimport {\n\ttype ApplyNftStrategy,\n\tapplyTradeportNftStrategy,\n} from './methods/applyNftStrategy/applyNftStrategy';\nimport { buyListings, type BuyListings } from './methods/buyListings/buyListings';\nimport { cancelMultiBid, type CancelMultiBid } from './methods/cancelMultiBid/cancelMultiBid';\nimport {\n\tcancelNftTransfers,\n\ttype CancelNftTransfers,\n} from './methods/cancelNftTransfers/cancelNftTransfers';\nimport { claimNfts, type ClaimNfts } from './methods/claimNfts/claimNfts';\nimport { createMultiBid, type CreateMultiBid } from './methods/createMultiBid/createMultiBid';\nimport { listNfts, type ListNfts } from './methods/listNfts/listNfts';\nimport {\n\tmigrateNftsFromUnsharedToSharedKiosks,\n\ttype MigrateNftsFromUnsharedToSharedKiosks,\n} from './methods/migrateNftsFromUnsharedToSharedKiosks/migrateNftsFromUnsharedToSharedKiosks';\nimport {\n\ttype PlaceCollectionBid,\n\tplaceCollectionBids,\n} from './methods/placeCollectionBids/placeCollectionBids';\nimport { placeNftBids, type PlaceNftBids } from './methods/placeNftBids/placeNftBids';\nimport {\n\tremoveCollectionBids,\n\ttype RemoveCollectionBids,\n} from './methods/removeCollectionBids/removeCollectionBids';\nimport { removeNftBids, type RemoveNftBids } from './methods/removeNftBids/removeNftBids';\nimport {\n\ttype SponsorNftListing,\n\tsponsorNftListing,\n} from './methods/sponsorNftListing/sponsorNftListing';\nimport { transferNfts, type TransferNfts } from './methods/transferNfts/transferNfts';\nimport { unlistListings, type UnlistListings } from './methods/unlistListings/unlistListings';\nimport { updateMultiBid, type UpdateMultiBid } from './methods/updateMultiBid/updateMultiBid';\nimport {\n\twithdrawProfitsFromKiosks,\n\ttype WithdrawProfitsFromKiosks,\n} from './methods/withdrawProfitsFromKiosks/withdrawProfitsFromKiosks';\nimport { addLeadingZerosAfter0x } from './utils/addLeadingZerosAfter0x';\n\ntype ApiConfig = {\n\tapiUser: string;\n\tapiKey: string;\n\tapiUrl?: string;\n\ttradeportRouterUrl?: string;\n\tapiVercelId?: string;\n\tsuiNodeUrl?: string;\n\tgraphQLClient?: GraphQLClient;\n};\nexport interface RequestContext {\n\tapiUser: string;\n\tapiKey: string;\n\ttradeportRouterUrl?: string;\n\tsuiClient: ReturnType<typeof createSuiClient>;\n\tkioskClient: ReturnType<typeof createKioskClient>;\n}\n\nclass SuiTradingClient {\n\tprivate readonly apiUser: string;\n\tprivate readonly apiKey: string;\n\tprivate readonly tradeportRouterUrl?: string;\n\tprivate readonly suiClient: ReturnType<typeof createSuiClient>;\n\tprivate readonly kioskClient: ReturnType<typeof createKioskClient>;\n\tprivate readonly allowedApiUsersForUnsharedKiosksMigration = ['tradeport.xyz', 'mercato.xyz'];\n\n\tconstructor({\n\t\tapiUser,\n\t\tapiKey,\n\t\tapiVercelId,\n\t\tapiUrl,\n\t\ttradeportRouterUrl,\n\t\tsuiNodeUrl,\n\t\tgraphQLClient,\n\t}: ApiConfig) {\n\t\tthis.apiUser = apiUser;\n\t\tthis.apiKey = apiKey;\n\t\tthis.tradeportRouterUrl = tradeportRouterUrl;\n\t\tthis.suiClient = createSuiClient(suiNodeUrl ?? getFullnodeUrl('mainnet'));\n\t\tthis.kioskClient = createKioskClient(this.suiClient);\n\n\t\tif (graphQLClient) {\n\t\t\tsetGraphqlClient(graphQLClient);\n\t\t} else {\n\t\t\tsetGraphqlClient(new GraphQLClient(apiUrl ?? 'https://graphql.tradeport.gg'));\n\t\t}\n\n\t\tgetGraphqlClient().setHeaders({\n\t\t\t'x-api-user': apiUser,\n\t\t\t'x-api-key': apiKey,\n\t\t\t...(apiVercelId && { 'x-vercel-id': apiVercelId }),\n\t\t});\n\n\t\t// trackMethodCall({ apiUser, apiKey, event: 'INITIALIZE_CLIENT' });\n\t}\n\n\tpublic async buyListings(args: BuyListings): Promise<Transaction> {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\t\treturn buyListings(args, context);\n\t}\n\n\tpublic async listNfts({ nfts, walletAddress, tx }: ListNfts) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn listNfts({ nfts, walletAddress, tx }, context);\n\t}\n\n\tpublic async unlistListings({ listingIds, walletAddress }: UnlistListings) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn unlistListings({ listingIds, walletAddress }, context);\n\t}\n\n\tpublic async placeNftBids(data: PlaceNftBids) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn placeNftBids(data, context);\n\t}\n\n\tpublic async removeNftBids({ bidIds, tx }: RemoveNftBids) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tapiKey: this.apiKey,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn removeNftBids({ bidIds, tx }, context);\n\t}\n\n\tpublic async acceptNftBids({ bidIds, walletAddress }: AcceptNftBids) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn acceptNftBids({ bidIds, walletAddress }, context);\n\t}\n\n\tpublic async placeCollectionBid({\n\t\tcollectionId,\n\t\tbidAmountInMist,\n\t\tnumOfBids,\n\t\twalletAddress,\n\t\tmultiBidId,\n\t\tmultiBidChainId,\n\t\texpireAt,\n\t\ttx,\n\t}: PlaceCollectionBid): Promise<Transaction> {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn placeCollectionBids(\n\t\t\t{\n\t\t\t\tcollections: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: collectionId,\n\t\t\t\t\t\tbidAmountInMist,\n\t\t\t\t\t\tnumOfBids,\n\t\t\t\t\t\texpireAt,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\twalletAddress,\n\t\t\t\tmultiBidId,\n\t\t\t\tmultiBidChainId,\n\t\t\t\ttx,\n\t\t\t},\n\t\t\tcontext,\n\t\t);\n\t}\n\n\tpublic async acceptCollectionBid({ bidId, nftId, walletAddress }: AcceptCollectionBid) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\tconst collectionBidRes = await gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchCollectionBidsById,\n\t\t\tvariables: { bidIds: [bidId] },\n\t\t});\n\t\tconst bid = collectionBidRes?.bids?.[0];\n\n\t\tif (!bid) {\n\t\t\tthrow new Error('No bid found');\n\t\t}\n\n\t\tif (addLeadingZerosAfter0x(bid?.bidder) === addLeadingZerosAfter0x(walletAddress)) {\n\t\t\tthrow new Error('Wallet cannot accept its own bid');\n\t\t}\n\n\t\tif (bid?.status !== 'active') {\n\t\t\tthrow new Error('Bid not active');\n\t\t}\n\n\t\tif (bid?.type !== 'collection') {\n\t\t\tthrow new Error('Bid is not a collection bid. Use acceptNftBid() instead.');\n\t\t}\n\n\t\tconst allBidsWithSameHighestPriceRes = await gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchCollectionBidsAtSamePrice,\n\t\t\tvariables: {\n\t\t\t\tcollectionId: bid?.collection_id,\n\t\t\t\tprice: bid?.price,\n\t\t\t},\n\t\t});\n\t\tconst allBidsWithSameHighestPrice = allBidsWithSameHighestPriceRes?.bids;\n\n\t\t// loop through all highest bids at same price until one succeeds\n\t\tfor (let i = 0; i < (allBidsWithSameHighestPrice?.length ?? 0); i++) {\n\t\t\tconst tx = await acceptCollectionBid(\n\t\t\t\t{\n\t\t\t\t\tbid: allBidsWithSameHighestPrice?.[i],\n\t\t\t\t\tnftId,\n\t\t\t\t\twalletAddress,\n\t\t\t\t},\n\t\t\t\tcontext,\n\t\t\t);\n\n\t\t\tlet result = await this.suiClient.devInspectTransactionBlock({\n\t\t\t\ttransactionBlock: tx,\n\t\t\t\tsender: addLeadingZerosAfter0x(walletAddress),\n\t\t\t});\n\n\t\t\tif (result.effects.status.status === 'success') {\n\t\t\t\treturn tx;\n\t\t\t}\n\n\t\t\tif (i === allBidsWithSameHighestPrice.length - 1) {\n\t\t\t\t// next loop through all the same bids and try with splitting royalty from user gas coins in case royalty has changed and the amount in escrow is not ennough\n\t\t\t\tfor (let j = 0; j < allBidsWithSameHighestPrice?.length; j++) {\n\t\t\t\t\tconst tx = await acceptCollectionBid(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbid: allBidsWithSameHighestPrice?.[j],\n\t\t\t\t\t\t\tnftId,\n\t\t\t\t\t\t\twalletAddress,\n\t\t\t\t\t\t\tshouldSplitRoyaltyFromUserGasCoins: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t);\n\n\t\t\t\t\tresult = await this.suiClient.devInspectTransactionBlock({\n\t\t\t\t\t\ttransactionBlock: tx,\n\t\t\t\t\t\tsender: addLeadingZerosAfter0x(walletAddress),\n\t\t\t\t\t});\n\n\t\t\t\t\tif (result?.effects.status.status === 'success') {\n\t\t\t\t\t\treturn tx;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Failed to validate accept bid transaction: ${result?.error ?? result?.effects?.status?.error ?? 'Unknown error'}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async removeCollectionBids({ bidIds, tx }: RemoveCollectionBids) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn removeCollectionBids({ bidIds, tx }, context);\n\t}\n\n\tpublic async transferNfts({ nftIds, recipientAddress, walletAddress }: TransferNfts) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn transferNfts({ nftIds, recipientAddress, walletAddress }, context);\n\t}\n\n\tpublic async cancelNftTransfers({ nftIds, walletAddress }: CancelNftTransfers) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\ttry {\n\t\t\treturn await cancelNftTransfers({ nftIds, walletAddress }, context);\n\t\t} catch (err) {\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot cancel NFT transfer unless the NFT was transferred using kiosk_transfers::transfer_with_purchase_capability',\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic async claimNfts({ nftIds, walletAddress }: ClaimNfts) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\ttry {\n\t\t\tconst tx = await claimNfts({ nftIds, walletAddress }, context, true);\n\n\t\t\ttx.setSenderIfNotSet(addLeadingZerosAfter0x(walletAddress));\n\t\t\tconst rawTransaction = await tx.build({ client: this.suiClient });\n\t\t\tawait this.suiClient.dryRunTransactionBlock({\n\t\t\t\ttransactionBlock: rawTransaction,\n\t\t\t});\n\t\t\treturn tx;\n\t\t} catch (err) {\n\t\t\treturn claimNfts({ nftIds, walletAddress }, context);\n\t\t}\n\t}\n\n\tpublic async withdrawProfitsFromKiosks(args: WithdrawProfitsFromKiosks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn withdrawProfitsFromKiosks(args, context);\n\t}\n\n\tpublic async migrateNftsFromUnsharedToSharedKiosks(args: MigrateNftsFromUnsharedToSharedKiosks) {\n\t\tif (!this.allowedApiUsersForUnsharedKiosksMigration.includes(this.apiUser)) {\n\t\t\tthrow new Error('This method is not available for your API user.');\n\t\t}\n\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn migrateNftsFromUnsharedToSharedKiosks(args, context);\n\t}\n\n\tpublic async createMultiBid(args: CreateMultiBid) {\n\t\treturn createMultiBid(args);\n\t}\n\n\tpublic async cancelMultiBid(args: CancelMultiBid) {\n\t\treturn cancelMultiBid(args);\n\t}\n\n\tpublic async updateMultiBid(args: UpdateMultiBid) {\n\t\treturn updateMultiBid(args, {\n\t\t\tsuiClient: this.suiClient,\n\t\t\ttradeportRouterUrl: this.tradeportRouterUrl,\n\t\t});\n\t}\n\n\tpublic async sponsorNftListing(args: SponsorNftListing) {\n\t\treturn sponsorNftListing(args);\n\t}\n\n\tpublic async applyFtStrategy(args: ApplyFtStrategy) {\n\t\treturn applyFtStrategy(args);\n\t}\n\n\tpublic async applyTradeportNftStrategy(args: ApplyNftStrategy) {\n\t\treturn applyTradeportNftStrategy(args);\n\t}\n}\n\nexport default SuiTradingClient;\n","import { KioskClient, Network } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\n\nconst createKioskClient = (suiClient: SuiClient) =>\n\tnew KioskClient({\n\t\t// @ts-ignore\n\t\tclient: suiClient,\n\t\tnetwork: Network.MAINNET,\n\t});\n\nexport default createKioskClient;\n","import { SuiClient } from '@mysten/sui/client';\n\nconst createSuiClient = (url: string) => new SuiClient({ url });\n\nexport default createSuiClient;\n","import type { GraphQLClient } from 'graphql-request';\n\nlet graphqlClient: GraphQLClient;\n\nexport const getGraphqlClient = () => {\n\tif (!graphqlClient) {\n\t\tthrow new Error(\n\t\t\t'GraphQL client not initialized. Please provide apiUrl to SuiTradingClient constructor.',\n\t\t);\n\t}\n\n\treturn graphqlClient;\n};\n\nexport function setGraphqlClient(client: GraphQLClient) {\n\tgraphqlClient = client;\n}\n","import { gql } from 'graphql-request';\n\ntype ChainQuery = {\n\tchain: string;\n\tquery: string;\n};\n\nexport function createChainGQLQuery({ chain, query }: ChainQuery) {\n\tconst regex = /query\\s+(\\w+)\\s*\\(([\\s\\S]*?)\\)\\s*((?:@\\w+(?:\\([^)]*\\))?\\s*)*){([\\s\\S]*)}/;\n\tconst matches = regex.exec(query);\n\n\tif (!matches || matches.length !== 5) {\n\t\tthrow new Error('Invalid query string format');\n\t}\n\n\tconst [, queryName, argsString, directivesString, bodyString] = matches;\n\n\tif (!argsString || !bodyString) return '';\n\n\tconst args = argsString.trim().length ? `(${argsString.trim()})` : '';\n\tconst directives = directivesString.trim();\n\tconst directivesPart = directives.length ? ` ${directives}` : '';\n\tconst body = bodyString.trim();\n\tconst wrappedBody = `${chain} {\\n${body}\\n}`;\n\n\treturn gql`query ${queryName}${args}${directivesPart} {\\n${wrappedBody}\\n}`;\n}\n","import { getGraphqlClient } from '../apiClients/graphqlClient';\nimport { createChainGQLQuery } from './createChainGQLQuery';\n\ntype Args = {\n\tchain: string;\n\tquery: string;\n\tvariables?: any;\n};\n\nexport const gqlChainRequest = async ({ chain, query, variables }: Args) => {\n\tif (!chain || !query) {\n\t\tthrow new Error('Missing required arguments');\n\t}\n\n\tconst response = await getGraphqlClient().request<any>(\n\t\tcreateChainGQLQuery({ chain, query }),\n\t\tvariables,\n\t);\n\n\treturn response?.[chain];\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchCollectionBidsById = gql`\n\tquery fetchCollectionBidsById($bidIds: [uuid!]) {\n\t\tbids(where: { id: { _in: $bidIds } }) {\n\t\t\tnonce\n\t\t\tprice\n\t\t\tbidder\n\t\t\tstatus\n\t\t\ttype\n\t\t\tcollection_id\n\t\t\tmulti_bid_id\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tmarket_contract {\n\t\t\t\tname\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { gql } from 'graphql-request';\n\nexport const fetchCollectionBidsAtSamePrice = gql`\n\tquery fetchCollectionBidsAtSamePrice($collectionId: uuid!, $price: numeric) {\n\t\tbids(\n\t\t\twhere: {\n\t\t\t\tcollection_id: { _eq: $collectionId }\n\t\t\t\tprice: { _eq: $price }\n\t\t\t\tstatus: { _eq: \"active\" }\n\t\t\t\ttype: { _eq: \"collection\" }\n\t\t\t}\n\t\t\torder_by: { price: desc }\n\t\t) {\n\t\t\tnonce\n\t\t\tprice\n\t\t\tbidder\n\t\t\tstatus\n\t\t\ttype\n\t\t\tcollection_id\n\t\t\tmulti_bid_id\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tmarket_contract {\n\t\t\t\tname\n\t\t\t}\n\t\t}\n\t}\n`;\n","import type { KioskClient, KioskTransaction } from '@mysten/kiosk';\nimport type { SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftById } from '../../graphql/queries/fetchNftsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport {\n\taddBluemoveAcceptCollectionBidTxHandler,\n\taddOriginByteAcceptCollectionBidTx,\n\taddTocenAcceptCollectionBidTxHandler,\n\taddTradePortAcceptCollectionBidTxHandler,\n} from './addAcceptCollectionBIdTxs';\n\nexport type AcceptCollectionBidTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tkioskTx?: any;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tsharedKioskState?: SharedKioskState;\n\tbidNonce: string;\n\tnftType: string;\n\tnftTokenId: string;\n\tlistingPrice: number;\n\tlistingNonce: string;\n\titemOwner: string;\n\tbidAmount: number;\n\tbidder: string;\n\tseller: string;\n\tsellerKiosk: string;\n\tcollectionId: string;\n\tisListedOnBluemove: boolean;\n\tbidMarketName: string;\n\titemTakenOutOfNativeKiosk?: any;\n\troyaltyRulePackageId?: string;\n\troyaltyRuleModule?: string;\n\tshouldSplitRoyaltyFromUserGasCoins?: boolean;\n\tmultiBidId?: string;\n\tbeforeResolveKioskTransferRequest?: (coin: any, transferRequest: any) => void | Promise<void>;\n};\n\nexport type AcceptCollectionBid = {\n\tbidId: string;\n\tnftId: string;\n\twalletAddress: string;\n};\n\nexport type InternalAcceptCollectionBid = {\n\tbid: any;\n\tnftId: string;\n\twalletAddress: string;\n\ttx?: Transaction;\n\tkioskTx?: KioskTransaction;\n\tshouldSplitRoyaltyFromUserGasCoins?: boolean;\n\tbeforeResolveKioskTransferRequest?: (coin: any, transferRequest: any) => void | Promise<void>;\n};\n\nconst ERROR_UNLIST_FIRST =\n\t'Item must be unlisted first before you can accept a collection bid with it';\n\nexport const acceptCollectionBid = async (\n\t{\n\t\tbid,\n\t\tnftId,\n\t\twalletAddress,\n\t\ttx: existingTx,\n\t\tkioskTx,\n\t\tshouldSplitRoyaltyFromUserGasCoins,\n\t\tbeforeResolveKioskTransferRequest,\n\t}: InternalAcceptCollectionBid,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst nftRes = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftById,\n\t\tvariables: { nftId },\n\t});\n\tconst nft = nftRes?.nfts?.[0];\n\n\tif (!nft) {\n\t\tthrow new Error('No nft found');\n\t}\n\n\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(nft?.token_id)) {\n\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t}\n\n\tconst bidsForTracking = [];\n\tconst tx = existingTx ?? new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: kioskTx ?? undefined,\n\t};\n\n\tconst nftType = getNftType({\n\t\tcollectionId: nft?.collection_id,\n\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\tnft,\n\t});\n\n\tconst transferPolicies = nft?.collection?.chain_state?.transfer_policies;\n\n\tconst txData: AcceptCollectionBidTx = {\n\t\ttx,\n\t\tkioskTx,\n\t\ttransferPolicies,\n\t\tsuiClient: context.suiClient,\n\t\tkioskClient: context.kioskClient,\n\t\tsharedKioskState,\n\t\tbidNonce: bid?.nonce,\n\t\tnftType,\n\t\tnftTokenId: nft?.token_id,\n\t\titemOwner: nft?.owner,\n\t\tlistingPrice: nft?.listings?.[0]?.price,\n\t\tlistingNonce: nft?.listings?.[0]?.nonce,\n\t\tbidAmount: bid?.price,\n\t\tbidder: bid?.bidder,\n\t\tseller: walletAddress,\n\t\tsellerKiosk: nft?.chain_state?.kiosk_id,\n\t\tcollectionId: nft?.collection_id,\n\t\tisListedOnBluemove: nft?.listings?.[0]?.market_name === 'bluemove',\n\t\tbidMarketName: bid?.market_contract?.name,\n\t\tmultiBidId: bid.multi_bid_id,\n\t\tshouldSplitRoyaltyFromUserGasCoins,\n\t\tbeforeResolveKioskTransferRequest,\n\t};\n\n\tswitch (txData.bidMarketName) {\n\t\tcase 'tradeport':\n\t\t\tif (txData?.listingPrice && txData?.listingPrice > 0) {\n\t\t\t\tthrow new Error(ERROR_UNLIST_FIRST);\n\t\t\t}\n\n\t\t\tawait addTradePortAcceptCollectionBidTxHandler(txData);\n\t\t\tbreak;\n\t\tcase 'clutchy': {\n\t\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\t\tawait addOriginByteAcceptCollectionBidTx({ ...txData, sharedObjects });\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'bluemove':\n\t\t\tif (txData?.listingPrice && txData?.listingPrice > 0 && !txData?.isListedOnBluemove) {\n\t\t\t\tthrow new Error(ERROR_UNLIST_FIRST);\n\t\t\t}\n\n\t\t\tawait addBluemoveAcceptCollectionBidTxHandler(txData);\n\t\t\tbreak;\n\t\tcase 'tocen':\n\t\t\tif (txData?.listingPrice && txData?.listingPrice > 0) {\n\t\t\t\tthrow new Error(ERROR_UNLIST_FIRST);\n\t\t\t}\n\n\t\t\taddTocenAcceptCollectionBidTxHandler(txData);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error('Marketplace not supported');\n\t}\n\n\tbidsForTracking.push({\n\t\tnftType,\n\t\tcollectionId: nft?.collection_id,\n\t\tbidAmount: bid?.price,\n\t\tbidMarketName: bid?.market_contract?.name,\n\t\titemOwner: nft?.owner,\n\t\tbidder: bid?.bidder,\n\t});\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && bidsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'ACCEPT_COLLECTION_BID',\n\t// \t\titems: bidsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","export const MYSTEN_TRANSFER_POLICY_RULES_PACKAGE_ID = '0x434b5bd8f6a7b05fede0ff46c6e511d71ea326ed38056e3bcd681d2d7c2a7879';\nexport const MYSTEN_TRANSFER_POLICY_RULES_PACKAGE_ID_V2 = '0x0cb4bcc0560340eb1a1b929cabe56b33fc6449820ec8c1980d69bb98b649b802';\n\nexport const TRADEPORT_BENEFICIARY_ADDRESS = '0xbca3b5c01c8d1a93aed3a036feff45145518292dd3c1db1d67cc99a699a7b517';\nexport const TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT = 0.03;\nexport const TRADEPORT_THIRD_PARTY_FEE_DECIMAL_PERCENT = 0.005;\nexport const TRADEPORT_LISTINGS_DEFAULT_COMMISSION_BPS = 300; // 3%\nexport const TRADEPORT_LISTING_STORE = '0x47cba0b6309a12ce39f9306e28b899ed4b3698bce4f4911fd0c58ff2329a2ff6';\nexport const TRADEPORT_BIDDING_STORE = '0x3d3b0c6e616fdc1a45b2b73d022bc085448e78bd729d28081c7a340abb33cba1';\nexport const TRADEPORT_MARKETPLACE_OBJECT = '0xc5f87120e388b532ee774f7bac23347679f632a1f2d59f4ed2bbf2ffe5a61b6f';\nexport const TRADEPORT_LISTINGS_PACKAGE = '0xc99caf110751c3c615c64a27c81bf5c829e39b21a32613b9e4f87ca69cb8ec38';\nexport const TRADEPORT_LISTINGS_STORE = '0xf96f9363ac5a64c058bf7140723226804d74c0dab2dd27516fb441a180cd763b';\nexport const TRADEPORT_ORDERBOOK_STORE = '0x3af0a94360253c80fbabe73f6832be0a49ddfc0b8772ccd5335f568cbc356da1';\nexport const TRADEPORT_KIOSK_LISTING_STORE = '0xbff3161b047fb8b727883838c09b08afa9e0dd0f5488bde9e99e80643da9b9e0';\nexport const TRADEPORT_KIOSK_TRANSFERS_STORE = '0xe0f61b6915d3fd4ec8bbe4618514e2152a82841605bfa00cde22ace434153a1b';\nexport const TRADEPORT_KIOSK_TRANSFERS_ESCROW_KIOSK = '0xa677dab85a93bd8d6845b6cc7914f3bbb334fef7fbcbe0e997b5f75b5922d106';\nexport const TRADEPORT_KIOSK_BIDDING_STORE = '0x1e5e7f38e3a61d1d189506d0fc6b7e47e935a292d9e1b23c0f3f1c0f94227772';\nexport const TRADEPORT_KIOSK_BIDDING_ESCROW_KIOSK = '0x151fbe627d3f8de855f424c879ea2176d89282185a4b9226a7157172dd2919cc';\nexport const TRADEPORT_BID_NONCE_TYPE = '0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::Bid';\nexport const TRADEPORT_KIOSK_BID_NONCE_TYPE = '0xec175e537be9e48f75fa6929291de6454d2502f1091feb22c0d26a22821bbf28::kiosk_biddings::Bid';\nexport const TRADEPORT_PRICE_LOCK_PACKAGE = '0x3cb532a2548290780a3d70ad6f4f06abc5bebb75ec6f8dd0197d4d2b2860c5d8';\nexport const TRADEPORT_PRICE_LOCK_STORE = '0x4b705de46a79b29276baf45009bc7d6f70cc0f1407f0c9e03cac5729c0c47946';\n\nexport const TRADEPORT_MULTI_BID_PACKAGE = '0x63ce6caee2ba264e92bca2d160036eb297d99b2d91d4db89d48a9bffca66e55b';\nexport const TRADEPORT_MULTI_BID_PACKAGE_ORIGINAL = '0x53134eb544c5a0b5085e99efaf7eab13b28ad123de35d61f941f8c8c40b72033'; // V1\nexport const TRADEPORT_MULTI_BID_STORE = '0x8aaed7e884343fb8b222c721d02eaac2c6ae2abbb4ddcdf16cb55cf8754ee860';\n\n\nexport const TRADEPORT_NFT_STRATEGY_PACKAGE_ID = '0xb7386fc8c6e64ea2b0079e293592b57e984988afdda763f78a3151021c5fbc22';\nexport const TRADEPORT_NFT_STRATEGY_MANAGER_ID = '0xfb58ee62b3a62a8150f871da950dfdf923cd0d97b153caf99b5219cd4ddda5bd';\n\nexport const TRADEPORT_POOL_REGISTRY_ID = '0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd';\nexport const TRADEPORT_POOL_VERSIONED_ID = '0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676'; \n\nexport const DexConstants = {\n commission: '0x24f5f2258ef80c0a3243088199faeb95ad50516ca1517dbd93be398d759057bb',\n commissionManager: '0xd19a03d4ec3d12b0ce407b54eb676cc0f8e1403621deda77d9677bfcb9d738c1',\n poolsToExclude: [\n '0x3addbbc82866c0bbd93e51b6e2d75c0a4faaf270cc0e281d8f4de5df48bebfa4',\n '0x19d614f421046cae90f5a3a976816063478f648087a12adc74e90ebd54dfaf19',\n '0x514c74e28a9720366abc4a65a5688f47c72e784dbf035844d3f59059bfaed056',\n '0x0854de4e9d64716b757b2f6f22258467f59cc1b4bc0cc64c70086549faaddedf',\n ],\n};\n\nexport const USDC_COIN_TYPE = '0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC';\n\nexport const COLLECTION_IDS_WITH_ZERO_COMMISSION = [\n\t'',\n];\n\nexport const ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0xb9353bccfb7ad87b9195c6956b2ac81551350b104d5bfec9cf0ea6f5c467c6d1';\nexport const STORKS_ORIGIN_BYTE_ALLOW_LIST = '0x2566a35b1703ea3a67dda8a4cd25a77382543a9faad15a1028eaa7592fbcd0ca';\nexport const SUISHI_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0xa9afd6ac0b5a68710992ebc145b9be4e764628dfffebbccb065ed891948f7d7c';\nexport const FUDDIES_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0x1ae174e8e2f238648d5fbef41e2b435b7285e678aa5e2e7db27f1be006ab242c';\nexport const CRYPTOPEDIA_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0x3bbe09ea50c49f58e2c4915bed1b19ffdce43e6a3763be44a4fdd8c5d8cb3f32';\nexport const GNOMES_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0xa830cf84682a597cdf3337bf1917492a0eea78a0135384060d675d4808daa318';\nexport const SACABAM_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0x6ec53faee01f3e193501b84e98a43915228faa2df3f070ef069f57d0ed7601ca';\nexport const SUI_ECOSYSTEM_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0x86f62b145974165fa53a8ac167de61a0fd0f9f7206dc67ac118fb3ac63b80476';\nexport const NOVAGEN_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0x60f94a76423dff7c1f46a1642c937fe754215ab91bcc48110d68c5e9ec29d419';\n\nexport const BLUEMOVE_MARKET_CONFIG_OBJECT = '0x09e24b156b08e7bc5272f9b731e93b80b458f0b79a5195eb81a471d514f1b1b8';\nexport const BLUEMOVE_ROYALTY_COLLECTION_OBJECT = '0xbf471e4f38f76ed88f18e44f3dce2c27e03c1857d51ea17cd9b230b6d69b4bc1';\nexport const BLUEMOVE_CREATOR_CONFIG_OBJECT = '0x6bdeb62b036f5f9c3f0587a0480e6dd75cb4e758660cf30b542c031fa394bb83';\nexport const BLUEMOVE_OFFER_DATA_OBJECT = '0x4a8e6a4634e3dedae00ffe9f065351664ba32d7e9c2d26221a666ca380ea68b9';\nexport const BLUEMOVE_OFFER_COLLECTION_DATA_OBJECT = '0xd1def3ba244a0cb3d248cd3e72078cae869c05b4f03ccc9289998188b1d7b768';\nexport const BLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT = '0x7ffb33136bcf4a69fefd9b962c5e47f9213c79cf4f443dd2a39ab17a1424ba6f';\nexport const BLUEMOVE_KIOSK_OFFER_COLLECTION_DATA_OBJECT = '0xd29edb24787f6b128018de0a2a513cdf63a48f7c256ecad1186cba3c6a45cb55';\nexport const BLUEMOVE_KIOSK_OFFER_COLLECTION_BIDDER_BAG = '0x15708d74504203a9620779583f8e63f2b5a599b28dd3a7d9063ab41e6fb75942';\nexport const BLUEMOVE_CLAIMABLE_CONTRACT_KEYS = ['0xee68a4f9a04b177ef65455c89e4c462ed5a4cd486ecac463407dd80e565c7420', '0xcc97b74ed95c8e8a3ed88050a898727dee37896da579fc400d482b64db6149ff'];\n\nexport const SOUFFL3_MARKETPLACE_OBJECT = '0x0ad62c9d9c5b06b60c1f2e7da6659f7408636c11392651444dfdc5f5930d5dce';\nexport const SOUFFL3_VERSION_OBJECT = '0x2c012a80a7fab8fe025d3d5be531227ccebbaa86d85cb56d09d235b1f3209cef';\nexport const SOUFFL3_EXTENSION_OBJECT = '0xa3e5b249961bae7270af1484687b7d924d6364476119f687564dba0530055e6f';\n\nexport const SOUFFL3_GENERIC_BUY_METHOD_COLLECTIONS = [\n\t'f7ccba9d-04f8-49c4-8e1f-d264b122584d',\n\t'86a437d7-e073-4365-8455-a4f2d983f840',\n\t'd8863069-7281-4809-b66c-30bb80d47967',\n\t'f447de12-64f1-490a-b8e5-636d4e778a61',\n\t'f6cf1905-8378-44c5-98aa-ef6b20d0a527',\n\t'19569440-6dfb-42af-8189-59fff6fa9905',\n];\n\nexport const KEEPSAKE_MARKETPLACE_OBJECT = '0x08f446892306164934c0622388d8220961a9d08bc143888b6c923bb97a179ea8';\nexport const KEEPSAKE_MARKETPLACE_KIOSK = '0xfaf1b99c273737e914da13324ee1191f42346643083892d3f6f09a2d246967e5';\n\nexport const TOCEN_MARKETPLACE_OBJECT = '0xb2b140b2841329320b66f92373a2683af7f9066472233effab03755270bcf65f';\n\nexport const HYPERSPACE_TRANSFER_POLICY = '0xb419035c773d944268d64ef8a271fc52700d9277ad118f24b3de78a37a8bf899';\nexport const HYPERSPACE_MP_TRANSFER_POLICY = '0xc38ba43a611f1571d78bffd3e85e6137d77e30a76f735c93821b24971b82619f';\nexport const HYPERSPACE_TRANSFER_POLICY_TYPE = '0x9a84b6a7914aedd6741e73cc2ca23cbc77e22ed3c5f884c072a51868fedde45b::hyperspace::Hyperspace';\nexport const HYPERSPACE_MP_TRANSFER_POLICY_TYPE = '0x9a84b6a7914aedd6741e73cc2ca23cbc77e22ed3c5f884c072a51868fedde45b::hyperspace_mp::Hyperspace_mp';\n\nexport const NON_KIOSK_LISTING_NONCE_TYPE = '0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::listings::Listing';\n\nexport const ORIGIN_BYTE_BID_NONCE_TYPE = '0x4e0629fa51a62b0c1d7c7b9fc89237ec5b6f630d7798ad3f06d820afb93a995a::bidding::Bid<0x2::sui::SUI>';\nexport const ORIGIN_BYTE_MARKETPLACES = [\n\t'tradeport',\n\t'clutchy',\n\t'bluemove',\n\t'hyperspace',\n\t'somis',\n];\n\nexport const MASC_ROYALTY_DECIMAL_PERCENT = 0.085;\nexport const BASC_ROYALTY_DECIMAL_PERCENT = 0.055;\nexport const DSL_LEGACY_ROYALTY_DECIMAL_PERCENT = 0.05;\n\nexport const PREMIUM_NOMINATOR = 300n;\nexport const PREMIUM_FEE_NOMINATOR = 2500n;\n\n// These are Origin Byte NFT types that are missing sharedobjects.orderbook, so must be traded with our normal non kiosk contract\nexport const ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK = [\n\t'0xc4fc5b341858ac6fff4859d8105e345b195847cd230e8538d61a2f319ae8093c::bluemove_launchpad::GOATsOfSui',\n];\n\nexport const DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE = 'This item has been flagged and marketplace actions are currently disabled by request of the DeLorean team. The owner of this asset violated the terms and conditions of the mint. More details will be provided soon from the DeLorean team.';\n\nexport const DELOREAN_TOKEN_IDS_TO_DISABLE = [\n '0xbce0a70b95c29c32a5eca860d91c516354ab885e78847d873c6adc8586aa1add',\n '0xa8ab7bfe0ebdfc4699d68de87c89310f19bc2722dad8c89bd95a7fc31b789ba6',\n '0x6bdd82e6794c1c5e5aec267586d373a278a0fac6f1fea24d8e9daadb895fa183',\n '0x363dcfff1367ed21aa4f60b5a7fea2282b454a9295b4ae36dbf25beeb6d42eae',\n '0xa433ed00929fd5775130f76c924066f45b3319ce4dd7c7714c3881b867680297',\n '0xdb6e83968d3370b570dc9747fa378d6e4cdf975d342f4e9e8f7c644e442a896d',\n '0x0c9e196f1625e469035c84c221bb5c626c1ece8f9225117993aa30f1f3b8fd29',\n '0xe3b3df2b89073952894524fffe85b00efd94cb8791597781f6afef5ea021ea8e',\n '0x8d3358a151e2a788a73a13abe14252ee7f71eee5086c8eaea95c0991ade57be5',\n '0xeb14a893bbd84da75d83f3ae778512374fc641b97c6259c69c08506083e0d7a1',\n '0xff60c15f8e299c9a7eb68621813396e95ce5908ae2ef8b575c2665a015e8311c',\n '0x89dbdfda4cb3ce2614ca530005ebedf9f3b15715626436aec4d8ee202fd9d575',\n '0xd0214e8a8412ee7430b3c6f4e783077f962261df7462c9ceaafbb63906a344d4',\n '0xe736cd6ef089951e32f733a7830a7d5faa44f937f07cb643ed255029a1a94e39',\n '0x56d0947e2a536b9ddf041630cd4b3a2f862ee6c271f0aee338c3ce3729702e77',\n '0xa1ebd337d0aed1c0e76d0494b01c261a0ed4d10aee5989492b872c125b542eb9',\n '0xd47164e9e13bf49bf8be44d617edc953727c9397066fdf2323acdce3d5d73326',\n '0x15df2eb999cbbd064d4b41c4aa9f1db0219cc0164497330de5cfd0e513b64e43',\n '0x2718ddd5425ce5d535e1362e020ceab4d3164e21ad9d7ff7d28fd13abe05b5eb',\n '0xca9a4c13e805a3cf50e47b7dcbb31b659b3058918ffc86b8b0deddbf84336b7d',\n '0x0b00b83d0b934b1d249a377e99cbda229a0e16d31b7dcb62f86646b469bf0731',\n '0x95d6404f42939e87a82b6fc0a58902eac28ef405239ac9a636d4dda655b2c753',\n '0x5f64bca70e53ab4db2ba453dd6bbc7d5d3185a779a5b26518acce2bef19f6b0f',\n '0x8592c4cdff4b23fbafcfdb8f58083b9549aa4e8352e69395db4f940ca628d283',\n '0x44014456e7c13f86966fe476d1ac5b0c479de2672d7a7515df30a3bc51ef6d88',\n '0x728e31ac3bcb2f78a4b59bf218a592b2373a7ddacdb58db75561434d55d11173',\n '0xb74910950d50dfa531cea5d386962e0a6ce316549ef91a15618791657369280e',\n '0xce6511eb3e1a9d02c2538d38b290295f3146d6a3237a63a5212b5c146766389a',\n '0x84d12657dbedbbc6072390a02b4e703fc037c93774a05424c4fc1cad3a847210',\n '0x8103ef96c4e17c07ebc4e6f93adc6def51580b949548c4ae48796f15160e8bce',\n '0x8b11085e4c2753ebda7040059c6882c41106715e179dd65c9b19423ad5de5c4d',\n '0x1d11e0d3c7cad3e0fac6cb9527c132a3e7c3e98ac897cd04d4dc21193c351a98',\n '0x9fe42f8f7a04e8c706736e28f5614271b7fbcddf2ac5c6aa82aad78bc42cb3e0',\n '0x3972db14f09fe45be286da18c5fe8a6c6b03b3bf758e4881932e46bd74d9f291',\n '0x7902daf1bddec369b041e38c419ca0b03691a6912256024ee78b8d65cb98e086',\n '0xd3dee9f11cbc706c1532a981d23309332523e9986f7cb6011580f8d73deccbab',\n '0xe609027d157dcbc7a728987c555d6323fcb8dc74c329634a407f86340c80f2d2',\n '0x3904e02d35d180afadc79c02a6eeee1ea0f5cf5a66d7b445f92c971a767443c2',\n '0x62790cd98be26917a72919bb07c261b5aed0554766c80f4da81ad57628ec57d0',\n '0xabb4347b3a68331c824a0de07002cceaa5d081c3a0bb419430baa14b5b15baf8',\n '0x49eccabff9d70b52808b9d7c67ef734be2270c0fa89eb0d02b5326055cd4541a',\n '0x325737ff858388795292684d3a704ce357f310588423b44f47fa53e48d0db34d',\n '0x2e498c75ed56303986bada4a3c3e8c81f25762fac9f6b4ff417559f8e8d544e9',\n '0x4b307f9c5941a0281ec33e9254f1a6083157f342f1f4da378fe49d2a1d19f750',\n '0x7a291a9249e7081282a8e8f5dd024941dd9ba7cf22543646f690b77bc2c4f4c0',\n '0xe8970fab1a085c079ccdeae34f3ddebb85fe2f7cdfff746b8f9b3157add5ebfc',\n '0x0c4c376b2ed85fd3928df9ebdf20588f6c98f30f2c5411961432d4e4dc92dbe5',\n '0x61c4f0d5491819e2641f9e58dc37a9181d5be4d0401227afae103013d564fe28',\n '0xe111d6163b7fdefeb6bb6c86c44e8832fccf2ad5aca7567d129e21d9b9cc2fa8',\n '0x72417177be3dcf1be8f8e99bbe4bc022548fac4fdf06025a26963dd2ab3960ed',\n '0x8c52f340e104778aa3affa1b7a914539072c3bc8b1b67fa719cde76a6d2290bd',\n '0x68011f6843901823151e2c8a130c025bf3b3908f568636813c176991dc4e2640',\n '0x8df4c246bf411a2526f565d6efdbd53a88f22c0bd0ca6d385e3cbc2de6f775c7',\n '0x53a30def71432cda01a92dfeb2495922a33499bba989c9e5a245b0d669a2483b',\n '0x3c1bda820cb03c6d8d5f896a4295bd1730587ab44cefd54414c105ffd1cefaa9',\n '0xf2f861deec9a2c9084fbdf77c3cdd4b26425609a904d2b5beffc53006dc64d9d',\n '0xc90560ece000cba3d4f6fb8d817cd54befe19067e2aa343f2a4ee285294ee181',\n '0x51e0981dbc7f47e81ed8fca9257d0cfbd3b2af998206ef91936aa4e3277a7576',\n '0xe75de817180ceb7cb63b8aa40a443aba91d2f4fba09772c346ef12008aca5cbf',\n '0x9086cb240098436cd0dc345f582d0cb685e261e014a0cec61d3d9ce83e57fc8b',\n '0x937cdabbb081307f49740e7fed9d52964319bbdf60948483525c145b98d637db',\n '0x6ae4e1678940dbbafe87506a7882398e7996ec3a936b7b72efc8e942aa93ae86',\n '0x27e679fdae07ce2475d6a520ed88a91708112138a4807d92e58c59e50f7834e7',\n '0xa3ff917aba5245ae22fc3b34ae05067c3e25aeb3a44fbd0e8a4de63664be2c35',\n '0x2d8f60dcacbdb1ed3d396b8aff970797b77f8188a7c6b7d4e41792a59085d17e',\n '0xa59db4f1157833f516063b4b2dce909e05adecc3c65e5ccebb1727b61bdbcd5a',\n '0xfe36e9d4055f07f5de4ab42d7dcd94b1757e72fefc08b3c2ab7c85a1cf8a3c5c',\n '0x4c013c74c7eb56bba4568a889f50c9137945a5565af50070199ca167c6f09d77',\n '0xb7db7a73f2eb594747c6d8603268ba3e81dce344bc067247871c78f3db754fb1',\n '0x16ad400d04072c308be9ca778c0a48367e6a579c030dca33bf8d54228ba52241',\n '0xa886a3730d4d89affdee05440078dbc03c82880d375b4c462f8d416d4f590b2b',\n '0x987f4651d7613c2bab9edd1256e303f0d0c4c20f3df27375866a3f4ce50c8359',\n '0xf17a8d605bd0b348b56dc1ad57d391ce8f0facf853ef7cae2ffb93e94b344da8',\n '0x72dce7baa0fd144c0afb39a950e6ec2e4e51a623ebe372b584987d9b27fde4b3',\n '0x4b09845c266bed47ac5c0cfcb0bb2f5be87318534b07aaa93e2173a2a70cfa14',\n '0x55ac36673ee1b37f33d1697c69e3e59c87c7c0a6a8497c004c420123c672eae0',\n '0xaf3ee6b8f066a781c92798abdc2e3d9f97a4dbe01af208bdf293fe589494500c',\n '0x4ee4a8c669721f15c636d6899a49b5324552a85b6f999d88c42bf92220e305bd',\n '0xc8ea5d6a39790c63d43db1dd4c33f68e287c0fc010784f0533d338a914044540',\n '0x40d1e8a3e9a26497c0d251244503df1c94879f214f2fe5c0432ed2807e2273ab',\n '0x9d58d918cac59cc704e6291edb36fe3ac627baa3cad9047680a3c2dcc0035532',\n '0x647eb1c440e099335f5917a4731f4e884aecd03f7b7e7d08043eab1720819bfb',\n '0x1f80e114c2f68b57030564c49071a2da90dc784d1817597496755b5a43336be6',\n '0x0907ec368cbcb78a279797971da18a15852d7b66a01e9df680b7a45dcadea0d8',\n '0xcb83034de192eb28ba67187fa2c2dcb42599fc7ca43812b5933e5987d473fae7',\n '0x63f2efd2fdac4b13940c7f17515f6377aa5ee1d0e8db39fe84c353a52645fc94',\n '0x4c0d2db0f95a86e895340446de8fc474d70f25f6d0025c06930967ef1a03e6e4',\n '0x768d6d6cf02971287da8987b9908129931a0494cc91371c01782ef6bf2f59ba8',\n '0xc3ae8e3471a0bad4b6c5a85924857da174d0557ff7ebcd424460c5f79a26f4d8',\n '0xfbc36ea7a8a8b2e076cac88ae6159505b0402e559927d3cd0bace4abbb2c6ca4',\n '0x660b25cc02ebe9f8b9a1bafe3c44fbb245b1f25f8f833d2932c1f668b4b16646',\n '0xb54511a062af7b265f07086b66cf00ec33972923e1fce91829f88d54da0db918',\n '0xe05db949851e86a4da82fcda57e20c27f7bed634cb9f30d4c98a9c7a9ed6d34b',\n '0x501a02a8cc35db3ab93b7109d92162b20054000e4f3ed060448344c063ad6e23',\n '0x4be332fc5e4edd5ed7023b210186588a3f056a41bc4e99a91989538c024e5319',\n '0x28ebd56bfd5c16d15ea7c0fdc3850963c3df46a291115d69bc454e3bb122ebee',\n '0x5147f22bb24e2b65e96c5c6d77ff2fc4817929a7a70b0ea352064beace82ab5e',\n '0x97693f71ef0b03ec4db319c0675767444786f88edd42576a37516d720221d0ef',\n '0x018a6a61d6be8e246e6ccf6c430958e3876f9e1a7ae0cf11a126983697ea480e',\n '0xbdf48b189d2697121293a32e38bb31c26996dbf97d31250511acafe77dad6fbe',\n '0x663208948946abad72f92a4b20548ff96cfeeb28c9d6dd255991a1eac930b6a5',\n '0x6f46e790d814f33ae926521d1404c59f062e99f97777bba0b8e3cb0b6a14885f',\n '0xd0e83ca4fb48f6de3e2a60f6e047a6c6eedd3d8f2b22e1c34fae0f1d51289451',\n '0x2280032c988a483d21cf968c79237fc774acf21e5bedd49872b57a561fd134e3',\n '0x3e56d5927bfc7461667ab4fb3243d5a39590658caebbe34e9b68be162af079fe',\n '0xf7302ed57ef1a681a47ecaad1373057cb49f76637b71814e2663f0d854b1a71e',\n '0x807c8f21ea10e0bbc74c3e3ceeaa35ef1bd46b9a48d25da7e71780757002a132',\n '0x7b95f121a82388ffd2c1d1e9f92e43f0efb2032e02ec46849ffa408905630c2d',\n '0x119f8976dd0c1d839d9dfc205c746cdacdeb7d7d5035e560b4e5b6065ddbdea6',\n '0xbfe621e8641d0277a42f8e598e737249343f7cc5343a8e4f2e73756c536ff60b',\n '0x1338059ecbaee7ff6e52a352629580b83a801a308e34750a3aed8e928b98fde2',\n '0xf20bfd18d4f6095bb138efc54563550a6fa8cd4f63fbc4f77b21f00db069d625',\n '0x3dfe42a4889ee8212a3fcce7b82ad3877de5a7bf467d8115e7d8f7b006ad3264',\n '0x52506161dec7c9a89002fae888da8fac4f8274d4f8c3c8317f56b1f2896faf6c',\n '0xb4d381f3ad260d9dca6fcd3fd59dc477e406b26b33c659b522fd6e2568dba8bc',\n '0x954dc5ffeaae24abd4d14af398d29c1b6e3f354321940e5fedd51f5cf2ff67a3',\n '0x907f729347744467af5476e00644d16ac7d446c4cd1f5e28d84fb723f681f61d',\n '0xd5fd521460a0d76318c8620a630836eef68af7593f1c039b15befe96a7ee788c',\n '0x1128552e0b1dcb2d40137ae1ed47f506e7b888d946cca72a21a919b49865bf79',\n '0x1ab20d70a9953aea475f1ca1e7b7064f82971b10c91473a6e2632baa20951b50',\n '0xb5d4cd2d46f61d145e8603b5ee5e9248904a81bc496bfc39dcf335825ec5b3ed',\n '0x17df253e69f700c99e6756b3d1466722692332f4ca98d5490fa5af2ae0d0e221',\n '0xc38af99ab6aaafa57aa2564ca393ae03eecae4a5954b7613a45b559b090f418e',\n '0xec8e46215373fa311d6a9d0719f7ccb8de0f0eb94d4721e96c8abb9161c9f733',\n '0x587ec94337ddd50c5a71dafae69e7f589a2a44c783a612571ec1fe826e4e6d1d',\n '0xb155e120393f059a07cf8e42c976c02a1deaaa0ec82baa7ce26ba919758af908',\n '0xa1893de6dff8cacbd90ec8ef4f764abf51b7728de594624f335fe39868d1ce97',\n '0xc9b1f64d0b41b34727ab3539534303085d767f2c4934b00aaf42f9919d0bdee1',\n '0x0fb41350798af8d368ec77bc99217cc4d9020f163388785114251dc0ededf946',\n '0xa230bf985b21cdd452044bc4252f62a77d14433dc8fd838ba144784d8bca0177',\n '0xf088a2cf90df306a843b1f70d400d1ac82c2e8e1462cd4950f62b03a38963825',\n '0x58942ef6beb508c7b884ab1cdfcb656df091b059bfc2b3b372463a55e8e7dbc3',\n '0x98a357dccc064d1892fd31564bd110e1a6b54ce7c3bfbec4717a7d5948248f96',\n '0x6f4393ec36f0b2fda158ce9357c413311e23e6edb46cf485ab5d58cd058b61fb',\n '0x91a67fc30c327c2b5ecd4459401c0ed30aab73ac2b89ca8ff5db2b413ce1802c',\n '0xa8566e1751c5994ecd7e7ecaa4ed40ffc4cd4f1517a61e049b202b6ef84f2e32',\n '0x05e50a9b9c5bd758def400b3b589426365a417339ca663e69c1630a9e2ed2f94',\n '0x73676e61c48e5d8248879f18ceaa9938d16317f735064e3fdfb7fdfe0c9a4630',\n '0xa128092de09511c0112c5f891557b095d1e44c056a79199e6059fb2461b73071',\n '0xe8ca4ca729c922f0b3ab32ba7b9a4d1a4eb7adde9a6aa4b2292bfbf17628440b',\n '0xda1ccf3748309a16cd1535d04623bf716bb65e80dcdfd56fd28f689ae212aa17',\n '0xc01e315a14726dd6fc3355f7a2d8dbcddc3683409f9e4a0d98128b37df1cdd04',\n '0x3788271ab0fe7934ece5638f7dd7d7d6f5412443f7ce26a363b880d910526eda',\n '0xa2a29cbda59df7a72fde8c0ea749c4e28bc9e57b409737cd4c5b12de91b3e08b',\n '0x9e5c861429b030dfbdd2b8b3398bf189e6f5e695396c042b26b64f0ad45d2b8f',\n '0x47448dd1a0a87ef3375a2a98750cd5a927a1e172f84df564550d2eebc859b522',\n '0x85a50f2aa054b93e21a2348f28a9cc746504a13f4a5c17ad92a33eb32a0b5ffe',\n '0x6b5a9d25024188b70b7887c7094bbe1fde7454b6c4d1728faf0ec504ee5cf03b',\n '0xb1e8495a4f7401a0d74da7361dc9eeb30e0b9c9551c2eba2da866e2ba12a462d',\n '0x434e75a93834476f5976951648f2f0c8abad4f96c013a7b5b22292eaf79dae69',\n '0x2d8a873828ab5fa4213eb0a01549e12ebd0801b607519de74ab23cae7a05df0b',\n '0xaa63079907135e1baa8e7a40a5662efb2e18cc049a6a0821780462bca207fdcd',\n '0x5a6c90a4ede56aedacdb30402bce3cf392e18cf81c3a67c7e10207da45927688',\n '0x5f600de11f2b77edfd336213ae0fd2aa9aa16ec558c7c058684348c729baf16e',\n '0x158baab56194274cbdebd359a8e112e551ea85368ab36fcd9cb347b85ee9dcf0',\n '0x634ae1325376703148dcb8160715935ecb3a3e38982cf278d764b923620e238e',\n '0x2ff923220294c926011cec40ee0f21524b5bc7a9e4d75b639471b84ba4e8abf9',\n '0x275a024de15165b3db95e57d510f7920a1340cb451eb6f0626a8e0203faac5a2',\n '0x4a920c4a24ae41aacb03f378ef9a39284996d2fd56537234bcb4d69949b89871',\n '0xc367d6b82c5c6fb9198c8253f2cca532ef36cda02b691388d59999eefd4c4b82',\n '0x87de514d3827b0f61a25053ab411d37b5868e0e5ff7ee2d17679e2e96849a081',\n '0xd4084055eaa2fdf21401c1c7a7549b295a0546ebf86fabb30696f754b1e98acc',\n '0x22414d8b1a4f222623ed8be2fdbac1b8d211499f7a7e12aa9121264ac7bf4d8d',\n '0x5083bd5702f932c7c07ed07e8e0b57ae32cf0e10a34db4d3e09eeccfa74c151b',\n '0x245fbade16661e5f8b36a05d60f421537c64ed6a49acf9e8dcc71582c3f6c61c',\n '0x90c44eaa3214832f34573b1f212838bf2e1cda8296b89baaec017d453527cb74',\n '0x372ec076a8029839fb7aa3a2f05d1e288296d8e06841c940e200ebdaba93d218',\n '0x6126e1ce62e27ee2163290bd3d67f1921f5f0fa23b2c4a9619a0a971be0b6d99',\n '0xbd30976d67e0417fa56616ddf82de306b1427fc86f9f55e3b86e35cf109b2bfc',\n '0xeafcd26f530ba32b3150f5f23d096227b1121ce2c5bbbd77173dd9f0b0d3cf7b',\n '0x14a8160aa1fec8f8e6132dd543e13ec50f422199984965847881b825eac783a9',\n '0x5fd4e927bf4aac9ecd9a0c44c5ad445a8341a7c4f4347a36f8db7fefe1353749',\n '0x10cc841a8b20affb70a76c0a5216497274fa7b424671fba8d4f0f0967107f07e',\n '0x0e7fc40e5db8ecf0d5622264e4b616fe0272bfd45a32dfff87ecb4c0019543c9',\n '0x5248630214935a33f9da4bc585875ff49103e8fe8f84c1fe2d9eb2d48491a605',\n '0x4c8df042363a14c76b1f8c8bafb0a9cb416e895b06e4cde99fed188f0ed451e4',\n '0xd9ce80947bf628f214acceeea41f01a9830b8199d81ae78a5aea5a2e8d2b2c9f',\n '0x1f2d2018e4d2c774d50406da403a80db98e685d4b9ea6ae91062ffb127b34329',\n '0x8afd7cbfd05544548f24171efcd60863766c3d1a9943548c041a0b067c37d770',\n '0x0bf88b38a3d4b94a4bf606200b6b33cd98977c0cd534be640f9dd94c8b329db9',\n '0x426c05006485c8fd85cb0dc5089c164e2e005b4b419dcf22c8763d0fb5dae02e',\n '0xc30bd037df0365934159c4b68b456dd54a99865fb7141ebdb588997f767da6f5',\n '0x64a542488db9fd5ea3b2dd99c2d6211d80f853da0de3d1cc73398ff58404c85a',\n '0x7562084d4d3b9c8d4582a06712fe7d11b6faf104fd7f44fd90ff4dbf69c1672d',\n '0xfcb14c1bff53813e347f3d26ab70389408e116ebff917d858799094f7b561ee7',\n '0x5177afeded36dbb400c110ae477d9e3f14fe36fb8af0bbc400852fbc29ab1eaf',\n '0x343257c88c5f0cd0fea350f93db09f3a279b504ba985a9a5d3c5abfe1b5acf19',\n '0xfb14278d6979d2d4f6e154dcd452698b77eff73702209dc7570ed222e6f80393',\n '0x250c2d9567c19e955ea7c67ead79952beeb013bb6bfc8f4fc4e0014bbf122efa',\n '0x8ae912e14de3ceb370110616e0ab2fbc062f59308e56acf197aaf9d8741e69e4',\n '0xe833d7d90e6a98cfcd441a8cebff13a64a445f0caa63378e2ea0e6b2da4b9bd0',\n '0x7490a72ee08cb08f2373cc8fe0dab8090bf9baf3868b05b57b1adbaecd5932bf',\n '0x62bbb14e92718efa3dd56ba14b58ec79126c938fbe2845777ad1d3e79e7915c1',\n '0x0dae3fd68df5c6c7413a5017e44e53eac385ba2405c00e3e3748f928d2c67aab',\n '0x8bb74336159266fa5b8886367abc33a8daf329e5d753a04f40e2053bc208084e',\n '0xbea7e27116aba2d8408c23082c24f3c662f162a050004bd192166db084be26e6',\n '0xa81f41d10a07cd9f2fe11c277cac7c7751e326e9d147823f0775b76d7bcc89da',\n '0xd42444ecdfc499311039c2d81d46ecc8564ca5dc32c6ab25d15663a11e78c0f0',\n '0x42043b3f35f11fb47de1d8b6cfbb11e5f07ce87bc107ebf151dd8a174f73725a',\n '0xd2b60106c6b0fa9130e2d662e326b4a54830c829192f78efef42969a5249fab0',\n '0xfef03df148d094f2cf331039177da065310a102be49b4ca19ec9a1e68d53e6f0',\n '0x5d8ec1adae50369d37fc4124b5d7cd444a388e7e8a7b3947db804f8f77bff9b4',\n '0x9b3a4bcfc044cf9c080bb25ad1f7dc234acdc46a4df5080cb64ea3e7d66d7c24',\n '0xfaa5b940e0193b9cf6aac007e895edcd33e05c918e771e5514404bbdc863c704',\n '0x5c0c66263f5ca27dfd6b1febe117beeab4757258d4ac38dc04fa36ee7b1f71cc',\n '0x4f5805c71784d601dc019a2aaceed3d72a763916c0e72556e90f39f2684e9e9b',\n '0x4c4c5686f648b8c0c3dccccd1e803db27f40038047f04578aaeef97e30c15625',\n '0x476a26c32a8dd154a0f117b101af7eb411135dbb148056c7d969434f68fbc6ed',\n '0x38ad9228ab733418a84b06255573f89137c23cb9a6ba400c85931e17ea503414',\n '0x6ee172fd8c75725143fb0d0259b917fd838d209cc1f7bf0a30f40af590b7c099',\n '0xc8c00613991bc55aa4d1ddca1ac1ae317162822ad689952f1bdb62e3869588b3',\n '0x75ccc780b807afec6f84d4923c2faa5aafe4ca247987b552c8f7381d4b90a83b',\n '0xd063f89dff6fffc855fefc6cef53c200bcc018f9c9674c8abae29249bddbce71',\n '0x3058530c6d9a981e093208044caba3aad6a6d1e9bbb2ce02777bdb058eba0267',\n '0x63bd20e89dd9076314c97281fd47c90955e4802c52bcd3790524b27c99e20b0e',\n '0xe0050e91d33dd86ff727d8cd573ed87427e91bb0425366462871a019e4b21b20',\n '0x17873134f9be096948c8deef1b74934365979c92e26fa288eec26deefdafc3a1',\n '0x46b10ba22978340edcd78a2381bf17009274489abde6080da3f6358c56938864',\n '0xd86e13490e688062f69fdf191538c399641f1435fbf44fca791ed7b662ec0d5c',\n '0x30926f686c3c6776cdc7abeffa89cdc84a33781f4ca4a47c13738e193fca6a72',\n '0xedf0d3ad9a6bfac58de86d8c660eec7bc4a1075e4be9ad184cbaaac4f9800451',\n '0xccac603bc320293c77eb7177f114c2de4c1eb0bb4d3c67389f82d8cab8d0f5a6',\n '0x046d7a36721207d867230a8b3e1386d6553e0142911a90f2a2cdb3925d32d72d',\n '0x58464fcc0a522633907a0f08ac254d4bf742f9e59eac8629a85804fce86862f3',\n '0xeecbbf1d8ead7e281b7a614bcf18e45853a81b4f22d99c326b60affb738a00f2',\n '0xffc41d3caa2637a37414de3f2527a802e50092f266bc20a6d4f9377985a59e87',\n '0x4dfcc8ce6b5db653b8f5ec9a37b318b8f0646ad1eb15b19241e8439135cd46a5',\n '0x1f8b65bbffa0877dfcc0692178a48ae3918f11aa596b46813246e8df08a9b72b',\n '0x3d8458512576ed6e85d032b08d540e2486a534f1225e8a9f8815e0737d631b4b',\n '0x508f2477be06a5fd9bbd5caa92788265316ee2c77f9e7d43ba1a63653dd51bf3',\n '0x7814f5edc2f65d0ae52d198712f4499e1aa366cee2c56a44835377bacb1215f0',\n '0x9edc2cb6e58670390800d0b8e88a04ae1e3e39bee841f32c7b83c45c33a3ddea',\n '0x433a43d4f4cd5475427606230a5345554216628c12eb7c539e0f2e21d71005b9',\n '0x6b526e4aae1461b9c43252bbce29ff8f2ad7be4990ab3406a3a18f99cb92616f',\n '0x4bdc598ab91fdb61b726836b1592488c434b94011814718fb662e0ebeff5fdce',\n '0xb38dadd6c2a985cd2a0664d1a21c4ceabc1f8331550254e8215136217ca574be',\n '0xd3f56ed8980a9affbac4a423b411a391fb5045e25a8ea0a355dd06fe2c58ff34',\n '0x3a471ffa303fd75fc244cd7d0ebad98384672c1d9ccd371b7eba00bcf43acb15',\n '0xd91708b0324d4221a003a0bbe2b1ebbb3b54857de2af5ca2a1fac0a383342ee7',\n '0x80993433296e605b4038885d5fdc9654b459bd69e03856d70c7c0622f669bbf7',\n '0xb44616e2e0cb30d46216f21874b648bec9723b58b594233285a3d944bb8a7393',\n '0xbcdfb5d8cfd0cee0df04c14705d1c80352dbc074ac2cbdc9ca60201ba8351a14',\n '0x07d2d60989f0c791bd6627b64bbadaa9407af5c9c2335d8ee2b36ddd0699534a',\n '0xe19eabdc03246540504f89da03c42f1b57f77f10767c292ccf3cda1b671c2f5d',\n '0xdeac30341972a9aad70c7a16927bc52d1804bacba4ce49f6fd562d4054e574ed',\n '0x6419f5e18db5b1dadf89665d1b812c37f4ac322effb3cc18bf4d53ab8ffbd48c',\n '0xfd464a6a85ac99851c44b9e06cd8ba347f4c6c609343d0255fc8d5215edaf1a5',\n '0x88ed539777fdf6c749198bdbc410affdb9e39ead51a67db583ea066ee0530a57',\n '0x717eae74cd594630595e54882735163622ef5cd7867cd9691a5e9ce13907d829',\n '0x1e8860ac3c8708757d6d81b809159ac9d22b3fa60de9ac96866ebe1ef3249ef9',\n '0x58f7349c1fdd1baca40815cfef98e4631cb1e9076dacb6c51c2108d08ff6739f',\n '0x62f2d920e8cb88d68fa6549acf484ffe8d8e92452913eca4fbdec7d282b39dfb',\n '0x560899a3a7e9d3daf4e1ec779e98b2b65ce07770d2020cc32cb8da77a8ff383c',\n '0x527d087a91429782960feb9e92a41d8941f0ad3d55758893c86a9eb3bbc30c1f',\n '0xccefe1a372d5d6a71cb226321ffbaad1848df7a5c615e2bf344883b914aa7ce2',\n '0x66e72d2a21a5a2dcdc0ec0095f1c7791669b04b308a2679b5e733521ed4f514a',\n '0xd29a276da8309c5655143a32423db30440709d3e9df3a61c132167345651d137',\n '0x614135255bc987ee2def9430869db222f84a095517564257c001e24b46cfe252',\n '0x0f23cadbf61ac08513721d0eaae1078e95719dbf0f57eaa04a5f87c2a48d18c1',\n '0xfea00e82a33b0550d3d0831a6cb739225b2e14ef585b360cef308b6691c476c9',\n '0x196716a3c247324edd2d8a9b42ea075c27c3f4a94522a9c6172066c654c4564e',\n '0xa03c0e38011c43cd8577bda823dba15426256490d68c367a84051e9d7844db39',\n '0x7e03ef482851db6fd145428011bb5ea79d67913b8e66bcaff7cd1525c991e3e2',\n '0x856acc1458f67323a040b4f5f93af07baf535533edc659f738062ba6910c3ea2',\n '0x89af4e2c4a6f7dbfb0a8214bd00816aac85dc620ad5b33f8de4793ca431ebebb',\n '0x8eaf593c5ef88cde1adef27bd57a7e8d64ba03f44eb1fc591ff6fde3535c7b6f',\n '0x042f2c0b9e2438e9b67576c10ea62618f3a98ff678c430d5a176718370e381e3',\n '0x4d74f210c4527ca6b81ab5c0e633247c151aa13d9ef676d88575275cf7469736',\n '0x6b113d522e53bc3c1a9ee3c157e06ab2eee9244343f32cf537aa840989b01480',\n '0x12dccaa096058b065cc6f6a7b88a011cbf11431cd0898a5a79dd9eeecc6c7e0c',\n '0xdf19ba6a4c475043c8a3f46dbc0933144cd9e1efcedab7cfaffaed94ec72b69e',\n '0xfa047ce603838a3d3fe56ce51c8fca2cc5c6603e020f5111bdc6d154b9326748',\n '0x8dfeb9fd2ec81c5108d8b7353e09b3c4ec91e2e817003f6498bcdb762c976ed2',\n '0x8c30d75bf7abe08d2ef61b069488ba6528663d65bf20849f6ea40fbfefc0525b',\n '0x3c8eae2051838ae034e077942644d3e215f370217138b04551a6aa604c119402',\n '0xf05a01cd5d7cbf6af896eb745a30407f0c4f20db7440448c1f4bbd10782312ac',\n '0x962249629644979a9086f616a36592795d223af7ae929a02855494ecb720f47f',\n '0xf02aeb27219488d7b101f49bab75bcc70b9a26b53793648f6aead67fc9ab937e',\n '0xd981f92b9a20be78330748264abdc8ecce2574c0aa41a6def5106b112a10ac8c',\n '0xd4925729eee3d15b941f8e36e1aa7cb4009bbdc6c324f2278f0c3d414768415d',\n '0xce6deaa30ce60df391d355cd4be57867f97e88efda7c96cddca71a9e3202fa32',\n '0xccbcca4e54d8754a6fdf1a33f370f5230cbf3dd6618de116175d4a30465fce44',\n '0xd2700b068b8edf25e45415be1a39ff65f237d1fd031644eeca490b680df06306',\n '0xc077c06981f089af1111e84e4277b80dd293911a2878311f965a0ac8ad114cd5',\n '0x66f6a61cd8d4afecc760002a6e9a019ba0c459f2ea316dd9b2174074a1a845df',\n '0x9a2a97dcec3d124159f405d844bba7b471ea0e37b1ceb12fa4a69e304ed71fe8',\n '0xfd0b0e875378405fedc004e201780c851a80f7f7abb6cfd7a95829f728517abd',\n '0x4c9028bfe4a52c26257afc159aff13f88aaee9091c01f1861882da6b1bbbe00b',\n '0x32c3561fc04450330ca1fc342df2b02502fffd00003428dee29cbfb74b73b012',\n '0x2f48f4753a2aedd92bde144efa6d9c3420c2885d0791bf5aa6cbc9d2bc54f72c',\n '0x726e828675c98ad26720dc27c37ceaaf7fad5cfbb9c81d646e3dfcb28e3e2e90',\n '0x4c41db464a8b54e10933c87dfa7351deeff8a20efb3e5533f2bae43cc30e36ce',\n '0x61f823bd25c30ebc5559d0c4d9e4d3b7a1259e3742d4605d1f65880ebab19097',\n '0xb010886829a8245adea9b0c0f4cc655e948416ef9218cf20ac2c5ff18f980ac0',\n '0xdbf9781579164032edc12d4b6cb6998884f3e503a7babd4262f129379782f445',\n '0x8091ea7415645d585f1f7e8e210790ec63e9fd7af07973031cc49e33acc8add5',\n '0xe835314a7a112a5737ed28d4787f40f0aace78efc98a9ca7356dbafea3c9b32c',\n '0x09bbead33093101a973a81ff776986d551da006558d7c9efe47cd69b673047dd',\n '0x09684e5a398391b3e4a5d3b231b204460ae5f8e60a98a11b1c80962a705e3423',\n '0xe53791eb98d89f78e4009398e70db4ca23f4563a0c1bc010031ae0613d9970f3',\n '0xe7786439c9fa4f6cad195440ab7a28119e02eae81ee9803cddf4c1338d9bd258',\n '0x20cf0554c3faafb5d54a77a3ae03acf1266f88f965b6b516312ffc7bc7adc82b',\n '0xf330ccdad53d50f06a1399dad2a38ee0ca56beeb9580132de4b90a05c7470d04',\n '0x57b4ce423316ef58e0bf94ae45eb8f1e00b64468dfb783b0f3db7cd6d1503514',\n '0xe090573a8177062ac8c5bc51e5e8ffcf0d3b0bc74dfc1c3ff67f8b74790fe29f',\n '0x71c25a93dd702e26fedd4354875ea820916fc67e94462004552427015c34e2e5',\n '0xfe88a94b74fac09442063b5fb85771ff7b27b28918c5f11384425fde9313d225',\n '0x8c81e31b6a4e630ae2468d2b5addce332915495f9a3044db00669fe29ad0bfb0',\n '0xddd6e2be8750d6ee72ba17e818377dacaa32bed16fd7ad50e9e6e095cc87a2ee',\n '0x2f2f907eed0234c45073d49367761d7e6e122faa7cc0503d9b02f2ab2b00d9f5',\n '0x9f6187e95f4b5db1417eeb1abaa5e49584c2255c2e4c56eb7920ba12c3c4d794',\n '0xa7334991bd83c017450088d370a22f289da28c82614444b661924b7d1d12ec89',\n '0x4c0d2db0f95a86e895340446de8fc474d70f25f6d0025c06930967ef1a03e6e4',\n '0xedf62d0974d7fccadc82a29883e1ea16e56aad0e967a357354d05857a15aa6ef',\n '0xa9b7ced54bbc840cfed0041016569d05b750bf4f2c9e9dfc187e1a1a9aa245a0',\n '0x6ac6103247843aae730e8142a68318a63ce5bf4fa47aab1765224ec654276849',\n '0x1c0a0adc598141bdb2560e7d3634fd7586c49a0e492f2ebf327dab7c67373962',\n '0x297ce340f4af13c2cf8f830bbb8814ce3908bd81ea28426a18579baef185b7b8',\n '0xf903698907b886582d137488fe32cc78d0479407105ea9449eb59d2105797f50',\n '0xe33f6419651654f6235d8dbf1b50eabda59f65daa91ebdcbc71e52424b9f0793',\n '0x2703252b494ee3e6a344b02ec635c7eb306bcbe2a83dfeef258aa69767af2567',\n '0x7b5aedecad8632d10088b930b5a9eabf26605962267eddd86331859cba4a8346',\n '0xfb8884d0aeda803da24ba652c77629f4c1e97769a9fe41a113e6972d1402c9df',\n '0xed3f3aa4f06dac3d5a549e2a80c727d6584e2e234180eb9dfddb6888a0afcbb8',\n '0x829257ec0e6215ff9c605cc9dd998fe649923f3205ec23ee510a9e3add054f3a',\n '0x475d7797de3dabb680c82159fe5a788b17903cd9b0eaccee591602665532fe3b',\n '0x68bc424935b38c162ca051be5233affaeceb89ee1282c8ff30afcf9e0c1e524b',\n '0x06df92296b2f5c200b4d0830dfd8c5eb1328a7f9739de667e49078ddbdf717fc',\n '0xa04b134a81a293bf4cd33b403b6a6f06a26253d9f19c8059c5fa3ace3cdc09b3',\n '0xf0fdf3f8da695a2ab324ae523b14e1aa1fb526d0e14536510a7d85688c1bc282',\n '0x5e461459c42a70ed9d7f15a75ad18b3e871f60ce4d4a089b44b706ea6d068f58',\n '0xf1307f722727b541eb50b2c1dc00bcfb7db7873c98b37ebd2605441286891e57',\n '0x035fa1363e084db05ba6368ecc818ca689db1bf6fe86d15445fcea39f210a6c2',\n '0xaac09c559440134bd86d64a1ebf4a450f35343b558e7f1911dd181f809f9a25d',\n '0x594183aa0f899355a4a12fab2920ec78024e910c3e70f8a037932f3a6c0c7e1a',\n '0x8651cde8b7f81c2031efa365ed01f95b6a55afd066e0afb6af1b9327226533cd',\n '0x6823b9a249a13318810809fe055715c2824eaace594967539f41d8b4813d457f',\n '0x14d83812296b22f7f89e522f4d280949997f81993af75ccfc446e53aa49efbd1',\n '0xb2bcbf5af730e34f3735d182b4b4d04e6c68cf5507dce1b7c6092dc69bf84829',\n '0x48096c39e1b3156b5630e9513c7db166c1faa833297b602f228f8be01d43c454',\n '0xbd54b974f9ee802e904f1f3c11e97b0f811cb28c342c1c0cb592086e2738d4b4',\n '0x08f02df481cf93e1661bbce8d579bda62d380f510d4514444587323fc0339380',\n '0x2d5d8e24bfbb61e3173c6c87cb550283751276f8626ce7eb6fee8af70fd8655a',\n '0x2d3d6acf0de87cb9750f2eb631ee72e71f4cc9ba0f03ccb01fadaaac068f41c8',\n '0x21eb5f97845b28f4692be1f26acdb2af1e27b2a9d839081adcb455777799b364',\n '0xea475e9344ac4cd30a0b3ec57dfdf95e2e3ec0080b9fbcd056ab2bb9eca038b3',\n '0x31959ab1c65439f762a9670e4506f22d4c3ea8db25d61ea63b4b84fedf44c56f',\n '0xc3257efab3bec080145e1f0bd356c5538a070ddf7e877d119c131cb2f45f6d7d',\n '0x996d6454c0cda311ffc8f616c132ab73b0c02c358cb72fa235db41fb7430a3ab',\n '0xda5ceb35bfa5ed50e963cc133228da9e5e6d8b337c4ecfc1626526bf64e8eec5',\n '0xa1ec4558322acf7ee5c72a2425b4461b7e1f2a7172166ffe9ae0dc10b06724d0',\n '0x95943da7453aeffb2eb753e5d7c8abaae3556445892934ab4d10afc64c2cbc45',\n '0x00629e77f4a7b805e2d9772847aac861dbfa9805671bda2150024a4509315ed9',\n '0x83d73d6833c1169393462a7490655360d3f90a9fe29dc6e9a6b47839d598dd0c',\n '0xabce4bc31be834fe7613df5c124dbdac49532572c99212b042229801a9f5bbc9',\n '0x3fbeb0042dce817d31c841a212ed40b573f9be150923ee8ee557273f87962005',\n '0x8c5d239a7de851bb7b5a1a6735b67879ccd16ac4438c70416568d696061716c7',\n '0xd64fc670cf2df8f2fa8792c6639ff0e1c6cfbef09da9d487aa2bf94ee4b56abe',\n '0x0c6f45c71a65ecf312949469d890d464a25c253cb3c71ef705c41e90feed4c1e',\n '0x0b04935c6ba4aa6c58d86c7cbc0cb389d380b57b238065a5f6a7565391b86210',\n '0xe59ddf88b1e3da8eef2525970fb71328e45eb5d8854ef5154a9be983d2cd47cc',\n '0x5b37ce7712457278dec584ce6b4cc521aba5f5f651afafc7aa6167dd70dfedd4',\n '0xf4129202c897f55091a1998d231ad805d7013bd6c79d6499ab0aaef592c44766',\n '0x1d048c913a3b89f5a33b0e2d94af3397e7943037535c9376cd6fef6aab8c0bc5',\n '0xda35c4e6b532fa4ed5c671fda695ea23bea02cc5d80fa066e552144802636d9c',\n '0x78bb1039192657b64940eee59c4dc980abf43a8525706bacaaa93d030c090301',\n '0xb71354c01c2802f54ff77ca0132248496abb3b7e9d70615082f3b43edb7067e0',\n '0x4cea40ea0e077819daef3ee4f079e3e26876e3266f299d95fd5a4c4742dc6ecd',\n '0xfc02ad22f0c3d8cb6bd38f1ca18987d4b2e675c5c9de770a784fa855a14316c1',\n '0xfbd32ce3f61ce422a2d76958bc12e822746de0a1e23e4d37b514b72a838a44b4',\n '0x071f361aae847a89570bc4d7e22b947f8ab11ac2109425dacbd8201924ad8bee',\n '0x09e54cbe08571ae5d17b03b903d96208938d9167f4a129740824d6965b320b20',\n '0x43c9c27b35fde962c76b0099c18bca2683a65f9a173707e007eaf673ff888d9c',\n '0x2a3e26384a9cd628bd4c10f0d1f0e727695503b8327e3832d2034cd9037f3022',\n '0x30b1c2207f4a33765444df80aa6f027cf8138c3c3dcf93c2ebe57f1951462920',\n '0x8bd21b7c177c338d41115dfdbd6836e529fcf31d3586df96e71b212d85fb9c1c',\n '0x4a0f854c865feb9d4e9c55d56bb9202685d78e9870e4ef71045679b20815127b',\n '0x0b017b8b1f158ac3c0d879f78f195d5e587e17a69fdb3f00d075a05289fbfb8a',\n '0x280f3c76d96aa390d6326162368ff6b6361dc383560fa879b292a4c517ffd3f9',\n '0x88255b8292adf84b9e83f142c9dd758184f1addbc5590e12d4e9de7720f135a8',\n '0xfb72b982072892100b0402cc35795c4687c52a63b8eccb739ef005847856223c',\n '0x51c2854ada3c89ae4b246b9aea14a93dfb44bb0b3203cd34d5986c5569f84243',\n '0x67c8fad63cbbf22a2df7c3a403a937f84e5a386c936db0f9d7ae746b8b5940a0',\n '0xc93aafbffdcf5b4f25755105e42f35fff9a155306b13c56aa31be355798a3711',\n '0x62e990339363c690d82e938f987fa9a81b138600d474fa51eab8ab35e72942c0',\n '0xe393ca57a1825d10f6372e191e54da486ad8eec812727669f827519c06b1df9d',\n '0xaad2b0d1966ea74e016c1026e23e8881e22bd0e02f0a5073da7c7f7a4c41ded9',\n '0xd2683a5d4bb0b367b963f41f15e13b2a6f04a6230512218f8ec10b9341a4eff1',\n '0x47f781062a7c7b945f3538eb0af09abf1ddf31bce93ca36a39f2a01337ef4c88',\n '0xf69e4a0db1c6b1a8c846c02ca337d63818ab4f30d590ab25b0f4aa504b8f4e17',\n '0xc9ff661d1abc7eb382d3de68d3210e7ab5f8d5a1ef63ecddb37ab43615171209',\n '0xf6f68a737efc3b0180db80775dfdca21358c6890a8dc2b810f55e0f2c168b224',\n '0x16f6319630605be293f49a398e9fd4f4b17c1160346e313293e83de9e37931f1',\n '0x94d1b7aa5132c9c186dfb2821cfef2cccbcf2feb1d6f8425c65aef4ae0298648',\n '0x4f6adccb66adaff205f0dde7cfe92565aeb23d6d1f261ae157b32149fcadb5eb',\n '0x8f278dc3d569efd2377d1b1fe41bf4ac3710bc0d28ebd248c1d34c5d376ba9f4',\n '0x2c46632ef6bb8073aca6d008a2ab67c8b815f4f74c2ed144dbf3a33c2f106dc7',\n '0x192b32d67b99aac7a7b44d75bf22c35d1acc5494c81c21046bc53caeeed63a5c',\n '0x03033c845181a54d9a937c353eff8cc54f7b33714e1a10c8e04d275ab143227b',\n '0x873786fb5e2ad9b455c109f4ab91be18d481cf5e0ce363dc0b943b16a272ed97',\n '0x9eb2c49b3d7df7a1b92a8a03e9297e33faa35e584c341f4d1124fbba414650bf',\n '0x9133e920a0a38fc6770818241657bcc3139044207a3f2d30314d4578f6e9a7f3',\n '0xaa793edf7477045fb9feecf4ccc03e29f867fc9d44f4979490d378af5c07cd4e',\n '0x225d520ad0208b19ebc06346b2007844304b01d156b0307922d56bd75b297c44',\n '0x27788f13752168bafc73a281c0887655cb2ff1a0f74565de420e27da2e5ee8e8',\n '0x53d8244c22c2380207affa848c2a5f232c53a638a115690c5caf9c630b80f6cd',\n '0xfcb9426fb1f73780fa9e15941d9c10d59ecd2e55467ba074ea6790977903389d',\n '0xcd8193b5b6696cd847173f5f5c7b91872b3c84a14d482b02006c70971da2502b',\n '0xf56de7756614881c9c3dddf00cace3cd79d5ef709c1c87809b016c23ed6cf72d',\n '0xb9cf08d94db1790b8cf0ad304ba07e6525dc0b272c04a375997f5c039f07f287',\n '0x63fde19cf5a86335a323f827ddcfa438372e6e053895b56a5562e290205992cf',\n '0xff0ed31c19f60b78fbcece56ed866b4f78265fe5aa2fb1e549f87453ac6b227e',\n '0x84164daea2e2466bc8a115920408e06c023487f997b78632f43099f49e901465',\n '0xaed268a8f84d0d350ac327b913eae33ea58bd876a74d734846b921f0b185b61e',\n '0x4692cba8049ec3a84ca5f91e033b66ac66b13dcce6a7d94b974451a75b6d5749',\n '0x0efaa44570047a138eb5cdd01abe3140bf432ee4d4665249d5e2a7ab7949bb8d',\n '0xdc0674c27bc6b41fb71ccfbdcc237ab0d8298ebf31a9ff620b6b6bd90b3c6e1c',\n '0xcafa9f40733304205a53ffe6ceff6664893735c37c77b9c73e725a00201a4d8e',\n '0x63e5fc4c7169cf0bfa3ee45e3eb257b79dea100ebc97829a6f09b2746eddb20e',\n '0x1888ffe0afa6cf2f44aa999ed6cbc3d13550891d5c3010e94fce89af39ef9026',\n '0x35bfe5062f06821a83d2efedf1a7ffb9c742a685ee8431514b12ce3ccc9f5584',\n '0x573a3da949d739a9d1a0b5c74fa0f30d7f9a521b84f00269a5a94f6649ab77a3',\n '0x7976525db15d5b966085c76bc244b96d28ddc8e74c8c7c7b06f264ef59b46125',\n '0xf7302ed57ef1a681a47ecaad1373057cb49f76637b71814e2663f0d854b1a71e',\n '0x89b1e9addb66c8600ed9d81da4651e044419349fef223d6c8e48255b3b785db8',\n '0x0aa2b6f1803d241eeb60a00b2d78e3f2f9d067022a5c317afff5c8cf4c26a4c9',\n '0xa664384beb8befd7fb036710a720487a5c3599abb6f4814e6bdb36b3b25a664e',\n '0x0acc486b6921d477def8d8fb506df9a602f97d79d97d564e9c48de4d6c919fdf',\n '0x83a3b7020bee4dc4ce5195227aaa8dc96ca109aaae1349c36b6cf4db671297ed',\n '0xdef8bb8fd274ee1496a5a7d60499f41150d32e042f2843080fcc9d1247106549',\n '0x88d8ec17e1a390d6ea942b81037bca9e90144f9a17018ac227fc9b8db3944053',\n '0x924c1f3b3dd824a43d8d0fd11098790abd89aee70204e9ac4b8516e64874100e',\n '0x5cea45aa26443e1d8b7e3f32ecbf9574861c6200422e87e269cd9a2ae34c3eb3',\n '0x807d996af08d0702ab0787771c483213d3f7a4206d4fdab809cdb225dc947a31',\n '0xb3b50343738940d832846bf5897cb3606c660514e18b688f0970c30b9988858d',\n '0x582214b243ba21887053251c0c312827387a2eff8df1fca9cd029923c7f90381',\n '0xa9a8f459fac530759754222929796cf09200f6e4425ca4e427824b4a554dc097',\n '0xc96ab0c3991a8b7bb5cf3a0382d455ebbf0d4144412e6ba18d3356898b089107',\n '0x184a45659c393e26d9360ddd9b21428e0bd107889c056c7bb2a8f25ce781caf3',\n '0xa0c6b2c86177b494beb503fac7d4086dcf5f208f7b6d61d3aaac2710356d38fc',\n '0x230bc9fb8a8780c5810d1b47703eb612fba5fe2afc4bfbecf20aa8dee5e0e2c7',\n '0xfd1fc133e1f09e7a40f0a6de609220c16f8c462ee4f9d9dfd19ba810ea103ad2',\n '0xce220dbe59b0595395eba75204f6b7f3f07f88aca8d8a5e491b8a3f4dbe652ea',\n '0xf5ed14e12e49f5091ca81e26782ba8c265fbe33c33ff25c6bc047ed470648ba5',\n '0x97779cf1cba1872d072b6223bc89f6b192f76b1b8197cd0f14d527baadddc65c',\n '0xca3fe595f8e0163a7d80cdf62be0469c2370c37b248073571d54b095204dd946',\n '0xaec6b44d0bdc03e172c50536a7913fafaebe4b3985fa892daf056bb68ff23929',\n '0xb46cb59914ce60b90aba5bbdc5abfdbe0a599b1ff89506ae58de2b488a5bdeee',\n '0x624956470b3e9fbb6e029bf4980d91cd112446d81cf75e6a235a579d703296f5',\n '0x49100d6f7689bfa560ae7f052a5b05acb5045cd4dd5f3d8cc1f998e0493aa592',\n '0x4114ddf9fb7162bed20c6dd935e3106eb4471b1f53e735ea47cd8f3aff8c4948',\n '0x0a7c79b0748d1ca0d71df80486747f70539bccdf20f7012ea37a5705c3eedeed',\n '0x467d6fdc7ab5f51d71dc00679add2e82dd234010289cdc71770c28a77412f8de',\n '0x60dfe00a5ec909e3c681c3133d1866da87dc0a6e7908575268567e66673a1706',\n '0xc0bdbc238ead92593f29ecdf1926754015c53d26b6351905c771c6ade2971496',\n '0x18bdb9b16fda43420cd8b98ee2c489a13029405b78f8b0bcf8c6aaeafea2b3df',\n '0x561c3367ccd4446d0d00e3b222e5bc0e6852b045f9cbebb92b970bf0ea3d4e97',\n '0x6ae44a0d011fdf2534025a036ed9af9f46b79fc9890cfe577d67185577547182',\n '0xe48b1503de252238e9db321c39fe1230807b1325339268721a49960fb213665f',\n '0xbb9b3f760936e1de372dd16a375ef50d5095e98cb5eb916f4e58b141e194f52c',\n '0x608d43ecc45c72c1d60df1fce041b995d132e0e4611d03a3bda61cf7056817ff',\n '0x751d953144939792e5298fcf137115b4e6e13d27bdae62b456d7bbb7ddb6e5d0',\n '0x545995f8e0456e680b752010942bd26d8c806462134601899b4abe40c8f940ed',\n '0xdc91e321fe6044117582f0d496f93ecb4ecbd5fdf7091892b7efb4d95c361269',\n '0x19f1f4dc6289f5bec3f077496188fdc8d6f3ec8e080ce84495f4397443863a11',\n '0xa1989ccef8d3288ab1351711d0dc2ecbbe09df818c71ac8fea87399ce921a18b',\n '0x01fd7908e47340fb531d6be37320397924ba30d4125d7ddec0287c240913d120',\n '0xa3a5336fed6d173ceae7d2ca9835a046f7eac2bd498ce79c4d5bffabef40089a',\n '0xb90fd2dfa2e61821cf59026724a3ec389ced7455f5970dcadbd592931b40cca0',\n '0x51654f2d43493d43aafbd768cfe24936c8ba7d2df147d07739d3eb66ea971197',\n '0x3db21cecb2eb3816828dc6b74597f042df090ec06c3a3d3cdd1043e2457fbc27',\n '0xd81c752a4e183626dfbec2222d1e6187d13bb1382856d814ba9570597dadab21',\n '0x87d4ca50cea5f8721750209d3a5a246067528b4951f10060af5b2a4f1b57adcf',\n '0x7345239fa4be995f56dc8c0221c1029e38701363cfeb56fc73e9b1c1d0944396',\n '0x546b4e806036ea8dd83756df55aea7137ba75dbf54b81147e49dde878bd061ba',\n '0x59b012bc1f159a9ffa3dbf145a760c96c9909fb57a6219188cb438e57496f255',\n '0xf7e017252338c2044ec7f01a2137b373d5c659a7b565026c2cb94b0b631f744f',\n '0x09ee6a205db36d4575145d846fe509964c2d5b3d9b62d389647f8f42a7290457',\n '0x92173b9baff7c7f6786edd06abe93b7b0c40fb294efc3b3302830abbe2e245f1',\n '0xf8ffa45a25bf29da6ad547a33c6dea5134b3262bcc873773f105a0b314ee7872',\n '0x6c9f01b6c060cbb9cac6d3fdc2491d7e54eb2a0c3901e87d5471f47971a97992',\n '0x396da19ff5868d4703d1db8f21bc9e20f2701fdc32bc7d3233640897f68cb0e3',\n '0x95fc92426e8df9ac3e087bb522ce82962e5cf4a5f48ecc881398b62c5a9d4102',\n '0x9aa82c003a646a212ec73eb187fc28252158e53719593d3d969ecea14a04ff48',\n '0x9007dfca8b38b48bab5ab90665ea997b234f162459d0fc693af0f1e6c0352739',\n '0xcfc19a7f46d65f00318aa7857cc1c90b38bf966074be173e462d4017bd34ee65',\n '0x64a58da16c2da0316aa3b9e42a74f4de25a6992e218376573dca760c5c169e91',\n '0x5c4b16b4afd16209025f32e0ebc54fcbcbf95eb28fc6d749653ef82f4d42cb44',\n '0x52b6e13ce0608af2250316b268658a7e454e8738ff27ae04e5b3635876829566',\n '0xd13f5c1de63e63ce65c88cc358485e4ded2e3c5fd5e2a83b66c0fa09f6e5b483',\n '0x9ce5d113a9a98d04b58ca7c0ddcd6b9d5d6f49840cdb3baec20ace059dafdb8a',\n '0x44ee64759eb7cd564d9c4babbcce5c71e659f355aae8412fdb9fbf4c781410a1',\n '0xf55dabfa3a1ab5750a9e353680965cfd1ea9175951a0e7e550a7b61bc993e1a6',\n '0xb3a8e4dc5df0f6919dbaeecfef41917a28d6701b1cfca505003b3ead4d25c62d',\n '0xd4dd84b7aac77998fe8bb339e097cef990a0aed0afddd0a752cdf6a6f0b31517',\n '0xa81f41d10a07cd9f2fe11c277cac7c7751e326e9d147823f0775b76d7bcc89da',\n '0x363f3211f507ab6924e1b2aab37a15dbb2109bde62dbc2c9815d0390d6534740',\n '0x6ddab293623f16cb00ec9cfd6255b9c6409c89a54f6458e02568f265d8ea6070',\n '0x8f1275c519a04b5fe399ef9532bea6f3be03306aac4b1b96ee3cf45774eed7a1',\n '0x8b180dba95d09ec6d0f895699b05322994c2e916a2bfc5193d598d58c6e74890',\n '0x631561459e02a1c95104a085f51886d96f2e7b94c3839b11a59bec3a3ea12dea',\n '0x3bed0c7fd7c4d023276c7672881643baf6ab3bdf287a14e664de24e8f004679c',\n '0x019402dd8e708235f9854756103a956f7331cef6981a064bd1dacaa27fa45529',\n '0x698a28d98fee4dac7468f1e5f2959d3008be381fdb750d65ed3389ed8f5d94e5',\n '0x3033e71c0c9d314ef6d78b5e72c1d546a96e555e4312d5f0d289563b1a5b2a20',\n '0x4a1adb9e6bc60612194f2b4c908c4990bf013ad25d8b28adcbfb71ed5da32d14',\n '0x515985acf01fc772756274175329bfb4e940f2211702a19f326e6a8d3439102c',\n '0xb60e3da9172efa9bc1e89b7fa068749143408296bb46994ca1ac4a7f8842f378',\n '0xcacea65576e665401ec04e8c2ca13aa427fe2abfea55eee42158fe9fe99bdbaf',\n '0x9ebe8bfa0f90c4ea58b09e3121a2e4d1b401a62d42f71b1a04681743208b34ed',\n '0x18a23650f35c5de06459bc56e8198ca111389e6ce8af308d6637c639ff94a217',\n '0xc1e053dbfaadba047699c19b24ce34eac556eae35c5c2ef5cff4b2c006ddbf99',\n '0xa03c0e38011c43cd8577bda823dba15426256490d68c367a84051e9d7844db39',\n '0x93b44dc3900a03d875707d53859124431dd69a616810c8d58c2b7e1a86b3b347',\n '0x2a3e62d51a5f6ace046692111e47a949a4749ce433cb5b8dd989acb2e50987d8',\n '0xdc58b37051edd78f73a16e6f21a13d7246179f085c3969b6643653110ac1b7aa',\n '0x1f2d2018e4d2c774d50406da403a80db98e685d4b9ea6ae91062ffb127b34329',\n '0x8c30d75bf7abe08d2ef61b069488ba6528663d65bf20849f6ea40fbfefc0525b',\n '0xa3edda44bae3f51a68a062ecab244ed0b842aa1ab25a0b79a08776c66a3f9e88',\n '0x053ad6b3ff6a611193231159ccc341c4509547e86f25f7f6e10308d8fcc0abf8',\n '0x1338059ecbaee7ff6e52a352629580b83a801a308e34750a3aed8e928b98fde2',\n '0x975b70340e74e8dc3f394543fe427fdd6ba50c9cfbd7a3c36aeb6332138d8830',\n '0x0146a6ef2ace223acb771bd1d129de50c091bd4cfb3d4dafc40fa1bd07e0eca2',\n '0x68492ef1950e66a2ebd74260ee6ec898bbd25094aba496af12db0570fbe231ff',\n '0x6e78fff2605fe0d9854e37387331b662a20d4a4c0342980d80e4bdef9ef8f430',\n '0xb15e5139668a602a7bb54d7f9adf96d18b4e75e845076711807a9a5a3977b776',\n '0xf5e2352674182568997aee6455c6ff47abe434b916f9b3c653abeda10441f3ce',\n '0xaa63079907135e1baa8e7a40a5662efb2e18cc049a6a0821780462bca207fdcd',\n '0x8d851d5e9cd961dfc74c6508fbd3331dcc7e7dbdaf4f000da454f0ce6feadc01',\n '0x67797cd628e9509864cd61c74985a2f3a0cf0f533ef81d3cdd1002d9db15b67b',\n '0x157e0161884acc97e948b49a27ebfff84e36575c10d21b3ab5fcd1f9348a7d74',\n '0xe934ecc12bd42b8b90eef7a3b19bb894af801624c7c40d72cf01786564b315b5',\n '0x3653fe3a02180436e6298cd7116e68ef2ba3d595432df0d6a8570c65e47d057f',\n '0x2aa3d12e5b871230a4676f3aba1b6d9358b9141ec33cc3afe1f4607efa43dece',\n '0x3d26628a5216328558e38a3b54398c8d9cf1158ab8bffcb3a8f2a0289cb4b6f1',\n '0x887d202ff37a9f50aaded1dddf72471ba43ad7075fa8f6c9d1f5cd7547b8225a',\n '0x366f6f4f8840c44efb8cf90560d6a0d70c8d34f4966273239a508954bad691cf',\n '0xf90e7774ab1fc65e6c066e63ff65a0248823a20c3bd078eae8d437a28765e96f',\n '0xd16091292f3712ff21428123b489a427bd63bb3ce2a71e32322ce6c3ce278c9f',\n '0xc1f0cfdcc9cbdbfe66a3a46e2737482189a4782f70fde3f445dfdd4c25e6a969',\n '0x3221c4189debc688e743ab69253d6c407e90925c749ff5ec9728fd752db57673',\n '0x40ff4932c5feb0e6ad7db16fc00f7e7c6b36c83e963b9f61e18c0a076b86a39d',\n '0x1e827321a57d4c183d9008f6bafc52506deee36a3f147f73e9d93eb4b9210990',\n '0x037a4e6686ed754f6986cabf9e73c65ba4d4226fefb75e13cc01a8c8daac7b32',\n '0xa79febb0630bde53827462bb61dd48498c8266f26ef6906d504d50fd79383616',\n '0xb6a43c55f8595f60427a66278f8b753a322e536c0a00b0f9116fec1a1097eb93',\n '0x119f8976dd0c1d839d9dfc205c746cdacdeb7d7d5035e560b4e5b6065ddbdea6',\n '0xc236acb8871f8a7b6170125870d0a3069f1480af23a7c9ae09c68d1d4eded5be',\n '0x0c14a0890c1dca090cb1c6affac44066b77fef39638ef87be63e9f478692e506',\n '0x95480d1309155fa5a61b8a4f5bcc6acae1ef230b12d4c46d6f653146fa040f70',\n '0xad823254d9451ba358e90101f7833cf58dd1069b82cf5f5fd5bd8fb98b3f3d6b',\n '0x301e3674147434dd591adc9d80652fc7f5d9935ee01ca8eda21d9ae971af432a',\n '0x344060c566478fef208559c68d44a726ba112fe15081b53c5fbcf4cf28722218',\n '0xe09b53f2d40da84f5fff2c5426be1695a8d1a1beac5241fa6f5d90a85fd599c1',\n '0x1bcef40bb9031bf017e510cdcc22dd31b5445579a8ff42fc2c86228519f1ae3c',\n '0xfa3263805c1942c8cbc86f0d5f54774f7aea9cab7834d240cc4daff47f08f04e',\n '0x02aeff99c85b3a2675c391116af9674844ccfa98442d635d71a80b4ece715631',\n '0x4c2c2f6dc997ce19ca92f2fc3a9e56f3c191bf875b31cdd97bb77443c6466fde',\n '0x7270c91d95bdb1fbc1029c1632604e04d1a9de33f05383795b5b8f187ccb0bb8',\n '0x14395bbfc5f4a86ce7d408cf6380f5e79f5cd3568c0405259a6ee0c65a2f26ca',\n '0x3c1371713f61776ea88541e7543f11a87cdfd68206d9385dc643ccb9233cf7b5',\n '0xa23f29cbefa166bef8cf42e17b5620b5dfd2fa14d2ddccc370ebee44527d785b',\n '0x05038d3709b037ed2b75a326b00107ae81017a20cad57bae45b7c004e261ee64',\n '0xc4981101c4d53c4d77cab342cdda3e74fa0c5b594ad13ae0bc772a1b470d7555',\n '0x2edb8aa6862f1b7d1f6211518ae95219084e100d88e8605f6c37c5c55ec203de',\n '0x9fa5dc05a09d7c8fca33642b1a6c51b35ccddf134857625fa0ed26513fce9721',\n '0x66b9bb2f7e1dc8b3fd771a92a0263ae2476ee454d4c8c77e51daab32618127ce',\n '0x39bc79fdeb4dde72e1e5c347798d05ed1fb2e5785b5c3a9466c674d643e66079',\n '0x9ba9991cae6c5bed80212218e3dba91055e2dc9eaffdb1f5c5c7cc2ddba0facc',\n '0x7e03ef482851db6fd145428011bb5ea79d67913b8e66bcaff7cd1525c991e3e2',\n '0x1ab0108f2e04f93f4dc093b1431241d413d3c74fbd6cd7894ebee184c9df169e',\n '0x27fcc6ff668942174346999eb08a119071988896c67bf4bd1b486cf8c6706640',\n '0xdd14d4752ca4d378905154459ef1a16b36d7dd639c1bc28de69d077b9c99be87',\n '0xd202ed3ee642b0b5afe22feca8b1f276d5262fce5c1c46fc9aafe0c35fc1e3a1',\n '0xa040a247de59ca990bc1a500f0fa863764eac2060b8ec6135521bbf366508a75',\n '0x6bf67607961aadf0bf4040af0339130402553a189eba8000aa8cd14c58bed158',\n '0x6de71b5a0717aed1dc3ebb37b87419305a1dcb29b25418ce816f300351d480cc',\n '0xcf260055acef6cb767f6a295521cbfbc017f750a5964b24e311b44802db8b07a',\n '0x6b113d522e53bc3c1a9ee3c157e06ab2eee9244343f32cf537aa840989b01480',\n '0x73f8ca5b7e725f8b3aea4d6eb847afe9c58114589f620b46aa7401b337fb956d',\n '0x8809391f53fd9ebed4004e9d54ac7c06c7202dc3991e1a29235b93788c2cf8aa',\n '0x7f87c992d089126f39b494250d01358dc989d2bcd0a5ffe2453b830ca8aa4bb6',\n '0xf3a62502f9ad6231607777d43f01e78dcec428bbe72fd7aa3d7ab41904ef15aa',\n '0xcc8499f994aaf00c38bd090855f672965ba7229f9427f61875cbce3ec96bf5c3',\n '0xbe30e5a77db39478241a3a7761181dc973fb4b54472db763f7b7fd1ac57ccc41',\n '0x14e68c57183c705795ec8da4bc6cec081b9a207a87d68715b1f2c3d64b922138',\n '0x7e1d4099c0a9f65a4327644a98b1f9bdc351148e48519e826acbab18b544c8f4',\n '0x692510f0499eadf0d22ea18fc3a3de28e3b73a62ab4efd54e1df5189ce3b7a86',\n '0x34dbb2a239c1c8a021a4e64def959f2ed0ae055918cc8a466532727039d56b88',\n '0xc380c8905027db6af3cadf20cd717a8cbe7682483d553ae38a7afc4866797db6',\n '0x8eaf593c5ef88cde1adef27bd57a7e8d64ba03f44eb1fc591ff6fde3535c7b6f',\n '0x4c9d5354fb547a90a005d960b1e2b7500b0325e0e8cd2983b196e988a027d060',\n '0x141c4d6c51f48ecc8e99799958abf6c8ebde923a424138f878ff4e205172e549',\n '0x164b25d0b5cf6e3cd7b613fbaf2861531902c0dbf113fefed261589b4994214c',\n '0xe361d2ca457d0e7a51d651133705cb50569064d0fda71dde8cb40d034dfd0a93',\n '0x562662f8f42cb2dc53c98a43e24100012bb8d53a5b587dc28e49a560f3fb59ce',\n '0x001af63ccde7946fff1209a612f3218a0f72cd7d2e6fe1dcbda2e4598c24a57e',\n '0xe6101bdcee6a075612520baee1cadcd45e47d82b79e79bb5a9a4649fc1336e65',\n '0xd84379b3ee75b90f9b37a22cb240b09b948f9ca5ddc66d28003408ea28ce88ed',\n '0x9b3a4bcfc044cf9c080bb25ad1f7dc234acdc46a4df5080cb64ea3e7d66d7c24',\n '0xe0e9f6f9426c78d2f145488788d8258636061ca93493ddf6399fd7495d3607bb',\n '0xf4e9f2638f6a945f0d3210e122b9b953fcfd46f615de715b7d149bf9a6d3d846',\n '0x4f962e59777270ea52caf2aaa85383ae1a89c8f0d972b335f1b6ce1b6d72bfa1',\n '0x251971e2af79640033e780ccd2e3a399d5cbb88164fa06195e0a8722baa5a6a6',\n '0xa1473fb4b3cd0b22e27753515aff753c3bf3681e433c1031850bd54f02dffa3a',\n '0xfbc3c9abd3c5246bc90629b9212bcd7b46f45b2b04350b711bd08184d8797780',\n '0xde07a9c1c7cd00b0d41c8fc26af98227caea01491ab18bf8726b196a8740019e',\n '0x75c5f1d095edd3270c867f448d4942f66e7ecc5717d47d09d0700c373be3d6b9',\n '0x12cf189b189a15ad6f0719b802c2c25a504f314a60851a90a4d67605017015bb',\n '0x906431d19844a9a9e2d25d18370d78ed080325127f21a8669bf8ec9984e9afc5',\n '0x4362c1ad4694d2e2a4f7fea507dd212b421a5ee581db623ca591bb5533595a15',\n '0xc11fe140a017cebac486bb85ff773755c6d2be539d1ef291fa7e778c482e2994',\n '0x6936ff604b17b12e6c7e6a95bade0ac064c5dd4ef5828f3fb15f46ae54620ba2',\n '0xfe67fd184017ff1416c19cf2aeb4770309f708deb15304a7478b490e05bedd42',\n '0xb1807cea95115de9ffed6c3217416b9073e5b44f3362ea10aea8d43da0d58ee5',\n '0x6cb4c98f9eeb859e6303fbf18d1e06925eace60e3edd253b5e1c8a6cb9ec0a10',\n '0x01e34c7e2097b5f19480bae9e8cd7f3dd0cc34a4915b7bbfe3b22d433d9c2549',\n '0xfa047ce603838a3d3fe56ce51c8fca2cc5c6603e020f5111bdc6d154b9326748',\n '0x7a3b65ddd313eead26215479669da50351104abcd32205bed6763dd2af7a42ea',\n '0xc264c0282822edb36a4bbb886418d528835174c6bf123b2ab75518cbe985f900',\n '0x58f8560d34608f82d5ef890cd7f3d11040894f4f9d133187dc2e8be844d1ae70',\n '0x1d28efad1f49332ca07cc95a2193063d3680d241864cf74d53645cb93f2ce1e5',\n '0xf79f0e9dbcdba1c88023a11e37753181907d88be68a01e248cbceccafdf369c4',\n '0xe5949077b663aff3c3d8abe8ddc13b1ee16d8167f47de4f6905b08e733f5fee6',\n '0x1385af83ae29739684ff348e60fb29384e6fda7aa5be7fc26c7399010f8d75a4',\n '0xd26955002abc59da986a7a715a5f2b058751515cc73d7907488264c292310ea4',\n '0x445a8a326bc5c8ace5448f8084c4f130a66f650830d08c4e79c95212d7d7fe03',\n '0x60d8a84d9b841f69f7cc14820f5ebd81fc115158b8c232c067d33a63fb849e6d',\n '0xa5e68387dd0ebcc027cd66912e114f42aa5a697cf5c54dd468217597219a3853',\n '0x4453a99b91716c08f70b5ca8c54a9b611011ca3908c434f34373ef0fb5a70774',\n '0x2eb577795e3b1402b320c0d6cb22e175f73a33328135671cfd17b5e58ca79adb',\n '0x4c6dd1f54c067983299ec7ae8ade91744db06f12de3b8bce15480ecbbf4b019d',\n '0xe6f0dc2f9e75b7c1a5586e6b75629e62528f2a3807ea88a861ef058ecb362cfc',\n '0x8a075fb812e30983ec5bb28fba393dceaa5303faea98b864bf2d6a457b60e786',\n '0x691ffdd95df0d6929ad9f0d5c829d8cafe677b534a466f1b7a912cc5679fc624',\n '0x6cf5260f9683bd6d6801b8016b3f67685f22a1a966e1c9bdc4e05c4c4b87d953',\n '0x49e14923b71a44ed682d9955b77576c3a1cd52fd08869f5939dff6985f6ca5b3',\n '0xcd66a61481ca7a5fa2b09b2f5e63268d31d96e1748b3798053ea54b4404fb704',\n '0x42bd114244190f500d6ed98e59e7441a05a66051f1b731ed29bca4b86a079b10',\n '0x4a66b1d1e530347f66771a2e15e29a8ceb6cd3e2fff1c4768924679675a2fb48',\n '0x90e7d968c79a5dc7574e9cb06b1a3a9fa9e32e68aef3e3c2f63651e24a4a6b7a',\n '0x282e640cca7690adc6fad0b50aafc47577d4323c158c54b4d8b4fe9d86f4b72b',\n '0xaba77bcb24ae7e43e01fc58e9749af1202f07d160cf0a6a66a4480354fe4c8f4',\n '0xb781271b076024f96e31f547a240929c75d4ffba5b20bb319a30a8136a7a67a3',\n '0xb9ad9fa163617322f756f846b827c07e5c34e25d19cf842bcd18ae8459848a02',\n '0x207e2315cd2d7bd42098874fc3b54069f86e9b98f966804674b554178b928fb4',\n '0x961229457b800a3b3b6a8c6b5335b53ce128e786ad131f527c4a7e00d5c2b85f',\n '0x2d44ad09cbf1ba4ecbd3289aaaea246e7bd983bc8565fc3446d6dd9b33df9dec',\n '0x69b70f95b90770a599a8e037c3b2151917f68117dd92681ef4ca686c161cc59a',\n '0xa2e7ffc9c88705083f55b485a9d6338c506a52b1e6f3a7c903b09552e5f46d96',\n '0x180c5726e8c2e7a417264ba0aefd51740f29f8eb451cb05a292f567746ef6cf3',\n '0x0f1b22a93859fa026d323fd6e9d59c92105227740e23d1ae85b7995599407ec8',\n '0x5824901c19c62fb4af413a51932d697acf8387a9189b557197918b7ecd48bc15',\n '0xfe451383ec1aebc98785d4484f012f4310de1d51c12006de188bc8caa1f09675',\n '0x836f3e1d64d905ae0c85ca2c905376a000f24480ca50f5654653e25329c97afc',\n '0xadcffbded8188315514dce031e8ab1a30770dd9ed7421fe046ef4447c3a38b29',\n '0x19e6de99c718cfeb60e488903603f723769e217ae2077348385b9a6c73242425',\n '0x6c1ff5e034b98afde080fc62c10ddf4b62763c5bd2c709f519d46e046bc474d8',\n '0xf0f0091b2a73fb27d166902ea3487515f050b022533840d64cef4ad2a83664c6',\n '0xdf50303b85ba4baaf7526859e4b3fc5c209deb4742a7c44108dfcc4868bdd668',\n '0xf380b45a6aad98911127787c262afddfca6291e66e5ccc20346aa01623c48ca6',\n '0x6d8b65bf66e8e5e40cacade28c19a57388e214d693947d38a129ba0c3d45fad1',\n '0x8d89a973a55a10ce748c290ef673a2431b9615bc50ad4613865ecf96262af79d',\n '0xe3cc21ba77f5a496cdec5f088dfb8e0506c35042e2e460e997fa0c0b6891e4cc',\n '0x3b77c0a847e1d60bd35d65025a8447b4b61a86e1f74d0984bd4b3d014d064221',\n '0xe7ff7003d8a7931cd555f65f519e9ab19917f092e38cd82011dc429b82de12c0',\n '0x4de9f124b35350a56bbcc4c595f9f47764845b586be1e9d4e2aea114e3e7f3a6',\n '0xc513b59ed66970b1179ab0721acf786dc4012589b8a971ffcf2175875ec19933',\n '0xded99d7db2ccfbd6a344dc2c93d80ebcf4782a505b332f99b786d4aaae4df2fc',\n '0x5a208fd012262a05cf861874526f7a802a97cb32a1a224e6c6cd3daf30cd6a1d',\n '0xc88e0b0babcc59a1dc4fb378de585d2360b0fbb8cff7d5a22f8d6fb6f7ae5686',\n '0x410d113a9ff4ec9501695f5acbb74deae95bf38cb2be901fc7778fa9d9f7e950',\n '0x09fee9254b88f486025e2430856315bc4333cf9e76679317255c0238c5c83de3',\n '0x5df7dd6986f3c82f1acbe964555f5d44e1ec172f73f91bf82564aa86a7722b39',\n '0x19a5b76a249208ce3071b557392f60907158ccdc41412cba9532391b19129cd5',\n '0x0cc5e52346c672d61164d642c147c9b011daa1baaf876e5fc367c552aa4243f1',\n '0xa6d99619d5995b4e2408c4f0924608a93cf4547369308a58bd2d8b3761b1d611',\n '0x83c697a8cfc36e3d1b59c22338b56c8618b407e5269475342f508ccd08b36ee6',\n '0x197a3677d6cce163bbfa96265b31f4788685fef160ee6eed9027446a41dddebc',\n '0xa9616f1648fbf3ca61e841ebbe7f1fac0ee74e3d63de712c46eed20fbbfe078b',\n '0x3bbe9296c79b6b861276aeedee7a121ba54bbb34a16c13ac9680cc4c4db85113',\n '0x941052dcfac5710dda227800884949b74bc8c66bbd0c7b0564317c00d8eb7c34',\n '0x2f7d69d91b651ed14f130a09a0bc2613d86d247758f3146b503ac1112e257888',\n '0x368471f5f2cec6175e43b4bc26966b59acb964506e8c56ca32a975a87eecb8fb',\n '0x10cd3b0d6a15fa1c0fd3e22718cf8dd16c4307272a811bc342f6a74b441fed5a',\n '0x165f5e6fce50c08f67b585989c91f073e86e384f73c2ed9df688d1edc8ef259f',\n '0x03cb4a3820e030b1c6d663b6a2dede617f05f00237bbd83ae0c227e123dd9730',\n '0xb6eb77ff57c809f0f6459b3af0efbb6a4535b2f75eab08cd56c9e03476031399',\n '0x1ebe333b13a71acd695b18ea4d6c4f48f6bd5ea2a8bd874dd98e46e992d6b720',\n '0x984c42d30365b0ea74f490f07efd1a5de512e6cbed623852f4b985a288b43073',\n '0x69ac4b0744b703e578c03cdce6bfb27cff670fb03602109ce6b6f549bd261a97',\n '0xf2bdfc446395a1e7301c37c2e3b9ad6911034cdb60cc34069352b2b9574bb11f',\n '0x01b987aec1c875462448fab9d458251a317a86bd01b8a4a5aaac0187dcbc0cd4',\n '0xc3fd52c5d89764195007e901c454add7d60c3dde6dcacf67f22978f098ee9d62',\n '0x12077b480969bcab12fe989c06f734a675e6266e9a9f0970765db6398bbdabdb',\n '0x026be76bbc3209c3630a66a430afa69fc5771c1af811e37a4afde23eb1077e0c',\n '0xbea32e75e55ac7ce7efd95ad419053fbdc0ad24843bc50222bbb1bb7f9527be1',\n '0x17eb26d97882680c37a14818b077e038946f390046fe2a9ce9c0f362654a3c23',\n '0xd7dfc1b30b094d7e585c8428a13c6e2c85b790131944be038dc3e316df4f3ec5',\n '0xc29f0240a337f3e308ffa4222b1d4373596f5c3fdfe900637785d2b80c1996bd',\n '0x5caf9e2086990d1f7900b4369a86449bb0a2caaa9f8ea1955b83461963f3e52d',\n '0x4127066dddd3385bed4b706a6bb3195e5bb0bf268fa0b1f6e7b8e728ce680ecd',\n '0xf3277c397a5655bfeca9aae5fb04663a4ed7f44f8f62e33a9ceabbe38c3b3fe6',\n '0x8844429a0b158cbf5ec98fefd82f99de5536107394ed6b5e65d2037242c70ea0',\n '0xbd20ad15161904dedd3fb5438cbb1cc6e74b9dbd7164983a4cffe8a864a8820e',\n '0x75eaf7944d74bfff0e1d589d75ae735fe47e24b924467e5e7e71df67eba46f16',\n '0x2b9b4c4c70fe57e8557d6682652a968bbc65afdfc1a48116f01e0d5f9eadce2e',\n '0x3e8abf752a3d4f9803d339f0ab205ca3b8bf42a3e0945b9b4b728667dda01a1a',\n '0x0524af1f05bd84dbef1707eeeffe7260b0d9acd5d1dbfdf7a0067a25331b2b1f',\n '0x41cb08feb7b8b955ecc8945fa43a95de1b1a5f37934ab21a8b7d0bad3dff572d',\n '0xe838e19df2f96f2ed119d16beedc1f1b8f7acf57793b3b449fcf5cdd2201eca2',\n '0x2afbd305ec43127425882fb815afccee02d13aa55825e7f87512d72b7ce01384',\n '0x2a59fb832d9837c18f7d959920f87a235f51a510683e85d4bbb542d7e05a1097',\n '0x0b61217964a90e872cc756fc175f32c8792b1cedea329bb3eef884451da48693',\n '0x17ca02c7f90e0174a2bb747f508024f3ee8651073c06533c80a4700c42be73f3',\n '0xb9b5ad7a97fad11076d4a93cb77a3978e159939012a54154b2b3ee0ab5f54cdc',\n '0x7516d2fc35020e1c33a4031c284d1e922b5eda4700c26325245661c5ab6996ee',\n '0xa211a80017dca870b47b8f04e4011d69d64b597eda6e98b6cdb667879a43d1e4',\n '0xc5a91c0a9124f25bb182d6201dcb2583e463a8a615024b809c270310989dfea9',\n '0x2966df6bbabf0880a7180e42cea49750b1766e4d32a4e1bc8d8a69b00a840bf1',\n '0xcad7f6e2a6036771fabe657895d3d084712d61a58b73db8fd41500e2836e7b3a',\n '0xf557f0268828de290dbee736744c237a0365711fe9bb71d640bf6491cba1cb11',\n '0x16f997085d4954ba8bcbd8a739b93dea6257dafdc3b4c5f1f4fd68d4a1f7c3bf',\n '0x8affdbc2453c0c6e47af8ba119e9691f8320d563db5401fc79295e0d76f16e01',\n '0x61ce88e1a265209bf386dcd73dab4b1a8f7ca4e8bfb62a823898013192790aa2',\n '0xaa3b0fb337ec944f0bcb9608af637c4fc73b7f82fd1f5d4a2f50dfc5e3b5e6a8',\n '0x36f66c3cb95c638e36ac419246f5391cd055b776692d24c9c2c818caeeb863d6',\n '0xd2a433dd758b29659ba4af33ef8615e7c7f43460733c9f6074f2c609c61a4bcc',\n '0xd3191fbaf99ba1da4502980105c9ef84bbfb309bd3ef88de81c4e4bdaffe9d64',\n '0x765821d33bb7cf91bf09a0932ee90953fb961ca911d4cc758fef1376b5be428d',\n '0x9844bdbcdd81a6db4625fb8ad1d1546453ffd931270b3f9ab562f8de7d1127bf',\n '0xc62e5f9907de5575b015a18e7412f49f6a3d73ce1245a450e2e09dbd3193e26e',\n '0x719b66806b7daad5ff91afbce551de50454d6d30e92a79566e309275669a80c9',\n '0x88c3282c1daea1f05e71467f49e568c0569789b8363af2a9bb642f2dbf4021b0',\n '0xcefdadd7ed8ca65757ab7a0d7cd4029b4bfdd3dd49b730e42e9620588ee3420c',\n '0x5b9a48c41db1cfcaf866f6a4911f72055ac42c4149e01930f9e7f9ede63099ed',\n '0xc1388951f9783dd896bca5634a98c020a51f59d79065f1dd6aabddba90c7a7af',\n '0xee3eaaf50a980a0b5dfa3b89d0a1408f43e3bb5188cafd7955112e530b882926',\n '0xd56e9cae4d5d6cabf2e8aa8da7b966fa0a1440ab5d9af192057bb8e14b6bc0da',\n '0xb72a1b54c5ac3d165f8ea4bbb8e2e997b98e7a655f269f67411fe48be8357c8a',\n '0x52579eb6073dd96f2dc424a5f077b17e0495ef6db320d94e14788df367c77012',\n '0x581e0989f5c44d922685d8832a6136197b783728399d5845e793c33b4f7e0130',\n '0xd96515c22e73275b79a81b1d45161eed1cbea9b85c830600a339a7d0e6554c10',\n '0xf8aba46eb22c0137213d9256cf36db732a01a5a2da969df81650e588b0c83259',\n '0x66847f82032afdfc8fda42c7e9e15aff6d41c2256488091090a9a2b7147aafc3',\n '0x3b9a3361226e2ed10640a78a34db49061393f05ae74ae177e6ec51eacdb4c2dc',\n '0xd810ff0620d5a777351fed97a86db0c55cbfb64d31d70c50ddabd68f9fe7f4b1',\n '0x342e2aaea92b39b66dc4b78943123845875b330447aa82b8bc5b30d743425f55',\n '0xa2038c3e00a667cac88c382b8add1d2e9edf90f34d3a2171fcc205fe3d343080',\n '0xe7e7a3dc0a544a2ffd4c5bcea3a218eaebc8ca418c513a2bad1509286164bf28',\n '0x94f7593911032045ad8e441e230237b555bd39aca5d5c53302d8155e8cf50f4d',\n '0x616095856266c3efc5ef398cbf540ee6cb31d62ac2b015494a1cd1bdadd2a5aa',\n '0x645d44d9eeafcfb7baca67e89ce3353c4dfdc7f145b487c2ccf992dca4cdbccb',\n '0xcfec16cad312abd47ea35904c1a362a676747fe489d57a5fff7d4f252317c5a0',\n '0x8fd326923e9f5ae4f434f0cafbb9d5df892539cf6ee9928aa3d3fa18d961fda6',\n '0xc92706a528b14d17fb92b997b8a9b6d7950c83ec5ab94f765b94f2d4154afbed',\n '0x6cb05a14a657ec21d7fd195e2e58832e5e8b58684240f5737466276d3bcecbab',\n '0x3dbe6262dd2d81019421271164a1ee470259ff5051dbf697b0f736c6898cd0f1',\n '0x49766b099f821560391ae554472b408ee22a2c8086f9029479f24452a0e4a652',\n '0x3f688b5b2932481882a5b15343c0355cc858ecd287486c974e7f391aae950633',\n '0x8a60949f51d4db84835774e61f93b9e7728ca3cfa1b82c679d1b7b3c18a8057b',\n '0xd4dc37ae956b51008f9253815c91ee47d4c0bdafa8bdc836541b93ca3e8b6d67',\n '0x6d8986f29a911611e23c3417c54c2b15976c99fb4486cff8cad3a3d65c69255c',\n '0x48dd0a1a2c6db46e2fbf3cc435988f3fb7bc41dd570910ca5c25c643ca584c96',\n '0x4c8d3ee82fc1867276b6bf890fe6a9035569579f3594ce08bcf3781291ff8b17',\n '0x3da72acea86730bf8e94001a53088e9ed7d9e6dbf7d9ff1f6ec40ee8711b3933',\n '0xa3a5f74a80e6099c0af75dbcf94206864d142a21b254c370ad1e126a793aae8d',\n '0x43c358cc779963b762affbb07395ea6e09c4df395c7707c47643d03fc9854ba8',\n '0x194e43f1426460e3ce4810b20b4c1ca69a98ee1390337253b84eb41158a41877',\n '0x18558e5e5f28ae01ef5c5417f0c2ed51dfc865186a8151296b9f12288dda6373',\n '0x2597fa8187c3d6c24c83d73655ca520be199ee2b8f323605f890142b75a5066c',\n '0x63a5c6c64aafe7de3e4b7effec435d9c028c7a5719da6a2a68140ee1058384d3',\n '0xc731a7af9e4a7c2e51bbbf7f2ebacdcfc6e18570b8a2ac40de85304d461cec36',\n '0xe5460b97fcaa4e7ed066ff5f18b2b719610e977af42515be30437212e6fb33b2',\n '0x4e591edd8a83a5349e95b2886739e3f4189b3897f3774358ead85f6e9c93bb21',\n '0x8f346718a81bdcb10c2e6507b47e75349fc4bc677fa7f22660cc6c0c7f0d0718',\n '0x26b37468d62a8ece94a56faf2bbf755a8302a677809ab1aed7eb5d5e98716c05',\n '0xf6e44901f3fa1f51538210d827f7a42eba640b006f56d00da12e9442bdedbe63',\n '0x4fdf48f84a3b5b3a5840511b262974e5b4dc3b7919f5abfa8c3f8c61736a4d97',\n '0xaf7a80a79a8a60b6b9ba48215fdae54a9b8ff1d69406d8dc793b0036e35aaf1f',\n '0xef708b241b407424862d77cd167b3043a4a219c5e41a7a1b52ecba7146a2446f',\n '0x98065959c2095cf77d3ca133a2eee5b83f03f90c6c8648eb0486db4deab6639a',\n '0x393c9607c323e15e0da0c8b573f5b531f5b4b645524d4c16ccdcd8cff704ddda',\n '0xfd020cb1fdbd62d70f0ca3fa37c9237af84c70ca8bae66b12d61099c277cf917',\n '0xead886b7049edf75adc3bf45801450777b526d8bb9969311ae31956d88ee70a3',\n '0xfcd04259bdb9872f9732d7d7c6b78e54d11a183aa641176db7cced7a3078ef0d',\n '0x3de289bbcc47d74b7255618e94777a2c9a488dff67c19303f2681a087ce00a7b',\n '0x2f8d0f1403d8b6a18b701779b5097531f25281b2fb51593259aaa6bf79123a46',\n '0xd0e5075f7b07062e78e2ccc9144f28d3172717cf19ba3984b850ab8d7b2210e2',\n '0x42790f00ca68528e1db8d357b56f411fa2dc50b57b74fe195055f06e77849229',\n '0xde991a218cad10201e58360f9ba420257107ff7accf31ba8526c6eb83c254ff5',\n '0x0108f30a783141bec020aa415b131038133169241e782ab9da992ca0db4d7b84',\n '0x565c8d9d8c31e748534b35ef4442837d41dee1cda71aa784e64200f18981a0fb',\n '0x223924ac36af46d0aeb64c7fb073401049cc7a1c9092260a127d6f81d6e04803',\n '0x7e552e05d135465a93751ff2d4d7d565a1582b9c98608daa7b569eaa2375990a',\n '0x68547e436ab3b52023e4236900d53ddba894d62ff9f6e6ddc81b6b75300eaedd',\n '0xff787f4024225b9a1d2aad125b2aafd2ca1d430caad1d7e5cdf75690959e99dc',\n '0x35273a212141666434b161ab9ae7542308e38172f729ca3dca02d9b0b15cba5c',\n '0xa6c02fcd5db02ee0da9aa4b9e82b4942523cfc90af6d59d22ccc07ac421a72ee',\n '0xa32a04f09d6c3d3f7c64501aabe0f8d4211e5d91171aaa0627f9596379bb6694',\n '0x25bf5cf1b01d88c1b9fdebf09613e658d2980e04edb5e6a4242a725de434f11a',\n '0x8118adcb20a73c80edcb9df20c8c48011475c6ccca4a53d26715af96922f7c7d',\n '0x81cc018a5b9f96f5ce17b3cbe6abf03939fcc6384367a355017a05c776d0248b',\n '0x66ff44f57865ddfb309b4470e0d07437ffd41376360a766295e295b3efc99d27',\n '0x1071124875a4fd2cfb95969fbaf07840c4414541e3c45e7354f3ac38893d934a',\n '0x6463f5619a881165a1b404b8c3bfb1c6f92fb655d66fbaebdd698c11a7469b0e',\n '0x7d50ed9ab4239c30b33efe76646c5a2435baf7747514163dea3f26a0d6a8e43f',\n '0xaa608167834a955383abb0bd0c9af8b9a4a2063efb94aedcaf90d190bd2d6377',\n '0x6acdfaf17eb6d5185c348aca0db2735e6af191e30dae42672fcdc585a984aade',\n '0x233c256b0da347a6942973ec256abae3b1dd0a9030ca1bbe02d753cefa5b5ec4',\n '0x3867d7d75db50fb316428e932b57fea0b38b600cbec211402beb01e0856b3826',\n '0x05d66af0698e4057151c086ef5598cc2b6dcb1bcc26372232a4d5805a5297a49',\n '0x41443fd11b5c55ea72e310df61eb6f755631fa8b4fada6fb74be37a2cba89929',\n '0x61f913645cc8cb501f37c3180b9deb566f7a6dbb96cb63f374d30592713d0188',\n '0xe5f9d4a136aca4be3a337bffed8acc64569369affecfaa6bb2ab28a66bbda80a',\n '0x9dbd7776efd284cc7b8ce7032b4b4a2282c8e376b1341ba31155a5f4f0827753',\n '0x472cd0d918235e18197b5b05c14b1f279d69c309dbce11bfbccdb64c7f935ad3',\n '0xd2ddc011454c18eee0a3f752f38391f1b7e9cf8abfb68c7617225a8011ab437c',\n '0x90062810a3a80b9c177aa2749189bb52ed4de1b3d246e8c56df3a4ace338f36e',\n '0xede402f9773fb9b43ace6d855a40c84c1f84d7902b4edfc4c4e5d43162a90f7f',\n '0x005402d882d2a853bfce8d8ac2b07d70b930466430c81890f3f03f75d6d6be4c',\n '0x744ff68f05bc6ca9b46d9e9f222832c4ffb78cfe3c11eb72dcbce59dbfd16e9c',\n '0x8314c02d60105b1f6880f824ef0ab5bb0aef4dd9ff20a121b0dd1ee5799baa24',\n '0x1ebab19137d3de0a6513087a2de271fb3f731ad139f1702450668b5800a8a6ab',\n '0xf34c726cbfb3e50228459d9fded378eef58da6e68a22075942dc7402a4aedde5',\n '0xd7fe7c3cbb4aebdaa0fbe66fda698f86806ee86005d46d34c0b51b6402e64915',\n '0x416e734053b3d631b3ade5e897e5a99b483d02dd9c2a57b38f04cb26fec5479c',\n '0xdec8474f2647825ff5bc196b6ac0d0c5eeb72fabbe94c5a9940c7d4c741a9a14',\n '0x61b845a8dd67a9d182430bce15dbd8a84e41f55e52c5eb615647e2084213d34d',\n '0x92f2bb6f43b4ea3a4dc8471129e2d8cf8b1ee8db3cabcc8de1f7413cb1ac9596',\n '0x16b224dbfd77841f47aff8ba8a3940681c147bc6dae91a21b008e847ade790fb',\n '0xf619fc6431e78efcb2365c9107650a8887fda06e0389f0a5173e91794b26e4a6',\n '0xbc3ddcf1da421bbf59e69c5892ef0fd807bba411108101ac633ad7c85eae9e7b',\n '0x9efd2fbe6d89cc53dc66d77e191b153c26a697d83f891be95ff7317617953f9c',\n '0x90d44435a20daa15d7bebaf3f5d9b142ed00f1d091055b910750676e93f113ab',\n '0x1a7d50ba7f8553c6f52a4d1c68902d1aa7760356cff548e9d1ae3c88725233f5',\n '0x58b8d815135981fe93ab26c5913948bed5935dbf3c9eb37e5eef09d9ae3b3f66',\n '0x0bbf091ce7e67a75aec04926820275feb10c6592a589e158cb8d69861a8faaf4',\n '0x3916d5f434db8d4484ae1eac9e41b52fa7c7533455c981de7fc5c1a71eb8f724',\n '0xbf41db3b3f68f8f63eeaebd5bc1ce2415d040b7b94500f7282c089f53419d2db',\n '0x34b93b01752e33a163b5a7df9d4e617b1890735018f0587c79882446f1d26c23',\n '0xa577f1737d0cfa5086e1f08361f3b6862073a8b3e46f1c0bdec250868496cfc1',\n '0x6225bab88e36f6dab56d68746628df81ce9928c6e4bf850834b3119e3ee39a54',\n '0x24384e8256a5020dc0812203941ee3309a7826f55578bf968aa840fd816ef272',\n '0x5042b8012bc4509d58c3a74de1e4f743ed9a77cd01c937d70d4df6b453ca1514',\n '0xad2ff5d291987d56635a2bbe71b3443238f023496a0de43995090cc422451bc7',\n '0x776bdf8e95719b87d556ed4f57368bb7f532bf9a75eb0bc84ddab73e0502a4d5',\n '0x1f880e338264fc4f52e8dc943cbce87eb444b9f785731217e8052d3eb5a3e720',\n '0xb4fddb24061260b3bbc9096678fe3c4c590c085b35ce127be453998d7773ab17',\n '0xe17c40451bb94283c6deec2bf4c1952f779c19a248924ec193e9df1f25fbf6b3',\n '0xb0451623cfa97aa6fb25929409d2f0ec3ba40c28507db206ea960919cbeba81c',\n '0xf39b158290c97c6df0c9e3370f7c0f6f385141f5db121b7c5c633db1ee2bba6f',\n '0xee77fa0fd0faa35bc045e7992710498b509a9e574d8c2ddbf14f391ce99e2acc',\n '0x8533c43a65eee30897d534ac754be370da202ae747b3250be3cf03d35c67f05e',\n '0x7cd8e10cfa247b21bf007ef8e46ade3b0fafc99c673a0fd3122e20a6d8ea897e',\n '0xbfff1a8408d4d0bc0d1cd54d0337850196d10be88ce3428cf98e56691452cede',\n '0x16b442338667e68f2fa4c65e35335ef9df31338820f3d48bc2bc09b268333ef2',\n '0x6286b1809a3dedc625cda2ed8eb4136f60d90afdb27a53890cf4106daa4cfc9d',\n '0x8fec825b3726d94aa02fe61d66e9839f7595e19ba28e93ddbfa9c2213c4e8694',\n '0xb066dd2176df6e34d637e9e91c6928119dde9710c0861b49dbed52fecd69d6e5',\n '0x04ceaddd1c4a3a5139925aec1ba6c49e37ea3d981d61321ead805d34b6c39593',\n '0x59134606cbd11c68629c820f2252f1d0695037a3325be1b7548862d1c0595d12',\n '0xcb0ae0cd8c5824874a0c14726dd0448bba3d64e443756282d52b87a2b86d85ff',\n '0xdd9c6c417927984d38e9cf3c3f09a07e30d245d6ceccc5232376887608f892d9',\n '0xb7c81bf97b27c1fc9c444b78c69297080233ead5c9c251001efc35d9fb442f3a',\n '0xa215a0cba987bb0b865220fdb06ff1f97ee3f8ffdb15f8121cdfe472b4cccb35',\n '0x2bf1ceb64485d63d01fd60bbd889f1168a11e68a148c7365c3eba39d39bf3729',\n '0xa0cd6935872254a63e9289ddeb822fc540ec65f804098e9adcfe808c7f3780b9',\n '0xb6acf2618e3e482000c5bd19e0b20545fd2f9f44aa3a8984bd1ad94370382109',\n '0xb48fd08b1d3e0bcb13527fc60d8d07f1192d31f583111b092338ec26b974f141',\n '0x4f39409c5560810fabef19ecd5149d65b356eff444fba8d53f308f3c66918b1f',\n '0x04be8576dacfb31da83ef6a803defef1fad8ce1dae79e991fa2e7c29a29555e4',\n '0xf2bc272c87fccf593f1de5b2ddb9fb0181c8bd78592b2bcb47e493e47d0da26c',\n '0xcd177e97af23751a5cb2e9cc657532c9d0ab42a1fe7acf256ac1261a938e3ff8',\n '0x167412a9319d59490ed07f97aa7b529fedcb66db571cd83ba7aea8bc5979b3d7',\n '0x642e57d2c89db906ed876864ff25249d8edd29013b14ee02c5db66f87e85fae9',\n '0xf8ef81068322770dcbebba941f38abc23f60ef5196e4d6dac830b69591fec8f9',\n '0x6793117f70c7ca60a0c342d1992a971c27845bf24a4031c494ffe34cddcb433f',\n '0xe83378bd92ea696d41117746797f96ec263f6dcbe7e577e99bccb4004b4c7533',\n '0x6742966fd92709a95b662fee8d3f972a312583e03dc4ec1e2cbc731aab35a9ed',\n '0x394c2541148eb12603e733df6c52bc0a1eb6738e96ba0ba771b480e8beb802a8',\n '0xd51353e6a4515f1789662da44c6ffd9fcfe269b2b224dd1b32ca405394351806',\n '0x9f419c99adddfd0daa57a9499046850bd7495429b7f53bfe5393be9be084490d',\n '0x0aba47da83c3acde9bda4ba49e4b2d8720b06d03270a14c7e47beefff5cb6ddc',\n '0xa395e131536dd217424ff850a8d08844d04af160c46f0375c11643344907fce8',\n '0x5103b075bc1ce72142ddf8f7d8a9aca4a5af85e6160e27170d24a3a8cc544bf6',\n '0xd2d586a17bfefd7104e6d18e7770503eb7cf8314be1242da65a5a34c21dea0cc',\n '0x3f072c49f916d28a64aa6d5e3a421953c1f829fc1575f2b90aafa9f16f051990',\n '0x682eac7374b7bc5b07f89f1d368c968e6edad0e3222fd238dbf0bcec3c3a90fe',\n '0x00d4800306b1d9d1d314175fabfb3ccc0acecc2947b4c1326d943d8145a8d6dd',\n '0xbc47028d01cfe0e6c3b25feab9197e3f35cdec6757e2bc8190fdd5ecb5f0c53a',\n '0x4fcf31e40d7760ee651c868702d5b6918d54384be5d7fa8c47117c7497df22cf',\n '0xae3a7a76f00c1fdfe3f09b0981ea0689673ae130080a3bc456b9753dc74e141f',\n '0xc4da6d2d58cba3e58efe112c5b4f806641bd8e98b012381fd915de0359800913',\n '0xdf4b3d4aaacd3fa2bfe3da2a28b608bb6ad74f5595741ebd0f8b4c34459e0e5b',\n '0xecc60e1b9c3b21f7dece0d1da1da482762678745c4681128042748648656deb7',\n '0x825a21523deb08ffe967047d9ae76e6a03f24c13b8201f7cab37005fd08ed6f1',\n '0x88e5128d2c8ad94423b1060f3bbcde104f35ff7a49d2a9fc6dfb07e210a84236',\n '0x8045e771ecd3c409c4245a003887b90964e31b63717252cfe4cd13d86ceaa2c3',\n '0xbd494f677ec2361dda0fefe2ec9689f8d4c8ab585e5a39884290850e5a4e28df',\n];\n\nexport const DYNAMIC_COLLECTION_IDS = [\n '67aca668-31b0-4713-91cf-079d392b041a', // Kumo\n\t'b5d64823-54b5-43ff-b58f-8b8abf08d27b', // Hunting Snake Legends\n\t'5ea655c3-b8f9-4882-9090-3c59d1635d00', // Fever Maniac\n\t'f7ccba9d-04f8-49c4-8e1f-d264b122584d', // SuiFrens: Capys\n\t'a8c93237-922f-4d6c-825f-bdcbc4bf10fc', // Anima Genesis Avatars\n '6a5dda9e-aaa8-4f0e-be53-336ae2121c9c', // Capybara Money Bag Mystery\n 'fdf8a578-2914-47aa-a318-3a0a80b29025', // Phantom Froze Over\n '75381a59-abde-4e4b-aac9-b1c5ba10b4da', // Claynosaurz: Phantom Purr-ize Patch\n];\n\nexport const XOCIETY_FRONTIER_COLLECTION_ID = '9a0fcf4f-c77c-42d8-acad-5054e025eb53';\n\nexport type CustomTransferRuleConfig = {\n\tmoduleName: string;\n\tpackageId: string;\n\tparams: Record<string, string>;\n};\n\nexport const CUSTOM_TRANSFER_RULES_BY_COLLECTION: Record<string, CustomTransferRuleConfig[]> = {\n\t'fb51fc70-8263-42a3-8999-6430a7c76fe6': [ // Pawtato Land\n\t\t{\n\t\t\tmoduleName: 'table_allowlist_rule',\n\t\t\tpackageId: '0x7c369055372dc2ca64563911d51fc7e5ff8e162a8a6c5be3301b3831d21917ca',\n\t\t\tparams: {\n\t\t\t\tregistryId: '0xafd3fdce255b81f0a4d2221d42dd50fddb933496137248efeca8d3853da78ba9',\n\t\t\t},\n\t\t},\n\t],\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchNftById = gql`\n\tquery fetchNftById($nftId: uuid!) {\n\t\tnfts(where: { id: { _eq: $nftId } }) {\n\t\t\tid\n\t\t\ttoken_id\n\t\t\tcollection_id\n\t\t\tproperties\n\t\t\tchain_state\n\t\t\tlisted\n\t\t\towner\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tlistings(where: { listed: { _eq: true } }) {\n\t\t\t\tprice\n\t\t\t\tnonce\n\t\t\t\tmarket_name\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const fetchNftsById = gql`\n\tquery fetchNftsById($nftIds: [uuid!]) {\n\t\tnfts(where: { id: { _in: $nftIds } }) {\n\t\t\tid\n\t\t\ttoken_id\n\t\t\tcollection_id\n\t\t\tproperties\n\t\t\tchain_state\n\t\t\tlisted\n\t\t\towner\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const fetchNftsWithListingsById = gql`\n\tquery fetchNftsWithListingsById($nftIds: [uuid!]) {\n\t\tnfts(where: { id: { _in: $nftIds } }) {\n\t\t\tid\n\t\t\ttoken_id\n\t\t\tcollection_id\n\t\t\tproperties\n\t\t\tchain_state\n\t\t\tlisted\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tlistings {\n\t\t\t\tlisted\n\t\t\t\tmarket_name\n\t\t\t\tprice\n\t\t\t\tnonce\n\t\t\t\tseller\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n","interface CollectionChainState {\n\tnft_type: string;\n}\n\ninterface NFT {\n\tproperties?: {\n\t\tnft_type?: string;\n\t};\n\tcontract?: {\n\t\tproperties?: {\n\t\t\tnft_type?: string;\n\t\t};\n\t};\n}\n\nexport const getNftType = ({\n\tcollectionId,\n\tcollectionChainState,\n\tnft,\n}: {\n\tcollectionId: string;\n\tcollectionChainState?: CollectionChainState;\n\tnft?: NFT;\n}): string => {\n\tif (collectionId === 'a6fabb11-4713-4203-bce8-a3c4f673b5a7') {\n\t\t// dungeon move, each nft has different type based off it's identity, so use nft.properties.nft_type\n\t\treturn nft?.properties?.nft_type;\n\t}\n\n\tif (collectionChainState?.nft_type) return collectionChainState.nft_type;\n\n\tlet nftType = nft?.properties?.nft_type;\n\tif (!nftType || nftType?.split('::')?.length <= 1) {\n\t\tnftType = nft?.contract?.properties?.nft_type;\n\t}\n\n\treturn nftType ?? '';\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchSharedObjectsByType = gql`\n\tquery fetchSharedObjectsByType($type: String!) {\n\t\tsharedObjects: shared_objects_by_type(type: $type) {\n\t\t\tid\n\t\t\tmodule\n\t\t\tpkg\n\t\t\ttype\n\t\t}\n\t}\n`;\n","export const addLeadingZerosAfter0x = (str: string): string =>\n\t`0x${str?.replace('0x', '').padStart(64, '0')}`;\n\nexport const addLeadingZerosToPackage = (str: string, skip0x?: boolean) => {\n\tconst address = str?.split('::')[0];\n\tconst suffix = `::${str?.split('::').slice(1).join('::')}`;\n\n\treturn `${skip0x ? '' : '0x'}${address?.replace('0x', '').padStart(64, '0')}${suffix}`;\n};\n","import {\n\tCRYPTOPEDIA_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tFUDDIES_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tGNOMES_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tNOVAGEN_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tSACABAM_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tSTORKS_ORIGIN_BYTE_ALLOW_LIST,\n\tSUISHI_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tSUI_ECOSYSTEM_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n} from '../constants';\nimport { gqlChainRequest } from '../graphql/gqlChainRequest';\nimport { fetchSharedObjectsByType } from '../graphql/queries/fetchSharedObjectsByType';\nimport { addLeadingZerosAfter0x } from '../utils/addLeadingZerosAfter0x';\n\nexport type SuiSharedObjects = {\n\torderbook: string;\n\tcollection: string;\n\troyaltyStrategy: string;\n\tkeepsakeRoyaltyStrategy: string;\n\ttransferPolicy: string;\n\tmarketplace: string;\n\tallowList: string;\n};\n\nexport const getSharedObjects = async (nftType: string): Promise<SuiSharedObjects> => {\n\tconst nftTypeSplit = nftType?.split('::');\n\tif (nftTypeSplit?.[0]) nftTypeSplit[0] = addLeadingZerosAfter0x(nftTypeSplit[0]);\n\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchSharedObjectsByType,\n\t\tvariables: { type: nftTypeSplit?.join('::') },\n\t});\n\n\tlet allowList = res?.sharedObjects?.filter((object: any) => object?.module === 'allowlist')?.[0]\n\t\t?.id;\n\tif (!allowList) allowList = ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\tif (\n\t\tnftType === '0x5f1fa51a6d5c52df7dfe0ff7efaab7cc769d81e51cf208a424e455575aa1ed7a::stork::Stork'\n\t) {\n\t\tallowList = STORKS_ORIGIN_BYTE_ALLOW_LIST;\n\t}\n\n\tif (\n\t\tnftType === '0xf1681f601a1c021a0b4c8c8859d50917308fcbebfd19364c4e856ac670bb8496::suishi::Suishi'\n\t) {\n\t\tallowList = SUISHI_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tif (\n\t\tnftType?.includes(\n\t\t\t'ac176715abe5bcdaae627c5048958bbe320a8474f524674f3278e31af3c8b86b::fuddies::Fuddies',\n\t\t)\n\t) {\n\t\tallowList = FUDDIES_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tif (\n\t\tnftType ===\n\t\t'0x71bd3651e47a7590e607b976a332338e2230e995fa96de430703af537086b643::cryptopedia::Cryptopedia'\n\t) {\n\t\tallowList = CRYPTOPEDIA_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tif (\n\t\tnftType === '0xe81341eba87d19f8d53ee237b3666cff6a74c9fd7a960cf5753af69bc7c6a221::gnomes::Gnome'\n\t) {\n\t\tallowList = GNOMES_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tif (\n\t\tnftType ===\n\t\t'0x7f481ffff2b72f3f1d9b70d5ad999d8b514a6281aa29aedbb6c537bd4b0d04ad::sacabam::Sacabam'\n\t) {\n\t\tallowList = SACABAM_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tif (\n\t\tnftType ===\n\t\t'0x5fe8e884960f6977f813d871a3d43049d72d19d4ad07819b979c06434f60af4d::mint::SuiEcosystemNFT'\n\t) {\n\t\tallowList = SUI_ECOSYSTEM_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tif (\n\t\tnftType ===\n\t\t'0xf417417b1914266b634b3dc90050be9f28fb755e9d29f36d1892012e0ad6f816::novagen::Novagen'\n\t) {\n\t\tallowList = NOVAGEN_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tconst transferPolicy = res?.sharedObjects?.filter(\n\t\t(object: any) => object?.module === 'transfer_policy',\n\t)?.[0]?.id;\n\n\tlet orderbook = res?.sharedObjects?.filter((object: any) => object?.module === 'orderbook')?.[0]\n\t\t?.id;\n\n\tif (nftTypeSplit?.join('::')?.includes('keepsake_nft::KEEPSAKE')) {\n\t\torderbook = null;\n\t}\n\n\treturn {\n\t\torderbook,\n\t\tcollection: res?.sharedObjects?.filter((object: any) => object?.module === 'collection')?.[0]\n\t\t\t?.id,\n\t\tmarketplace: res?.sharedObjects?.filter((object: any) => object?.module === 'marketplace')?.[0]\n\t\t\t?.id,\n\t\troyaltyStrategy: res?.sharedObjects?.filter(\n\t\t\t(object: any) => object?.module === 'royalty_strategy_bps',\n\t\t)?.[0]?.id,\n\t\tkeepsakeRoyaltyStrategy: res?.sharedObjects?.filter(\n\t\t\t(object: any) => object?.module === 'keepsake_royalties',\n\t\t)?.[0]?.id,\n\t\ttransferPolicy,\n\t\tallowList,\n\t};\n};\n","import { type TransactionObjectInput } from '@mysten/sui/dist/cjs/transactions';\nimport { normalizeSuiObjectId } from '@mysten/sui/utils';\nimport {\n\tBLUEMOVE_CREATOR_CONFIG_OBJECT,\n\tBLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT,\n\tBLUEMOVE_KIOSK_OFFER_COLLECTION_BIDDER_BAG,\n\tBLUEMOVE_KIOSK_OFFER_COLLECTION_DATA_OBJECT,\n\tBLUEMOVE_MARKET_CONFIG_OBJECT,\n\tBLUEMOVE_OFFER_COLLECTION_DATA_OBJECT,\n\tBLUEMOVE_ROYALTY_COLLECTION_OBJECT,\n\tTOCEN_MARKETPLACE_OBJECT,\n\tTRADEPORT_BIDDING_STORE,\n} from '../../constants';\nimport { getRoyaltyRuleModule } from '../../helpers/getRoyaltyRuleModule';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { hasPersonalKioskRule } from '../../helpers/hasPersonalKioskRule';\nimport { hasNativeKioskTransferPolicyRules } from '../../helpers/hasTransferPolicyRules';\nimport { isSingleBid } from '../../helpers/isSIngleBid';\nimport { assertNftInSharedKiosk } from '../../helpers/kiosk/assertNftInSharedKiosk';\nimport { getRulePackageId } from '../../helpers/kiosk/getRulePackageId';\nimport { isBluemoveKioskBid } from '../../helpers/kiosk/isBluemoveKioskBid';\nimport { isTradePortKioskBid } from '../../helpers/kiosk/isTradePortKioskBid';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { takeAndBorrowNftFromKiosk } from '../../helpers/kiosk/takeAndBorrowNftFromKiosk';\nimport { confirmOBTranfer } from '../../helpers/originByte/confirmOBTranfer';\nimport { depositItemIntoOBKiosk } from '../../helpers/originByte/depositNftIntoOBKiosk';\nimport { getOrCreateOBKiosk } from '../../helpers/originByte/getOrCreateOBKiosk';\nimport { isOriginByteBid } from '../../helpers/originByte/isOriginByteBid';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { shareOriginByteKiosk } from '../../helpers/originByte/shareOriginByteKiosk';\nimport { getObjectType } from '../../helpers/rpc/getObjectType';\nimport {\n\taddSingleBidAcceptNftBidTx,\n\taddTradeportKioskAcceptNftBidTx,\n} from '../acceptNftBids/addAcceptNftBidTxs';\nimport { addOriginByteUnlistTx } from '../unlistListings/addUnlistListingTxs';\nimport { type AcceptCollectionBidTx } from './acceptCollectionBid';\n\nexport function addTradeportAcceptCollectionBidTx({\n\ttx,\n\tsharedObjects,\n\tnftTokenId,\n\tnftType,\n\titemTakenOutOfNativeKiosk,\n\tbidNonce,\n}: AcceptCollectionBidTx) {\n\tconst { collection, royaltyStrategy } = sharedObjects ?? {};\n\n\tif (collection && royaltyStrategy) {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::ob_accept_bid',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_BIDDING_STORE),\n\t\t\t\ttx.pure.address(bidNonce),\n\t\t\t\titemTakenOutOfNativeKiosk ? tx.object(itemTakenOutOfNativeKiosk) : tx.object(nftTokenId),\n\t\t\t\ttx.object(collection),\n\t\t\t\ttx.object(royaltyStrategy),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t} else {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::accept_bid',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_BIDDING_STORE),\n\t\t\t\ttx.pure.address(bidNonce),\n\t\t\t\titemTakenOutOfNativeKiosk ? tx.object(itemTakenOutOfNativeKiosk) : tx.object(nftTokenId),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t}\n}\n\nexport const addTradeportKioskAcceptCollectionBidTx = async (txData: AcceptCollectionBidTx) => {\n\tawait addTradeportKioskAcceptNftBidTx(txData);\n};\n\nexport async function addOriginByteAcceptCollectionBidTx(txData: AcceptCollectionBidTx) {\n\tconst {\n\t\ttx,\n\t\tsharedObjects,\n\t\tsellerKiosk,\n\t\titemOwner,\n\t\tnftTokenId,\n\t\tnftType,\n\t\tbidAmount,\n\t\tbidNonce,\n\t\tlistingPrice,\n\t} = txData;\n\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: sellerKiosk,\n\t\twalletAddress: itemOwner,\n\t});\n\n\tif (listingPrice && listingPrice > 0) {\n\t\taddOriginByteUnlistTx({\n\t\t\t...txData,\n\t\t\tsharedObjects,\n\t\t\tprice: txData?.listingPrice,\n\t\t});\n\t}\n\n\tconst { kiosk, isNewKiosk } = await getOrCreateOBKiosk({\n\t\ttx,\n\t\taddress: itemOwner,\n\t\tkioskToUseIfExists: sellerKiosk,\n\t});\n\n\tif (isNewKiosk) {\n\t\tdepositItemIntoOBKiosk({\n\t\t\ttx,\n\t\t\tkiosk,\n\t\t\tnftTokenId,\n\t\t\tnftType,\n\t\t});\n\t}\n\n\tconst { orderbook } = sharedObjects;\n\n\tconst [tradeInfo] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::market_sell',\n\t\targuments: [\n\t\t\ttx.object(orderbook),\n\t\t\ttx.object(kiosk),\n\t\t\ttx.pure.u64(bidAmount),\n\t\t\ttx.object(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\tconst [id] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0xa0bab69d913e5a0ce8b448235a08bcf4c42da45c50622743dc9cab2dc0dff30f::orderbook::trade_id',\n\t\targuments: [tx.object(tradeInfo)],\n\t\ttypeArguments: [],\n\t});\n\n\tconst transferRequest = tx.moveCall({\n\t\ttarget:\n\t\t\t'0xa0bab69d913e5a0ce8b448235a08bcf4c42da45c50622743dc9cab2dc0dff30f::orderbook::finish_trade',\n\t\targuments: [tx.object(orderbook), tx.object(id), tx.object(kiosk), tx.object(bidNonce)],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\tconfirmOBTranfer({ tx, sharedObjects, transferRequest, nftType });\n\n\tif (isNewKiosk) {\n\t\tshareOriginByteKiosk({ tx, kiosk });\n\t}\n}\n\nexport function addBluemoveAcceptCollectionBidTx({\n\ttx,\n\tnftTokenId,\n\tnftType,\n\tbidNonce,\n\tlistingPrice,\n\titemTakenOutOfNativeKiosk,\n}: AcceptCollectionBidTx) {\n\tlet unlistedItem: TransactionObjectInput;\n\tif (listingPrice && listingPrice > 0) {\n\t\tunlistedItem = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::marketplace::delist',\n\t\t\targuments: [tx.object(BLUEMOVE_MARKET_CONFIG_OBJECT), tx.pure.address(nftTokenId)],\n\t\t\ttypeArguments: [nftType, nftType],\n\t\t});\n\t}\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::offer_collection::accept_offer_collection',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_MARKET_CONFIG_OBJECT),\n\t\t\ttx.object(BLUEMOVE_ROYALTY_COLLECTION_OBJECT),\n\t\t\ttx.object(BLUEMOVE_CREATOR_CONFIG_OBJECT),\n\t\t\ttx.object(BLUEMOVE_OFFER_COLLECTION_DATA_OBJECT),\n\t\t\ttx.pure.u64(bidNonce),\n\t\t\titemTakenOutOfNativeKiosk\n\t\t\t\t? tx.object(itemTakenOutOfNativeKiosk)\n\t\t\t\t: unlistedItem\n\t\t\t\t\t? tx.object(unlistedItem)\n\t\t\t\t\t: tx.object(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addBluemoveKioskAcceptCollectionBidTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n\tbidNonce,\n}: AcceptCollectionBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xcc97b74ed95c8e8a3ed88050a898727dee37896da579fc400d482b64db6149ff::kiosk_offer_collection_v2::accept_offer_collection_v2',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT),\n\t\t\ttx.object(BLUEMOVE_KIOSK_OFFER_COLLECTION_DATA_OBJECT),\n\t\t\ttx.object(BLUEMOVE_KIOSK_OFFER_COLLECTION_BIDDER_BAG),\n\t\t\ttx.pure.u64(bidNonce),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addTocenAcceptCollectionBidTx({\n\ttx,\n\tnftTokenId,\n\tnftType,\n\tbidAmount,\n\tbidder,\n}: AcceptCollectionBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x3605d91c559e80cf8fdeabae9abaccb0bc38f96eac0b32bf47e95a9159a5277f::tocen_marketplace::accept_offer_list',\n\t\targuments: [\n\t\t\ttx.object(TOCEN_MARKETPLACE_OBJECT),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.address(bidder),\n\t\t\ttx.pure.u64(bidAmount),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addTradePortAcceptCollectionBidTxHandler(txData: AcceptCollectionBidTx) {\n\tconst bidType = await getObjectType({\n\t\tsuiClient: txData?.suiClient,\n\t\tobjectId: normalizeSuiObjectId(txData?.bidNonce),\n\t});\n\n\tif (isSingleBid(bidType)) {\n\t\tawait addSingleBidAcceptNftBidTx(txData);\n\t\treturn;\n\t}\n\n\tif (isOriginByteBid(bidType)) {\n\t\tif (isOriginByteCollection(txData?.transferPolicies)) {\n\t\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\t\tawait addOriginByteAcceptCollectionBidTx({ ...txData, sharedObjects });\n\n\t\t\treturn;\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`You cannot accept an Origin Byte bid with a NFT outside of an Origin Byte kiosk. Nft Token Id: ${txData?.nftTokenId}`,\n\t\t);\n\t}\n\n\t// If nft has no transfer policy rules but is inside a kiosk, take it out of the kiosk\n\tif (!hasNativeKioskTransferPolicyRules(txData?.transferPolicies) && txData?.sellerKiosk) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tconst borrowedItem = await takeAndBorrowNftFromKiosk({\n\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\t\tkioskTx,\n\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\tnftTokenId: txData?.nftTokenId,\n\t\t\t\t\tnftType: txData?.nftType,\n\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\tkioskOwner: txData?.seller,\n\t\t\t\t});\n\n\t\t\t\taddTradeportAcceptCollectionBidTx({ ...txData, itemTakenOutOfNativeKiosk: borrowedItem });\n\t\t\t},\n\t\t});\n\t}\n\n\tif (isTradePortKioskBid(bidType)) {\n\t\tconst royaltyRuleModule = getRoyaltyRuleModule(txData?.nftType);\n\t\tconst royaltyRulePackageId = await getRulePackageId({\n\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\tsuiClient: txData?.suiClient,\n\t\t\tnftType: txData?.nftType,\n\t\t\truleType: 'royalty_rule',\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t});\n\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldConvertToPersonalKiosk: Boolean(hasPersonalKioskRule(txData?.transferPolicies)),\n\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\tfailIfNoKiosk: Boolean(txData?.sellerKiosk),\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tif (hasNativeKioskTransferPolicyRules(txData?.transferPolicies) && !txData?.sellerKiosk) {\n\t\t\t\t\tkioskTx.place({\n\t\t\t\t\t\titem: txData?.nftTokenId,\n\t\t\t\t\t\titemType: txData?.nftType,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tawait addTradeportKioskAcceptCollectionBidTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t\troyaltyRulePackageId,\n\t\t\t\t\troyaltyRuleModule,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\taddTradeportAcceptCollectionBidTx({ ...txData, sharedObjects });\n}\n\nexport async function addBluemoveAcceptCollectionBidTxHandler(txData: AcceptCollectionBidTx) {\n\tconst bidType = await getObjectType({ suiClient: txData?.suiClient, objectId: txData?.bidNonce });\n\n\tif (isOriginByteBid(bidType)) {\n\t\tif (isOriginByteCollection(txData?.transferPolicies)) {\n\t\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\t\tawait addOriginByteAcceptCollectionBidTx({ ...txData, sharedObjects });\n\n\t\t\treturn;\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`You cannot accept an Origin Byte bid with a NFT outside of an Origin Byte kiosk. Nft Token Id: ${txData?.nftTokenId}`,\n\t\t);\n\t}\n\n\tif (isBluemoveKioskBid(txData?.bidNonce)) {\n\t\tif (txData?.sellerKiosk) {\n\t\t\treturn kioskTxWrapper({\n\t\t\t\ttx: txData?.tx,\n\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tawait addBluemoveKioskAcceptCollectionBidTx({\n\t\t\t\t\t\t...txData,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`You cannot accept an Native Kiosk Bid with a NFT outside of a native kiosk. Nft Token Id: ${txData?.nftTokenId}`,\n\t\t);\n\t}\n\n\tif (!isBluemoveKioskBid(txData?.bidNonce)) {\n\t\tif (txData?.sellerKiosk) {\n\t\t\treturn kioskTxWrapper({\n\t\t\t\ttx: txData?.tx,\n\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tconst borrowedItem = await takeAndBorrowNftFromKiosk({\n\t\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\t\tnftTokenId: txData?.nftTokenId,\n\t\t\t\t\t\tnftType: txData?.nftType,\n\t\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\t\t\t});\n\n\t\t\t\t\taddBluemoveAcceptCollectionBidTx({ ...txData, itemTakenOutOfNativeKiosk: borrowedItem });\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\taddBluemoveAcceptCollectionBidTx(txData);\n\t}\n}\n\nexport function addTocenAcceptCollectionBidTxHandler(txData: AcceptCollectionBidTx) {\n\taddTocenAcceptCollectionBidTx(txData);\n}\n","import { addLeadingZerosAfter0x } from './addLeadingZerosAfter0x';\n\nexport const normalizedNftType = (nftType: string): string => {\n\tconst nftTypeSplit = nftType?.split('::');\n\tif (nftTypeSplit?.[0]) nftTypeSplit[0] = addLeadingZerosAfter0x(nftTypeSplit[0]);\n\treturn nftTypeSplit?.join('::');\n};\n","import { normalizedNftType } from '../utils/normalizeNftType';\n\nexport const getRoyaltyRuleModule = (nftType: string) =>\n\tnormalizedNftType(nftType) ===\n\t'0xe7e651e4974fe367aa2837712d68081efb299c470242a15e2b9c26ea326159ec::card::SudoCard'\n\t\t? 'kiosk_royalty_rule'\n\t\t: 'royalty_rule';\n","export const getNativeKioskTransferPolicies = (transferPolicies: any) => {\n\tlet nativeKioskTransferPolicies = transferPolicies?.filter(\n\t\t(policy: any) =>\n\t\t\t!policy?.is_origin_byte &&\n\t\t\t!policy?.is_disabled &&\n\t\t\tpolicy?.rules?.filter(\n\t\t\t\t(rule: any) =>\n\t\t\t\t\trule?.type?.includes('royalty_rule') ||\n\t\t\t\t\trule?.type?.includes('kiosk_lock_rule') ||\n\t\t\t\t\trule?.type?.includes('personal_kiosk_rule') ||\n\t\t\t\t\trule?.type?.includes('floor_price_rule'),\n\t\t\t)?.length > 0,\n\t);\n\n\tif (nativeKioskTransferPolicies?.length === 0 && transferPolicies?.length > 0) {\n\t\tnativeKioskTransferPolicies = transferPolicies?.filter(\n\t\t\t(policy: any) => !policy?.is_origin_byte && !policy?.is_disabled,\n\t\t);\n\t}\n\n\treturn nativeKioskTransferPolicies;\n};\n\nexport const knownTransferPolicyRules = [\n\t'royalty_rule',\n\t'kiosk_lock_rule',\n\t'personal_kiosk_rule',\n\t'floor_price_rule',\n];\n","import { getNativeKioskTransferPolicies } from './kiosk/getNativeKioskTransferPolicies';\n\nexport const hasPersonalKioskRule = (transferPolicies: any): boolean =>\n\tgetNativeKioskTransferPolicies(transferPolicies)?.some(\n\t\t(policy: any) =>\n\t\t\tpolicy?.rules?.filter((rule: any) => rule?.type?.includes('personal_kiosk_rule'))?.length > 0,\n\t);\n","import { getNativeKioskTransferPolicies } from './kiosk/getNativeKioskTransferPolicies';\n\nexport const hasNativeKioskTransferPolicyRules = (transferPolicies: any): boolean => {\n\tconst nativeKioskTransferPolicies = getNativeKioskTransferPolicies(transferPolicies);\n\treturn nativeKioskTransferPolicies?.some((policy: any) => policy?.rules?.length > 0);\n};\n","import { TRADEPORT_MULTI_BID_PACKAGE_ORIGINAL } from '../constants';\n\nexport const isSingleBid = (bidType: string): boolean => {\n\tif (!bidType) {\n\t\treturn false;\n\t}\n\n\tif (!bidType.startsWith('0x')) {\n\t\tbidType = `0x${bidType}`;\n\t}\n\n\treturn bidType === `${TRADEPORT_MULTI_BID_PACKAGE_ORIGINAL}::tradeport_biddings::SingleBid`;\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchKiosksByOwner = gql`\n\tquery fetchKiosksByOwner($ownerAddress: String!) {\n\t\tkiosks: kiosks_by_owner_address(owner_address: $ownerAddress) {\n\t\t\tid\n\t\t\tis_origin_byte\n\t\t\tis_personal\n\t\t\towner_address\n\t\t\tprofits\n\t\t\tis_shared\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchKiosksByOwner } from '../../graphql/queries/fetchKiosksByOwner';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { type SharedKioskState } from './sharedKioskState.type';\n\nexport const assertNftInSharedKiosk = async ({\n\tkioskId,\n\twalletAddress,\n\tsharedKioskState,\n}: {\n\tkioskId: string;\n\twalletAddress: string;\n\tsharedKioskState?: SharedKioskState;\n}): Promise<void> => {\n\tif (!sharedKioskState?.ownerKiosks) {\n\t\tconst res = await gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchKiosksByOwner,\n\t\t\tvariables: { ownerAddress: addLeadingZerosAfter0x(walletAddress) },\n\t\t});\n\t\tif (sharedKioskState) {\n\t\t\tsharedKioskState.ownerKiosks = res?.kiosks;\n\t\t}\n\t}\n\n\tconst nftKiosk = sharedKioskState?.ownerKiosks?.find((k: any) => k.id === kioskId);\n\n\tif (nftKiosk && !nftKiosk?.is_shared) {\n\t\tthrow new Error('NFT is inside a kiosk that is not shared');\n\t}\n};\n","import { getNormalizedRuleType, type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { addHexPrefix } from '../../utils/addHexPrefix';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { getTransferPolicyRuleNamesFromSuiObject } from '../getTransferPolicyRuleNamesFromSuiObject';\nimport { getNativeKioskTransferPolicies } from './getNativeKioskTransferPolicies';\n\ntype RuleType = 'kiosk_royalty_rule' | 'royalty_rule' | 'personal_kiosk_rule' | 'kiosk_lock_rule';\n\nexport const getRulePackageId = async ({\n\ttransferPolicies,\n\tnftType,\n\truleType,\n\tkioskClient,\n\tsuiClient,\n}: {\n\ttransferPolicies: any[];\n\tsuiClient: SuiClient;\n\tnftType: string;\n\truleType: RuleType;\n\tkioskClient: KioskClient;\n}) => {\n\tlet rule: string | undefined;\n\n\tif (transferPolicies.length > 0) {\n\t\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\t\tconst ruleNames = await getTransferPolicyRuleNamesFromSuiObject({\n\t\t\tsuiClient,\n\t\t\ttransferPolicyId,\n\t\t});\n\n\t\trule = ruleNames.filter((ruleName) => ruleName?.split('::')?.[1] === ruleType)?.[0];\n\t} else {\n\t\tconst transferPoliciesFromMystenSdk = await kioskClient.getTransferPolicies({\n\t\t\ttype: normalizedNftType(nftType),\n\t\t});\n\n\t\tif (transferPoliciesFromMystenSdk.length > 0) {\n\t\t\trule = transferPoliciesFromMystenSdk\n\t\t\t\t.flatMap((policy) => policy.rules)\n\t\t\t\t.filter((rule) => rule?.split('::')?.[1] === ruleType)?.[0];\n\t\t} else {\n\t\t\tthrow new Error(`No transfer policy found for ${nftType}`);\n\t\t}\n\t}\n\n\tconst ruleDefinition = kioskClient.rules.find(\n\t\t(x) => getNormalizedRuleType(x.rule) === getNormalizedRuleType(rule),\n\t);\n\n\tlet rulePackageId = ruleDefinition?.packageId;\n\tif (!rulePackageId) {\n\t\trulePackageId = rule?.split('::')?.[0];\n\t}\n\n\treturn addHexPrefix(rulePackageId);\n};\n","export function addHexPrefix(input: string): string {\n\tif (input.startsWith('0x')) {\n\t\treturn input;\n\t}\n\n\treturn '0x' + input;\n}\n","import { type SuiClient } from '@mysten/sui/client';\nimport { normalizeStructTag, normalizeSuiObjectId } from '@mysten/sui/utils';\n\nexport const getTransferPolicyRuleNamesFromSuiObject = async ({\n\tsuiClient,\n\ttransferPolicyId,\n}: {\n\tsuiClient: SuiClient;\n\ttransferPolicyId: string;\n}) => {\n\tconst { data, error } = await suiClient.getObject({\n\t\tid: normalizeSuiObjectId(transferPolicyId),\n\t\toptions: {\n\t\t\tshowContent: true,\n\t\t},\n\t});\n\n\tif (error) {\n\t\tthrow new Error(`Error on getting SUI object ${transferPolicyId}: ${error.code}`);\n\t}\n\n\tconst content = data.content as unknown as {\n\t\tfields: {\n\t\t\trules: {\n\t\t\t\tfields: {\n\t\t\t\t\tcontents: Array<{ fields: { name: string } }>;\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t};\n\tconst ruleNames = content.fields.rules.fields.contents.map((rule) =>\n\t\tnormalizeStructTag(rule.fields.name),\n\t);\n\n\treturn ruleNames;\n};\n","export const isBluemoveKioskBid = (bidNonce: string): boolean => bidNonce?.startsWith('10000');\n","import { TRADEPORT_KIOSK_BID_NONCE_TYPE } from '../../constants';\n\nexport const isTradePortKioskBid = (bidType: string): boolean =>\n\tbidType === TRADEPORT_KIOSK_BID_NONCE_TYPE;\n","import { type KioskClient, KioskTransaction } from '@mysten/kiosk';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchKiosksByOwner } from '../../graphql/queries/fetchKiosksByOwner';\nimport { fetchOwnerCapByKiosk } from '../../graphql/queries/fetchOwnerCapByKiosk';\nimport { fetchPersonalCapByKiosk } from '../../graphql/queries/fetchPersonalCapByKiosk';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { assertNftInSharedKiosk } from './assertNftInSharedKiosk';\nimport { type SharedKioskState } from './sharedKioskState.type';\n\ntype Args = {\n\ttx: Transaction;\n\tkioskClient: KioskClient;\n\tkioskOwner: string;\n\tkiosk?: any;\n\trunCommands: (kioskTx: KioskTransaction) => Promise<void>;\n\tshouldConvertToPersonalKiosk?: boolean;\n\tshouldAssertNftInSharedKiosk?: boolean;\n\tshouldAllowNftUnsharedKiosk?: boolean;\n\tkioskStrategy?: 'include' | 'exclude';\n\tfailIfNoKiosk?: boolean;\n\tsharedKioskState?: SharedKioskState;\n\tshouldUseSharedKioskTx?: boolean;\n};\n\nexport const kioskTxWrapper = async ({\n\ttx,\n\tkioskClient,\n\tkioskOwner,\n\tkiosk,\n\trunCommands,\n\tshouldConvertToPersonalKiosk,\n\tshouldAssertNftInSharedKiosk,\n\tshouldAllowNftUnsharedKiosk,\n\tkioskStrategy,\n\tfailIfNoKiosk,\n\tsharedKioskState,\n\tshouldUseSharedKioskTx = true,\n}: Args) => {\n\tif (shouldUseSharedKioskTx && sharedKioskState?.kioskTx) {\n\t\tawait runCommands(sharedKioskState.kioskTx);\n\t\treturn;\n\t}\n\n\tif (!kioskOwner) {\n\t\tthrow new Error('No kiosk owner provided');\n\t}\n\n\tlet kioskTx: KioskTransaction;\n\n\tlet kiosks =\n\t\tsharedKioskState?.ownerKiosks ??\n\t\t(((\n\t\t\tawait gqlChainRequest({\n\t\t\t\tchain: 'sui',\n\t\t\t\tquery: fetchKiosksByOwner,\n\t\t\t\tvariables: { ownerAddress: addLeadingZerosAfter0x(kioskOwner) },\n\t\t\t})\n\t\t).kiosks ?? []) as Array<{\n\t\t\tid: string;\n\t\t\tis_personal: boolean;\n\t\t\tis_origin_byte: boolean;\n\t\t\tis_shared: boolean;\n\t\t}>);\n\n\tif (sharedKioskState) {\n\t\tsharedKioskState.ownerKiosks = kiosks;\n\t}\n\n\tif (shouldAssertNftInSharedKiosk) {\n\t\tawait assertNftInSharedKiosk({ kioskId: kiosk, walletAddress: kioskOwner, sharedKioskState });\n\t}\n\n\tkiosks = kiosks?.filter((k) => !k.is_origin_byte && (shouldAllowNftUnsharedKiosk || k.is_shared));\n\n\tif (kiosk) {\n\t\tlet filteredKiosks = [];\n\t\tswitch (kioskStrategy ?? 'include') {\n\t\t\tcase 'include':\n\t\t\t\tfilteredKiosks = kiosks.filter((k) => k?.id === kiosk);\n\t\t\t\tbreak;\n\t\t\tcase 'exclude':\n\t\t\t\tfilteredKiosks = kiosks.filter((k) => k?.id !== kiosk);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unsupported kiosk strategy ${kioskStrategy}`);\n\t\t}\n\n\t\tif (filteredKiosks.length > 0) {\n\t\t\tkiosks = filteredKiosks;\n\t\t} else if (failIfNoKiosk ?? false) {\n\t\t\tthrow new Error(`Kiosk ${kiosk} not found for account ${kioskOwner}`);\n\t\t}\n\t}\n\n\tconst personalKiosk = kiosks.find((k) => k.is_personal);\n\n\tif (personalKiosk) {\n\t\t// using existing personal kiosk\n\t\tconst personalKioskCapId = (\n\t\t\tawait gqlChainRequest({\n\t\t\t\tchain: 'sui',\n\t\t\t\tquery: fetchPersonalCapByKiosk,\n\t\t\t\tvariables: { kioskId: personalKiosk.id },\n\t\t\t})\n\t\t).personalCap.id;\n\t\tkioskTx = new KioskTransaction({\n\t\t\ttransactionBlock: tx as any,\n\t\t\tkioskClient,\n\t\t\tcap: {\n\t\t\t\tisPersonal: true,\n\t\t\t\tobjectId: personalKioskCapId,\n\t\t\t\tkioskId: personalKiosk.id,\n\t\t\t\tdigest: '',\n\t\t\t\tversion: '',\n\t\t\t},\n\t\t});\n\t} else if (kiosks.length > 0 && !shouldConvertToPersonalKiosk) {\n\t\tconst kioskCapId = (\n\t\t\tawait gqlChainRequest({\n\t\t\t\tchain: 'sui',\n\t\t\t\tquery: fetchOwnerCapByKiosk,\n\t\t\t\tvariables: { kioskId: kiosks[0].id },\n\t\t\t})\n\t\t).ownerCap?.id;\n\t\tkioskTx = new KioskTransaction({\n\t\t\ttransactionBlock: tx as any,\n\t\t\tkioskClient,\n\t\t\tcap: {\n\t\t\t\tisPersonal: false,\n\t\t\t\tobjectId: kioskCapId,\n\t\t\t\tkioskId: kiosks[0].id,\n\t\t\t\tdigest: '',\n\t\t\t\tversion: '',\n\t\t\t},\n\t\t});\n\t} else {\n\t\t// creating new personal kiosk\n\t\tkioskTx = new KioskTransaction({ transactionBlock: tx as any, kioskClient });\n\t\tkioskTx.createPersonal(true);\n\t}\n\n\tif (shouldUseSharedKioskTx && sharedKioskState) {\n\t\tsharedKioskState.kioskTx = kioskTx;\n\t}\n\n\tawait runCommands(kioskTx);\n\n\tif (!sharedKioskState?.kioskTx) {\n\t\tkioskTx.finalize();\n\t}\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchOwnerCapByKiosk = gql`\n\tquery fetchOwnerCapByKiosk($kioskId: String!) {\n\t\townerCap: kiosk_owner_cap_by_kiosk(kiosk_id: $kioskId) {\n\t\t\tid\n\t\t\tkiosk_id\n\t\t}\n\t}\n`;\n","import { gql } from 'graphql-request';\n\nexport const fetchPersonalCapByKiosk = gql`\n\tquery fetchPersonalCapByKiosk($kioskId: String!) {\n\t\tpersonalCap: personal_kiosk_cap_by_kiosk(kiosk_id: $kioskId) {\n\t\t\tid\n\t\t\tkiosk_id\n\t\t}\n\t}\n`;\n","import { type KioskTransaction } from '@mysten/kiosk';\nimport { type Transaction } from '@mysten/sui/transactions';\n\nexport const getKioskIdFromKioskTx = ({\n\tkioskTx,\n\ttx,\n}: {\n\tkioskTx: KioskTransaction;\n\ttx: Transaction;\n}): string => {\n\tconst kioskId =\n\t\t'value' in kioskTx.kiosk\n\t\t\t? kioskTx.kiosk.value\n\t\t\t: 'Input' in kioskTx.kiosk\n\t\t\t\t? tx.blockData.inputs[(kioskTx.kiosk as { Input: number }).Input].value\n\t\t\t\t: (() => {\n\t\t\t\t\t\tthrow new Error('Invalid kiosk transaction structure');\n\t\t\t\t\t})();\n\n\treturn kioskId;\n};\n","import { getNormalizedRuleType, type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { getTransferPolicyRuleNamesFromSuiObject } from '../getTransferPolicyRuleNamesFromSuiObject';\nimport {\n\tgetNativeKioskTransferPolicies,\n\tknownTransferPolicyRules,\n} from './getNativeKioskTransferPolicies';\n\ninterface RuleData {\n\trule: string;\n\trulePackageId?: string;\n\tmoduleName?: string;\n}\n\nexport type Policy = {\n\tid: string;\n\ttype?: string;\n\tisCustom: boolean;\n\trules: RuleData[];\n};\n\ntype Props = {\n\ttransferPolicies: any[];\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tnftType: string;\n\tcustomTransferPolicies?: any;\n};\n\nconst originByteRuleModules = ['royalty_strategy_bps', 'transfer_allowlist'];\n\nexport const getTransferPoliciesToResolve = async ({\n\ttransferPolicies,\n\tsuiClient,\n\tkioskClient,\n\tnftType,\n\tcustomTransferPolicies,\n}: Props): Promise<Policy[]> => {\n\tlet policies: Policy[] = [];\n\n\tif (transferPolicies.length > 0) {\n\t\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\t\tif (transferPolicyId) {\n\t\t\tconst ruleNames = await getTransferPolicyRuleNamesFromSuiObject({\n\t\t\t\tsuiClient,\n\t\t\t\ttransferPolicyId,\n\t\t\t});\n\n\t\t\tpolicies = [\n\t\t\t\t{\n\t\t\t\t\tid: transferPolicyId,\n\t\t\t\t\trules: ruleNames?.map((rule) => ({\n\t\t\t\t\t\trule,\n\t\t\t\t\t})),\n\t\t\t\t\tisCustom: false,\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\t} else {\n\t\tconst transferPoliciesFromMystenSdk = await kioskClient.getTransferPolicies({\n\t\t\ttype: normalizedNftType(nftType),\n\t\t});\n\n\t\tif (transferPoliciesFromMystenSdk.length > 0) {\n\t\t\tconst policy =\n\t\t\t\ttransferPoliciesFromMystenSdk.find((policy) =>\n\t\t\t\t\tpolicy?.rules?.some((rule) =>\n\t\t\t\t\t\tknownTransferPolicyRules.some((ruleType) => rule?.includes(ruleType)),\n\t\t\t\t\t),\n\t\t\t\t) ?? transferPoliciesFromMystenSdk[0];\n\n\t\t\tpolicies = [\n\t\t\t\t{\n\t\t\t\t\tid: policy.id,\n\t\t\t\t\trules: policy.rules?.map((rule) => ({\n\t\t\t\t\t\trule,\n\t\t\t\t\t})),\n\t\t\t\t\tisCustom: false,\n\t\t\t\t},\n\t\t\t];\n\t\t} else {\n\t\t\tthrow new Error(\n\t\t\t\t`Missing transfer policy of ${nftType}. No way to resolve the transfer request.`,\n\t\t\t);\n\t\t}\n\t}\n\n\tif (customTransferPolicies) {\n\t\tfor (const customTransferPolicy of customTransferPolicies) {\n\t\t\tconst customPolicy = await kioskClient.getTransferPolicies({\n\t\t\t\ttype: normalizedNftType(customTransferPolicy?.type),\n\t\t\t});\n\t\t\tpolicies = [\n\t\t\t\t...policies,\n\t\t\t\t{\n\t\t\t\t\tid: customPolicy[0].id,\n\t\t\t\t\trules: customPolicy[0].rules?.map((rule) => ({\n\t\t\t\t\t\trule,\n\t\t\t\t\t})),\n\t\t\t\t\tisCustom: true,\n\t\t\t\t\ttype: customTransferPolicy?.type,\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\t}\n\n\treturn policies.map((policy) => {\n\t\tconst kioskLockRule = policy?.rules.find((rule: RuleData) =>\n\t\t\trule?.rule?.includes('kiosk_lock_rule'),\n\t\t);\n\n\t\tconst personalKioskRule = policy?.rules.find((rule: RuleData) =>\n\t\t\trule.rule.includes('personal_kiosk_rule'),\n\t\t);\n\n\t\tconst otherRules = policy?.rules.filter(\n\t\t\t(rule: RuleData) =>\n\t\t\t\t!rule?.rule?.includes('kiosk_lock_rule') && !rule?.rule?.includes('personal_kiosk_rule'),\n\t\t);\n\n\t\treturn {\n\t\t\t...policy,\n\t\t\trules: [kioskLockRule, personalKioskRule, ...otherRules].filter(Boolean)?.map((ruleData) => {\n\t\t\t\tconst ruleDefinition = kioskClient.rules.find(\n\t\t\t\t\t(x: any) => getNormalizedRuleType(x.rule) === getNormalizedRuleType(ruleData.rule),\n\t\t\t\t);\n\n\t\t\t\tlet rulePackageId = ruleDefinition?.packageId;\n\t\t\t\tif (!rulePackageId) {\n\t\t\t\t\trulePackageId = ruleData?.rule?.split('::')?.[0];\n\t\t\t\t}\n\n\t\t\t\tconst moduleName = ruleData?.rule?.split('::')?.[1];\n\n\t\t\t\tif (originByteRuleModules.includes(moduleName)) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Using Origin Byte rule ${ruleData.rule} inside the native kiosk transaction`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\t...ruleData,\n\t\t\t\t\trulePackageId,\n\t\t\t\t\tmoduleName,\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t});\n};\n","import {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tpackageId: string;\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tpolicyId: TransactionObjectInput;\n};\n\nexport function resolveFloorPriceRule({ tx, packageId, nftType, policyId, transferRequest }: Args) {\n\ttx.moveCall({\n\t\ttarget: `${packageId}::floor_price_rule::prove`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [tx.object(policyId), transferRequest],\n\t});\n}\n","import {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tpolicyId: TransactionObjectInput;\n\tpackageId: string;\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tkiosk: TransactionObjectInput;\n\tkioskCap: TransactionObjectInput;\n\tkioskItem?: TransactionObjectInput;\n\tshouldSkipLocking?: boolean;\n};\n\nexport function resolveKioskLockRule({\n\ttx,\n\tpackageId,\n\tpolicyId,\n\ttransferRequest,\n\tnftType,\n\tkiosk,\n\tkioskCap,\n\tkioskItem,\n\tshouldSkipLocking,\n}: Args) {\n\tif (!kiosk || !kioskCap) throw new Error('Missing Owned Kiosk or Owned Kiosk Cap');\n\n\tif (!shouldSkipLocking) {\n\t\tif (!kioskItem) throw new Error('Missing Kiosk Item');\n\n\t\ttx.moveCall({\n\t\t\ttarget: '0x2::kiosk::lock',\n\t\t\ttypeArguments: [nftType],\n\t\t\targuments: [tx.object(kiosk), tx.object(kioskCap), tx.object(policyId), tx.object(kioskItem)],\n\t\t});\n\t}\n\n\ttx.moveCall({\n\t\ttarget: `${packageId}::kiosk_lock_rule::prove`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [transferRequest, tx.object(kiosk)],\n\t});\n}\n","import {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tpackageId: string;\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tkiosk: TransactionObjectInput;\n};\n\nexport function resolvePersonalKioskRule({ tx, packageId, nftType, kiosk, transferRequest }: Args) {\n\tif (!kiosk) throw new Error('Missing owned Kiosk.');\n\n\ttx.moveCall({\n\t\ttarget: `${packageId}::personal_kiosk_rule::prove`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [tx.object(kiosk), transferRequest],\n\t});\n}\n","import { bcs } from '@mysten/sui/bcs';\nimport { type SuiClient } from '@mysten/sui/client';\nimport {\n\tTransaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\n\ninterface Args {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\twalletAddress: string;\n\troyaltyRulePackageId: string;\n\troyaltyRuleModule: string;\n\ttransferPolicyId: string | TransactionObjectInput;\n\tprice: number | string;\n\tnftType: string;\n}\n\nexport async function getKioskCollectionRoyaltyFeeAmount({\n\ttx,\n\tsuiClient,\n\twalletAddress,\n\troyaltyRulePackageId,\n\troyaltyRuleModule,\n\ttransferPolicyId,\n\tprice,\n\tnftType,\n}: Args): Promise<TransactionArgument | bigint | undefined> {\n\tif (!royaltyRulePackageId || !royaltyRuleModule || !transferPolicyId || !nftType) {\n\t\tconsole.warn('Missing required parameters for royalty fee calculation');\n\t\treturn undefined;\n\t}\n\n\tif (!price) {\n\t\tconsole.warn('Price is undefined or 0');\n\t\treturn undefined;\n\t}\n\n\tconst feeTx = new Transaction();\n\tfeeTx.moveCall({\n\t\ttarget: `${royaltyRulePackageId}::${royaltyRuleModule}::fee_amount`,\n\t\targuments: [feeTx.object(transferPolicyId), feeTx.pure.u64(price)],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tconst res = await suiClient.devInspectTransactionBlock({\n\t\tsender: addLeadingZerosAfter0x(walletAddress),\n\t\ttransactionBlock: feeTx,\n\t});\n\n\tlet feeAmount: TransactionArgument | bigint | undefined;\n\tif (res?.results?.[0]?.returnValues?.[0]?.[0]) {\n\t\tconst returnedAmount = res?.results?.[0]?.returnValues?.[0]?.[0];\n\t\tif (returnedAmount) {\n\t\t\tfeeAmount = BigInt(bcs.U64.parse(new Uint8Array(returnedAmount)));\n\t\t}\n\t}\n\n\t// We were not able to calculate the amount outside of the transaction, so fall back to resolving it within the PTB\n\tif (!feeAmount && feeAmount !== 0n) {\n\t\t[feeAmount] = tx.moveCall({\n\t\t\ttarget: `${royaltyRulePackageId}::${royaltyRuleModule}::fee_amount`,\n\t\t\ttypeArguments: [nftType],\n\t\t\targuments: [tx.object(transferPolicyId), tx.pure.u64(price)],\n\t\t});\n\t}\n\n\treturn feeAmount;\n}\n","import { type SuiClient } from '@mysten/sui/client';\nimport {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\nimport { getKioskCollectionRoyaltyFeeAmount } from './getKioskCollectionRoyaltyFeeAmount';\n\ntype Args = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\twalletAddress: string;\n\tpolicyId: TransactionObjectInput;\n\tmoduleName: string;\n\tpackageId: string;\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tprice: string;\n\tcoinToSplit?: any;\n\troyaltyFeeAmount?: bigint;\n};\n\nexport async function resolveRoyaltyRule({\n\ttx,\n\tsuiClient,\n\twalletAddress,\n\tpackageId,\n\tmoduleName,\n\tpolicyId,\n\ttransferRequest,\n\tnftType,\n\tprice,\n\tcoinToSplit,\n\troyaltyFeeAmount,\n}: Args) {\n\tlet feeAmount: bigint | TransactionArgument | undefined = royaltyFeeAmount;\n\tif (!feeAmount) {\n\t\tfeeAmount = await getKioskCollectionRoyaltyFeeAmount({\n\t\t\ttx,\n\t\t\tsuiClient,\n\t\t\twalletAddress,\n\t\t\troyaltyRulePackageId: packageId,\n\t\t\troyaltyRuleModule: moduleName,\n\t\t\ttransferPolicyId: policyId,\n\t\t\tprice,\n\t\t\tnftType,\n\t\t});\n\t}\n\n\tconst feeCoin = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [feeAmount]);\n\n\ttx.moveCall({\n\t\ttarget: `${packageId}::${moduleName}::pay`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [tx.object(policyId), transferRequest, feeCoin],\n\t});\n}\n","import {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tpackageId: string;\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tpolicyId: TransactionObjectInput;\n\tparams: Record<string, string>;\n};\n\nexport function resolveTableAllowlistRule({\n\ttx,\n\tpackageId,\n\tnftType,\n\tpolicyId,\n\ttransferRequest,\n\tparams,\n}: Args) {\n\tconst { registryId } = params;\n\tif (!registryId) {\n\t\tthrow new Error(`Missing registryId in params for table_allowlist_rule (package ${packageId})`);\n\t}\n\n\ttx.moveCall({\n\t\ttarget: `${packageId}::table_allowlist_rule::resolve`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [tx.object(policyId), transferRequest, tx.object(registryId)],\n\t});\n}\n","import {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\nimport { CUSTOM_TRANSFER_RULES_BY_COLLECTION } from '../../constants';\nimport { resolveTableAllowlistRule } from './resolveTableAllowlistRule';\n\ntype ResolverArgs = {\n\ttx: Transaction;\n\tpackageId: string;\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tpolicyId: TransactionObjectInput;\n\tparams: Record<string, string>;\n};\n\ntype CustomRuleResolver = (args: ResolverArgs) => void;\n\nconst customRuleResolvers: Record<string, CustomRuleResolver> = {\n\ttable_allowlist_rule: resolveTableAllowlistRule,\n};\n\nexport const customTransferPolicyRuleNames = Object.keys(customRuleResolvers);\n\ntype RuleData = {\n\trule: string;\n\trulePackageId?: string;\n\tmoduleName?: string;\n\tparams?: Record<string, string>;\n};\n\nfunction findParamsFromConfig(moduleName: string, packageId: string): Record<string, string> {\n\tfor (const configs of Object.values(CUSTOM_TRANSFER_RULES_BY_COLLECTION)) {\n\t\tconst match = configs.find((c) => c.moduleName === moduleName && c.packageId === packageId);\n\t\tif (match) return match.params;\n\t}\n\n\tthrow new Error(`No custom rule config found for ${moduleName} at package ${packageId}`);\n}\n\nexport function resolveCustomTransferPolicyRules({\n\ttx,\n\trules,\n\ttransferRequest,\n\tnftType,\n\tpolicyId,\n}: {\n\ttx: Transaction;\n\trules: RuleData[];\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tpolicyId: TransactionObjectInput;\n}): boolean {\n\tlet resolved = false;\n\tfor (const rule of rules) {\n\t\tconst moduleName = rule.moduleName ?? rule.rule?.split('::')?.[1];\n\t\tconst resolver = moduleName ? customRuleResolvers[moduleName] : undefined;\n\t\tif (resolver) {\n\t\t\tconst packageId = rule.rulePackageId ?? rule.rule?.split('::')?.[0];\n\t\t\tconst params = rule.params ?? findParamsFromConfig(moduleName, packageId);\n\t\t\tresolver({\n\t\t\t\ttx,\n\t\t\t\tpackageId,\n\t\t\t\ttransferRequest,\n\t\t\t\tnftType,\n\t\t\t\tpolicyId,\n\t\t\t\tparams,\n\t\t\t});\n\t\t\tresolved = true;\n\t\t}\n\t}\n\n\treturn resolved;\n}\n","import { type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\nimport { getTransferPoliciesToResolve } from './getTransferPoliciesToResolve';\nimport { resolveFloorPriceRule } from './resolveFloorPriceRule';\nimport { resolveKioskLockRule } from './resolveKioskLockRule';\nimport { resolvePersonalKioskRule } from './resolvePersonalKioskRule';\nimport { resolveRoyaltyRule } from './resolveRoyaltyRule';\nimport { resolveCustomTransferPolicyRules } from './resolveCustomTransferPolicyRules';\n\nexport type Policy = {\n\tdata: any;\n\ttransferRequest: TransactionArgument;\n\tisCustom: boolean;\n\ttype?: string;\n};\n\ntype Props = {\n\ttx: Transaction;\n\ttransferPolicies: any[];\n\tsuiClient: SuiClient;\n\twalletAddress: string;\n\tkioskClient: KioskClient;\n\tkioskTx: any;\n\tnftType: string;\n\tkioskToLockRuleProve?: TransactionObjectInput;\n\tkioskItem?: TransactionObjectInput;\n\ttransferRequest: TransactionArgument;\n\tcustomTransferPolicies?: any;\n\tprice: string;\n\tshouldSkipKioskLocking?: boolean;\n\tshouldSkipResolvingRoyaltyRule?: boolean;\n\tcoinToSplit?: any;\n\tbeforeResolveKioskTransferRequest?: (transferRequest: any) => void | Promise<void>;\n\ttransferPoliciesToResolve?: any[];\n\troyaltyFeeAmount?: bigint;\n};\n\nexport const resolveTransferPolicies = async ({\n\ttx,\n\ttransferPolicies,\n\tsuiClient,\n\twalletAddress,\n\tkioskClient,\n\tkioskTx,\n\tnftType,\n\tkioskToLockRuleProve,\n\tkioskItem,\n\ttransferRequest,\n\tcustomTransferPolicies,\n\tprice,\n\tshouldSkipKioskLocking,\n\tshouldSkipResolvingRoyaltyRule,\n\tcoinToSplit,\n\tbeforeResolveKioskTransferRequest,\n\ttransferPoliciesToResolve,\n\troyaltyFeeAmount,\n}: Props) => {\n\tconst policies =\n\t\ttransferPoliciesToResolve ??\n\t\t(await getTransferPoliciesToResolve({\n\t\t\ttransferPolicies,\n\t\t\tsuiClient,\n\t\t\tkioskClient,\n\t\t\tnftType,\n\t\t\tcustomTransferPolicies,\n\t\t}));\n\n\tlet hasLockRule = false;\n\tfor (const policy of policies) {\n\t\tfor (const rule of policy.rules) {\n\t\t\tswitch (rule.moduleName) {\n\t\t\t\tcase 'kiosk_lock_rule':\n\t\t\t\t\thasLockRule = true;\n\t\t\t\t\tresolveKioskLockRule({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tpackageId: rule.rulePackageId,\n\t\t\t\t\t\tpolicyId: policy.id,\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\tnftType: policy.isCustom && policy.type ? policy.type : nftType,\n\t\t\t\t\t\tkiosk: kioskToLockRuleProve ? kioskToLockRuleProve : kioskTx.kiosk,\n\t\t\t\t\t\tkioskCap: kioskTx.kioskCap,\n\t\t\t\t\t\tkioskItem,\n\t\t\t\t\t\tshouldSkipLocking: shouldSkipKioskLocking,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'personal_kiosk_rule':\n\t\t\t\t\tresolvePersonalKioskRule({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tpackageId: rule.rulePackageId,\n\t\t\t\t\t\tnftType: policy.isCustom && policy.type ? policy.type : nftType,\n\t\t\t\t\t\tkiosk: kioskTx.kiosk,\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'royalty_rule':\n\t\t\t\tcase 'kiosk_royalty_rule':\n\t\t\t\t\tif (shouldSkipResolvingRoyaltyRule) break;\n\t\t\t\t\tawait resolveRoyaltyRule({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tsuiClient,\n\t\t\t\t\t\twalletAddress,\n\t\t\t\t\t\tpackageId: rule.rulePackageId,\n\t\t\t\t\t\tmoduleName: rule.moduleName,\n\t\t\t\t\t\tpolicyId: policy.id,\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\tnftType: policy.isCustom && policy.type ? policy.type : nftType,\n\t\t\t\t\t\tprice,\n\t\t\t\t\t\tcoinToSplit,\n\t\t\t\t\t\troyaltyFeeAmount,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'floor_price_rule':\n\t\t\t\t\tresolveFloorPriceRule({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tpackageId: rule.rulePackageId,\n\t\t\t\t\t\tnftType: policy.isCustom && policy.type ? policy.type : nftType,\n\t\t\t\t\t\tpolicyId: policy.id,\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: {\n\t\t\t\t\tconst nftTypeForRule = policy.isCustom && policy.type ? policy.type : nftType;\n\t\t\t\t\tconst wasResolved = resolveCustomTransferPolicyRules({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\trules: [rule],\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\tnftType: nftTypeForRule,\n\t\t\t\t\t\tpolicyId: policy.id,\n\t\t\t\t\t});\n\t\t\t\t\tif (!wasResolved) {\n\t\t\t\t\t\tthrow new Error(`No resolver for the following rule: ${rule.rule}.`);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!hasLockRule && kioskItem) {\n\t\tkioskTx.place({ itemType: nftType, item: kioskItem });\n\t}\n\n\tawait beforeResolveKioskTransferRequest?.(transferRequest);\n\n\tfor (const policy of policies) {\n\t\ttx.moveCall({\n\t\t\ttarget: '0x2::transfer_policy::confirm_request',\n\t\t\targuments: [tx.object(policy.id), transferRequest],\n\t\t\ttypeArguments: [policy.isCustom && policy.type ? policy.type : nftType],\n\t\t});\n\t}\n};\n","import { type KioskClient, type KioskTransaction, type TransferPolicy } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { getNativeKioskTransferPolicies } from './getNativeKioskTransferPolicies';\nimport { resolveTransferPolicies } from './resolveTransferPolicies';\n\ninterface TakeLockedNftFromKioskProps {\n\ttx: Transaction;\n\ttransferPolicies: TransferPolicy[];\n\tsuiClient: SuiClient;\n\tkioskTx: KioskTransaction;\n\tkioskClient: KioskClient;\n\tnftTokenId: string;\n\tnftType: string;\n\tkioskOwner: string;\n}\n\nexport const takeLockedNftFromKiosk = async ({\n\ttx,\n\ttransferPolicies,\n\tsuiClient,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\tkioskOwner,\n}: TakeLockedNftFromKioskProps) => {\n\tconst transferPolicy = getNativeKioskTransferPolicies(transferPolicies)?.at(0);\n\tconst hasFloorPriceRule = transferPolicy?.rules?.some(\n\t\t(rule: any) => rule.type === 'floor_price_rule',\n\t);\n\tif (hasFloorPriceRule) {\n\t\tthrow new Error('Cannot take locked NFT from kiosk with a minimum floor price rule');\n\t}\n\n\tconst [purchase_cap] = tx.moveCall({\n\t\ttarget: '0x2::kiosk::list_with_purchase_cap',\n\t\targuments: [\n\t\t\ttx.object('value' in kioskTx.kiosk ? kioskTx.kiosk.value : kioskTx.kiosk),\n\t\t\ttx.object('value' in kioskTx.kioskCap ? kioskTx.kioskCap.value : kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.u64(0),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tconst [zeroCoin] = tx.moveCall({\n\t\ttarget: '0x2::coin::zero',\n\t\targuments: [],\n\t\ttypeArguments: ['0x2::sui::SUI'],\n\t});\n\n\tconst [nft, transferRequest] = tx.moveCall({\n\t\ttarget: '0x2::kiosk::purchase_with_cap',\n\t\targuments: [\n\t\t\ttx.object('value' in kioskTx.kiosk ? kioskTx.kiosk.value : kioskTx.kiosk),\n\t\t\tpurchase_cap,\n\t\t\tzeroCoin,\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: kioskOwner,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: '0',\n\t\ttransferRequest,\n\t\tshouldSkipKioskLocking: true,\n\t});\n\n\treturn nft;\n};\n","import { type KioskClient, type KioskTransaction, type TransferPolicy } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { getKioskIdFromKioskTx } from './getKioskIdFromKioskTx';\nimport { takeLockedNftFromKiosk } from './takeLockedNftFromKiosk';\n\nexport const takeAndBorrowNftFromKiosk = async ({\n\ttx,\n\ttransferPolicies,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\tsuiClient,\n\tkioskOwner,\n}: {\n\ttx: Transaction;\n\ttransferPolicies: TransferPolicy[];\n\tkioskTx: KioskTransaction;\n\tkioskClient: KioskClient;\n\tnftTokenId: string;\n\tnftType: string;\n\tsuiClient: SuiClient;\n\tkioskOwner: string;\n}) => {\n\tconst kioskId = getKioskIdFromKioskTx({ kioskTx, tx });\n\tconst res = await kioskClient.getKiosk({ id: kioskId });\n\tconst nftInKiosk = res.items.find((i) => i.objectId === nftTokenId);\n\n\tlet borrowedNft = null;\n\tif (nftInKiosk?.isLocked) {\n\t\tborrowedNft = await takeLockedNftFromKiosk({\n\t\t\ttx,\n\t\t\ttransferPolicies,\n\t\t\tkioskTx,\n\t\t\tnftTokenId,\n\t\t\tnftType,\n\t\t\tsuiClient,\n\t\t\tkioskClient,\n\t\t\tkioskOwner,\n\t\t});\n\t} else {\n\t\tborrowedNft = kioskTx.take({\n\t\t\titemId: nftTokenId,\n\t\t\titemType: nftType,\n\t\t}) as any;\n\t}\n\n\treturn borrowedNft;\n};\n","import { type Transaction } from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tsharedObjects: any;\n\ttransferRequest: any;\n\tnftType: string;\n};\n\nexport const confirmOBTranfer = ({ tx, sharedObjects, transferRequest, nftType }: Args) => {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x6f42ec2355fcda5ebeee2399d901ae9f71cb214e640a45a0007f1f1cdf9f7b5e::transfer_allowlist::confirm_transfer',\n\t\targuments: [tx.object(sharedObjects?.allowList), tx.object(transferRequest)],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tif (sharedObjects?.royaltyStrategy) {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x6f42ec2355fcda5ebeee2399d901ae9f71cb214e640a45a0007f1f1cdf9f7b5e::royalty_strategy_bps::confirm_transfer',\n\t\t\targuments: [tx.object(sharedObjects?.royaltyStrategy), tx.object(transferRequest)],\n\t\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t\t});\n\t}\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xadf32ebafc587cc86e1e56e59f7b17c7e8cbeb3315193be63c6f73157d4e88b9::transfer_request::confirm',\n\t\targuments: [tx.object(transferRequest), tx.object(sharedObjects?.transferPolicy)],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n};\n","import { type Transaction } from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tkiosk: string;\n\tnftTokenId: string;\n\tnftType: string;\n};\n\nexport const depositItemIntoOBKiosk = ({ tx, kiosk, nftTokenId, nftType }: Args) => {\n\ttx.moveCall({\n\t\ttarget: '0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::deposit',\n\t\targuments: [tx.object(kiosk), tx.object(nftTokenId)],\n\t\ttypeArguments: [nftType],\n\t});\n};\n","type Args = {\n\ttx: any;\n\tcreateMethod?: string;\n};\n\nexport const createOBKiosk = async ({ tx, createMethod = 'new' }: Args) => {\n\tconst [kiosk] = tx.moveCall({\n\t\ttarget: `0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::${createMethod}`,\n\t\targuments: [],\n\t\ttypeArguments: [],\n\t});\n\n\treturn [kiosk];\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchWalletKiosks = gql`\n\tquery fetchWalletKiosks($wallet: String!) {\n\t\tkiosks: kiosks_by_owner_address(owner_address: $wallet) {\n\t\t\tid\n\t\t\tis_origin_byte\n\t\t\tis_personal\n\t\t\towner_address\n\t\t\tprofits\n\t\t\tis_shared\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchWalletKiosks } from '../../graphql/queries/fetchWalletKiosks';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { type SharedKioskState } from '../kiosk/sharedKioskState.type';\n\nexport const getOBKiosk = async ({\n\twallet,\n\tsharedKioskState,\n}: {\n\twallet: string;\n\tsharedKioskState?: SharedKioskState;\n}): Promise<any> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchWalletKiosks,\n\t\tvariables: { wallet: addLeadingZerosAfter0x(wallet) },\n\t});\n\n\tif (sharedKioskState && !sharedKioskState?.ownerKiosks) {\n\t\tsharedKioskState.ownerKiosks = res?.kiosks;\n\t}\n\n\treturn res?.kiosks?.filter((kiosk: any) => kiosk?.is_origin_byte && kiosk?.is_shared)?.[0]?.id;\n};\n","import { type SharedKioskState } from '../kiosk/sharedKioskState.type';\nimport { createOBKiosk } from './createOBKiosk';\nimport { getOBKiosk } from './getOBKiosk';\n\ntype Args = {\n\ttx: any;\n\taddress: string;\n\tkioskToUseIfExists?: string;\n\tcreateMethod?: string;\n\tsharedKioskState?: SharedKioskState;\n};\n\nexport const getOrCreateOBKiosk = async ({\n\ttx,\n\taddress,\n\tkioskToUseIfExists,\n\tcreateMethod,\n\tsharedKioskState,\n}: Args) => {\n\tif (kioskToUseIfExists) {\n\t\treturn {\n\t\t\tkiosk: kioskToUseIfExists,\n\t\t\tisNewKiosk: false,\n\t\t};\n\t}\n\n\tif (!sharedKioskState?.ownerKiosks) {\n\t\tconst existingKiosk = await getOBKiosk({ wallet: address, sharedKioskState });\n\t\tif (existingKiosk) {\n\t\t\treturn {\n\t\t\t\tkiosk: existingKiosk,\n\t\t\t\tisNewKiosk: false,\n\t\t\t};\n\t\t}\n\t}\n\n\tconst [newKiosk] = await createOBKiosk({ tx, createMethod });\n\treturn {\n\t\tkiosk: newKiosk,\n\t\tisNewKiosk: true,\n\t};\n};\n","import { ORIGIN_BYTE_BID_NONCE_TYPE } from '../../constants';\n\nexport const isOriginByteBid = (bidType: string): boolean =>\n\tbidType === ORIGIN_BYTE_BID_NONCE_TYPE ||\n\tbidType === '0x2::Kiosk::Kiosk' ||\n\tbidType === '0x2::kiosk::Kiosk';\n","export const isOriginByteCollection = (transferPolicies: any): boolean => {\n\tconst hasOriginBytePolicies =\n\t\ttransferPolicies?.filter((policy: any) => policy?.is_origin_byte && !policy?.is_disabled)\n\t\t\t?.length > 0;\n\n\tconst hasNonOriginBytePoliciesWithRules = transferPolicies\n\t\t?.filter((policy: any) => !policy?.is_origin_byte && !policy?.is_disabled)\n\t\t?.some((policy: any) => policy?.rules?.length > 0);\n\n\treturn Boolean(hasOriginBytePolicies && !hasNonOriginBytePoliciesWithRules);\n};\n","import { type Transaction } from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tkiosk: string;\n};\n\nexport const shareOriginByteKiosk = ({ tx, kiosk }: Args) => {\n\ttx.moveCall({\n\t\ttarget: '0x2::transfer::public_share_object',\n\t\targuments: [tx.object(kiosk)],\n\t\ttypeArguments: ['0x2::kiosk::Kiosk'],\n\t});\n};\n","import { type SuiClient } from '@mysten/sui/client';\nimport { isValidSuiObjectId } from '@mysten/sui/utils';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\n\nexport const getObjectType = async ({\n\tsuiClient,\n\tobjectId,\n}: {\n\tsuiClient: SuiClient;\n\tobjectId: string;\n}): Promise<string> => {\n\tconst normalizedObjectId = objectId.startsWith('0x')\n\t\t? addLeadingZerosAfter0x(objectId)\n\t\t: objectId;\n\tif (isValidSuiObjectId(normalizedObjectId)) {\n\t\tconst res = await suiClient.getObject({ id: normalizedObjectId, options: { showType: true } });\n\t\treturn res.data.type;\n\t}\n\n\treturn '';\n};\n","import { type TransactionArgument } from '@mysten/sui/transactions';\nimport { normalizeSuiObjectId, SUI_CLOCK_OBJECT_ID } from '@mysten/sui/utils';\nimport {\n\tBLUEMOVE_CREATOR_CONFIG_OBJECT,\n\tBLUEMOVE_MARKET_CONFIG_OBJECT,\n\tBLUEMOVE_OFFER_DATA_OBJECT,\n\tBLUEMOVE_ROYALTY_COLLECTION_OBJECT,\n\tTRADEPORT_BIDDING_STORE,\n\tTRADEPORT_KIOSK_BIDDING_STORE,\n\tTRADEPORT_MULTI_BID_PACKAGE,\n\tTRADEPORT_MULTI_BID_STORE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchMultibidChainIdById } from '../../graphql/queries/fetchMultibidById';\nimport { getRoyaltyRuleModule } from '../../helpers/getRoyaltyRuleModule';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { getTransferPolicyRuleNamesFromSuiObject } from '../../helpers/getTransferPolicyRuleNamesFromSuiObject';\nimport { hasPersonalKioskRule } from '../../helpers/hasPersonalKioskRule';\nimport { hasNativeKioskTransferPolicyRules } from '../../helpers/hasTransferPolicyRules';\nimport { isSingleBid } from '../../helpers/isSIngleBid';\nimport { assertNftInSharedKiosk } from '../../helpers/kiosk/assertNftInSharedKiosk';\nimport {\n\tgetNativeKioskTransferPolicies,\n\tknownTransferPolicyRules,\n} from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { getRulePackageId } from '../../helpers/kiosk/getRulePackageId';\nimport { isTradePortKioskBid } from '../../helpers/kiosk/isTradePortKioskBid';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { lockNftInsideKioskIfNotLocked } from '../../helpers/kiosk/lockNftInsideKioskIfNotLocked';\nimport {\n\tresolveCustomTransferPolicyRules,\n\tcustomTransferPolicyRuleNames,\n} from '../../helpers/kiosk/resolveCustomTransferPolicyRules';\nimport { resolveTransferPolicies } from '../../helpers/kiosk/resolveTransferPolicies';\nimport { confirmOBTranfer } from '../../helpers/originByte/confirmOBTranfer';\nimport { getOBBidderKiosk } from '../../helpers/originByte/getOBBidderKiosk';\nimport { isOriginByteBid } from '../../helpers/originByte/isOriginByteBid';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { getObjectType } from '../../helpers/rpc/getObjectType';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { type AcceptNftBidTx } from './acceptNftBids';\n\nexport function addTradeportAcceptNftBidTx({\n\ttx,\n\tsharedObjects,\n\tbidNonce,\n\tnftTokenId,\n\tnftType,\n}: AcceptNftBidTx) {\n\tconst { collection, royaltyStrategy } = sharedObjects;\n\n\tif (collection && royaltyStrategy) {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::ob_accept_bid',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_BIDDING_STORE),\n\t\t\t\ttx.pure.address(bidNonce),\n\t\t\t\ttx.object(nftTokenId),\n\t\t\t\ttx.object(collection),\n\t\t\t\ttx.object(royaltyStrategy),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t} else {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::accept_bid',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_BIDDING_STORE),\n\t\t\t\ttx.pure.address(bidNonce),\n\t\t\t\ttx.object(nftTokenId),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t}\n}\n\nexport async function addTradeportKioskAcceptNftBidTx({\n\ttx,\n\tsuiClient,\n\tkioskClient,\n\ttransferPolicies,\n\tseller,\n\tkioskTx,\n\tbidNonce,\n\tnftTokenId,\n\tnftType,\n\troyaltyRulePackageId,\n\troyaltyRuleModule,\n\tbidAmount,\n\tshouldSplitRoyaltyFromUserGasCoins,\n\tbeforeResolveKioskTransferRequest,\n}: AcceptNftBidTx) {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tawait lockNftInsideKioskIfNotLocked({\n\t\ttx,\n\t\tkioskClient,\n\t\tkioskTx,\n\t\tnftTokenId,\n\t\tnftType,\n\t\ttransferPolicyId,\n\t});\n\n\tif (beforeResolveKioskTransferRequest) {\n\t\tconst [feeCoin, transferRequest] = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::accept_bid_with_price_lock',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_KIOSK_BIDDING_STORE),\n\t\t\t\ttx.pure.address(bidNonce),\n\t\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\t\ttx.pure.address(nftTokenId),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\n\t\tawait beforeResolveKioskTransferRequest?.(feeCoin, transferRequest);\n\n\t\tawait resolveTransferPolicies({\n\t\t\ttx,\n\t\t\ttransferPolicies,\n\t\t\tsuiClient,\n\t\t\twalletAddress: seller,\n\t\t\tkioskTx,\n\t\t\tkioskClient,\n\t\t\tnftType,\n\t\t\tprice: bidAmount?.toString(),\n\t\t\ttransferRequest,\n\t\t\tcoinToSplit: feeCoin,\n\t\t\tshouldSkipKioskLocking: true,\n\t\t});\n\n\t\ttx.transferObjects([tx.object(feeCoin)], tx.pure.address(addLeadingZerosAfter0x(seller)));\n\t} else {\n\t\tconst [feeCoin, transferRequest] = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::accept_bid_with_purchase_cap',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_KIOSK_BIDDING_STORE),\n\t\t\t\ttx.pure.address(bidNonce),\n\t\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\t\ttx.pure.address(nftTokenId),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\n\t\tif (!shouldSplitRoyaltyFromUserGasCoins) {\n\t\t\ttx.moveCall({\n\t\t\t\ttarget: `${royaltyRulePackageId}::${royaltyRuleModule}::pay`,\n\t\t\t\ttypeArguments: [nftType],\n\t\t\t\targuments: [tx.object(transferPolicyId), transferRequest, feeCoin],\n\t\t\t});\n\t\t}\n\n\t\tawait resolveTransferPolicies({\n\t\t\ttx,\n\t\t\ttransferPolicies,\n\t\t\tsuiClient,\n\t\t\twalletAddress: seller,\n\t\t\tkioskTx,\n\t\t\tkioskClient,\n\t\t\tnftType,\n\t\t\tprice: shouldSplitRoyaltyFromUserGasCoins ? bidAmount?.toString() : '0',\n\t\t\ttransferRequest,\n\t\t\tshouldSkipKioskLocking: true,\n\t\t\tshouldSkipResolvingRoyaltyRule: !shouldSplitRoyaltyFromUserGasCoins,\n\t\t});\n\n\t\tif (shouldSplitRoyaltyFromUserGasCoins) {\n\t\t\ttx.transferObjects([tx.object(feeCoin)], tx.pure.address(addLeadingZerosAfter0x(seller)));\n\t\t}\n\t}\n}\n\nexport async function addOriginByteAcceptNftBidTx({\n\ttx,\n\tsuiClient,\n\tsharedObjects,\n\tsellerKiosk,\n\tbidNonce,\n\tnftTokenId,\n\tnftType,\n\titemOwner,\n}: AcceptNftBidTx) {\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: sellerKiosk,\n\t\twalletAddress: itemOwner,\n\t});\n\n\tconst receiverKiosk = await getOBBidderKiosk({ suiClient, bidNonce });\n\n\tlet transferRequest: TransactionArgument;\n\tif (sellerKiosk) {\n\t\ttransferRequest = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::bidding::sell_nft_from_kiosk',\n\t\t\targuments: [\n\t\t\t\ttx.object(bidNonce),\n\t\t\t\ttx.object(sellerKiosk),\n\t\t\t\ttx.object(receiverKiosk),\n\t\t\t\ttx.pure.address(nftTokenId),\n\t\t\t],\n\t\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t\t});\n\t} else {\n\t\ttransferRequest = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::bidding::sell_nft',\n\t\t\targuments: [tx.object(bidNonce), tx.object(receiverKiosk), tx.object(nftTokenId)],\n\t\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t\t});\n\t}\n\n\tconfirmOBTranfer({ tx, sharedObjects, transferRequest, nftType });\n}\n\nexport function addBluemoveAcceptNftBidTx({\n\ttx,\n\tnftTokenId,\n\tnftType,\n\tbidNonce,\n\tisListedOnBluemove,\n}: AcceptNftBidTx) {\n\tif (isListedOnBluemove) {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::marketplace::delist',\n\t\t\targuments: [tx.object(BLUEMOVE_MARKET_CONFIG_OBJECT), tx.pure.address(nftTokenId)],\n\t\t\ttypeArguments: [nftType, nftType],\n\t\t});\n\t}\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::offer_item::accept_offer_nft',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_MARKET_CONFIG_OBJECT),\n\t\t\ttx.object(BLUEMOVE_ROYALTY_COLLECTION_OBJECT),\n\t\t\ttx.object(BLUEMOVE_CREATOR_CONFIG_OBJECT),\n\t\t\ttx.object(BLUEMOVE_OFFER_DATA_OBJECT),\n\t\t\ttx.pure.u64(bidNonce),\n\t\t\tisListedOnBluemove\n\t\t\t\t? ({\n\t\t\t\t\t\tkind: 'Result',\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t} as any)\n\t\t\t\t: tx.object(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addSingleBidAcceptNftBidTx(txData: AcceptNftBidTx) {\n\tconst { nftType, tx, bidNonce, multiBidId, nftTokenId, suiClient, sharedKioskState } = txData;\n\tconst transferPolicies = getNativeKioskTransferPolicies(txData?.transferPolicies);\n\tconst transferPolicy = transferPolicies?.find(\n\t\t(policy: { rules: any[] }) => policy?.rules?.length > 0,\n\t);\n\tconst { chain_id: multiBidChainId, cancelled_at } = multiBidId\n\t\t? ((\n\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\tchain: 'sui',\n\t\t\t\t\tquery: fetchMultibidChainIdById,\n\t\t\t\t\tvariables: { multiBidId },\n\t\t\t\t})\n\t\t\t)?.multi_bids?.[0] ?? {})\n\t\t: {};\n\n\tif (multiBidChainId && cancelled_at) {\n\t\tthrow new Error(`MultiBid ${multiBidId} already cancelled`);\n\t}\n\n\tif (transferPolicy) {\n\t\tconst allRules = await getTransferPolicyRuleNamesFromSuiObject({\n\t\t\tsuiClient,\n\t\t\ttransferPolicyId: transferPolicy.id,\n\t\t});\n\n\t\tconst unsupportedRule = allRules.find((r) => {\n\t\t\tconst moduleName = r.split('::').at(1);\n\t\t\treturn (\n\t\t\t\t!knownTransferPolicyRules.includes(moduleName) &&\n\t\t\t\t!customTransferPolicyRuleNames.includes(moduleName)\n\t\t\t);\n\t\t});\n\t\tif (unsupportedRule) {\n\t\t\tthrow new Error(\n\t\t\t\t`Found unsupported transfer policy rule ${unsupportedRule} for ${transferPolicy.id} of ${nftType}`,\n\t\t\t);\n\t\t}\n\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tsharedKioskState,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tif (!txData?.sellerKiosk) {\n\t\t\t\t\tkioskTx.place({\n\t\t\t\t\t\titem: txData?.nftTokenId,\n\t\t\t\t\t\titemType: txData?.nftType,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst [transferRequest] = tx.moveCall({\n\t\t\t\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::accept_bid_with_transfer_policy`,\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(SUI_CLOCK_OBJECT_ID),\n\t\t\t\t\t\ttx.object(TRADEPORT_MULTI_BID_STORE),\n\t\t\t\t\t\ttx.pure.id(normalizeSuiObjectId(bidNonce)),\n\t\t\t\t\t\ttx.pure.option('id', multiBidChainId),\n\t\t\t\t\t\ttx.object(kioskTx.getKiosk() as any),\n\t\t\t\t\t\ttx.object(kioskTx.getKioskCap() as any),\n\t\t\t\t\t\ttx.pure.id(nftTokenId),\n\t\t\t\t\t\ttx.object(transferPolicy.id),\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\t// The contract resolves itself to the standard transfer policy rules\n\t\t\t\t// Resolve custom transfer policy rules (e.g. table_allowlist_rule)\n\t\t\t\tconst customRules = allRules\n\t\t\t\t\t.filter((r) => customTransferPolicyRuleNames.includes(r.split('::').at(1)))\n\t\t\t\t\t.map((rule) => ({\n\t\t\t\t\t\trule,\n\t\t\t\t\t\trulePackageId: rule.split('::')[0],\n\t\t\t\t\t\tmoduleName: rule.split('::')[1],\n\t\t\t\t\t}));\n\t\t\t\tif (customRules.length > 0) {\n\t\t\t\t\tresolveCustomTransferPolicyRules({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\trules: customRules,\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\tnftType,\n\t\t\t\t\t\tpolicyId: transferPolicy.id,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget: '0x2::transfer_policy::confirm_request',\n\t\t\t\t\targuments: [tx.object(transferPolicy.id), transferRequest],\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\tif (txData.sellerKiosk) {\n\t\tthrow new Error(`Can't use NFT in kiosk without transfer policy`);\n\t}\n\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::accept_bid_without_transfer_policy`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [\n\t\t\ttx.object(SUI_CLOCK_OBJECT_ID),\n\t\t\ttx.object(TRADEPORT_MULTI_BID_STORE),\n\t\t\ttx.pure.id(bidNonce),\n\t\t\ttx.pure.option('id', multiBidChainId),\n\t\t\ttx.object(nftTokenId),\n\t\t],\n\t});\n}\n\nexport async function addTradePortAcceptNftBidTxHandler(txData: AcceptNftBidTx) {\n\tconst bidType = await getObjectType({\n\t\tsuiClient: txData?.suiClient,\n\t\tobjectId: normalizeSuiObjectId(txData?.bidNonce),\n\t});\n\n\tif (isSingleBid(bidType)) {\n\t\tawait addSingleBidAcceptNftBidTx(txData);\n\t\treturn;\n\t}\n\n\tif (isOriginByteBid(bidType)) {\n\t\tif (isOriginByteCollection(txData?.transferPolicies)) {\n\t\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\t\tawait addOriginByteAcceptNftBidTx({ ...txData, sharedObjects });\n\n\t\t\treturn;\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`You cannot accept an Origin Byte bid with a NFT outside of an Origin Byte kiosk. Nft Token Id: ${txData?.nftTokenId}`,\n\t\t);\n\t}\n\n\tif (isTradePortKioskBid(bidType)) {\n\t\tif (txData?.sellerKiosk) {\n\t\t\tconst royaltyRuleModule = getRoyaltyRuleModule(txData?.nftType);\n\t\t\tconst royaltyRulePackageId = await getRulePackageId({\n\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\tnftType: txData?.nftType,\n\t\t\t\truleType: 'royalty_rule',\n\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t});\n\n\t\t\treturn kioskTxWrapper({\n\t\t\t\ttx: txData?.tx,\n\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\tshouldConvertToPersonalKiosk: Boolean(hasPersonalKioskRule(txData?.transferPolicies)),\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\tfailIfNoKiosk: Boolean(txData?.sellerKiosk),\n\t\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tif (hasNativeKioskTransferPolicyRules(txData?.transferPolicies) && !txData?.sellerKiosk) {\n\t\t\t\t\t\tkioskTx.place({\n\t\t\t\t\t\t\titem: txData?.nftTokenId,\n\t\t\t\t\t\t\titemType: txData?.nftType,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tawait addTradeportKioskAcceptNftBidTx({\n\t\t\t\t\t\t...txData,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\troyaltyRulePackageId,\n\t\t\t\t\t\troyaltyRuleModule,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`You cannot accept an Native Kiosk Bid with a NFT outside of a native kiosk. Nft Token Id: ${txData?.nftTokenId}`,\n\t\t);\n\t}\n\n\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\taddTradeportAcceptNftBidTx({ ...txData, sharedObjects });\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchMultibidChainIdById = gql`\n\tquery fetchMultibidById($multiBidId: uuid!) {\n\t\tmulti_bids(where: { id: { _eq: $multiBidId } }) {\n\t\t\tchain_id\n\t\t\tcancelled_at\n\t\t}\n\t}\n`;\n\nexport const fetchMultibidChainIdAndSingleBidsById = gql`\n\tquery fetchMultibidChainIdAndSingleBidsById($multiBidId: uuid!) {\n\t\tmulti_bids(where: { id: { _eq: $multiBidId } }) {\n\t\t\tchain_id\n\t\t\tcancelled_at\n\t\t\tbids(where: { status: { _in: [\"active\", \"inactive\", \"expired\"] } }) {\n\t\t\t\tnonce\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const fetchMultibidChainIdAndExpiredSingleBidsById = gql`\n\tquery fetchMultibidChainIdAndExpiredSingleBidsById($multiBidId: uuid!, $expiredBidLimit: Int!) {\n\t\tmulti_bids(where: { id: { _eq: $multiBidId } }) {\n\t\t\tchain_id\n\t\t\tcancelled_at\n\t\t\tbids(where: { status: { _eq: \"expired\" } }, limit: $expiredBidLimit) {\n\t\t\t\tnonce\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { type KioskClient, type KioskTransaction } from '@mysten/kiosk';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { getKioskIdFromKioskTx } from './getKioskIdFromKioskTx';\n\nexport const lockNftInsideKioskIfNotLocked = async ({\n\ttx,\n\tkioskClient,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n\ttransferPolicyId,\n}: {\n\ttx: Transaction;\n\tkioskClient: KioskClient;\n\tkioskTx: KioskTransaction;\n\tnftTokenId: string;\n\tnftType: string;\n\ttransferPolicyId: string;\n}) => {\n\tif (\n\t\tlockNftInsideKioskIfKioskCreatedInThisTx({ tx, kioskTx, nftTokenId, nftType, transferPolicyId })\n\t) {\n\t\treturn;\n\t}\n\n\tconst kioskId = getKioskIdFromKioskTx({ kioskTx, tx });\n\tconst res = await kioskClient.getKiosk({ id: kioskId });\n\tconst nftInKiosk = res.items.find((i) => i.objectId === nftTokenId);\n\tlet takeFromKiosk = true;\n\n\tif (!nftInKiosk) {\n\t\tconst result = (await kioskClient.client.getObject({\n\t\t\tid: nftTokenId,\n\t\t\toptions: { showOwner: true },\n\t\t})) as { data: { owner: { AddressOwner?: string } } };\n\t\tif (result.data.owner.AddressOwner) {\n\t\t\t// NFT is owned by account\n\t\t\ttakeFromKiosk = false;\n\t\t} else {\n\t\t\tthrow new Error(`NFT ${nftTokenId} is not found in kiosk ${kioskId}`);\n\t\t}\n\t}\n\n\tif (!nftInKiosk?.isLocked) {\n\t\tlet takenNftId;\n\n\t\tif (takeFromKiosk) {\n\t\t\tconst takenNft = kioskTx.take({\n\t\t\t\titemId: nftTokenId,\n\t\t\t\titemType: nftType,\n\t\t\t});\n\n\t\t\ttakenNftId = 'value' in takenNft ? takenNft.value : takenNft;\n\t\t}\n\n\t\tkioskTx.lock({\n\t\t\titemId: takenNftId ?? nftTokenId,\n\t\t\titemType: nftType,\n\t\t\tpolicy: transferPolicyId,\n\t\t});\n\t}\n};\n\nfunction lockNftInsideKioskIfKioskCreatedInThisTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n\ttransferPolicyId,\n}: {\n\ttx: Transaction;\n\tkioskTx: any;\n\tnftTokenId: string;\n\tnftType: string;\n\ttransferPolicyId: string;\n}) {\n\tif (Array.isArray(kioskTx.kiosk.NestedResult)) {\n\t\tconst transaction = tx.blockData.transactions[kioskTx.kiosk.NestedResult[0]] as {\n\t\t\ttarget: string;\n\t\t};\n\t\tif (\n\t\t\ttransaction.target ===\n\t\t\t\t'0x0000000000000000000000000000000000000000000000000000000000000002::kiosk::new' ||\n\t\t\ttransaction.target ===\n\t\t\t\t'0x0000000000000000000000000000000000000000000000000000000000000002::personal_kiosk::new'\n\t\t) {\n\t\t\t// just created in this transaction block kiosk\n\t\t\tkioskTx.lock({\n\t\t\t\titemId: nftTokenId,\n\t\t\t\titemType: nftType,\n\t\t\t\tpolicy: transferPolicyId,\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\tthrow new Error(`Unsupported kiosk move call ${transaction.target}`);\n\t}\n\n\treturn false;\n}\n","import { type SuiClient } from '@mysten/sui/client';\n\nexport const getOBBidderKiosk = async ({\n\tsuiClient,\n\tbidNonce,\n}: {\n\tsuiClient: SuiClient;\n\tbidNonce: string;\n}) => {\n\tconst bidObject = (await suiClient.call('sui_getObject', [\n\t\tbidNonce,\n\t\t{ showContent: true },\n\t])) as any;\n\treturn bidObject.data?.content?.fields?.kiosk;\n};\n","import { type SuiClient } from '@mysten/sui/client';\nimport { NON_KIOSK_LISTING_NONCE_TYPE } from '../constants';\nimport { getObjectType } from './rpc/getObjectType';\n\nexport const isNonKioskListing = async ({\n\tsuiClient,\n\tlistingNonce,\n}: {\n\tsuiClient: SuiClient;\n\tlistingNonce: string;\n}): Promise<boolean> => {\n\tconst listingType = await getObjectType({ suiClient, objectId: listingNonce });\n\treturn listingType === NON_KIOSK_LISTING_NONCE_TYPE;\n};\n","import {\n\tBLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT,\n\tBLUEMOVE_MARKET_CONFIG_OBJECT,\n\tHYPERSPACE_MP_TRANSFER_POLICY_TYPE,\n\tKEEPSAKE_MARKETPLACE_KIOSK,\n\tKEEPSAKE_MARKETPLACE_OBJECT,\n\tORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK,\n\tSOUFFL3_VERSION_OBJECT,\n\tTOCEN_MARKETPLACE_OBJECT,\n\tTRADEPORT_KIOSK_LISTING_STORE,\n\tTRADEPORT_LISTING_STORE,\n\tTRADEPORT_LISTINGS_PACKAGE,\n\tTRADEPORT_LISTINGS_STORE,\n\tTRADEPORT_ORDERBOOK_STORE,\n\tXOCIETY_FRONTIER_COLLECTION_ID,\n} from '../../constants';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { hasNativeKioskTransferPolicyRules } from '../../helpers/hasTransferPolicyRules';\nimport { isNonKioskListing } from '../../helpers/isNonKioskListing';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { takeAndBorrowNftFromKiosk } from '../../helpers/kiosk/takeAndBorrowNftFromKiosk';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { type UnlistListingTx } from './unlistListings';\n\nexport function addLegacyTradePortUnlistTx({ tx, listingNonce, nftType }: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget: '0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::listings::unlist',\n\t\targuments: [tx.object(TRADEPORT_LISTING_STORE), tx.pure.address(listingNonce)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addLegacyTradePortKioskUnlistTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n}: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_listings::unlist',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_LISTING_STORE),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addTradePortUnlistTx({ tx, nftTokenId, nftType }: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::cancel_ob_listing_without_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addKioskTradePortUnlistTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n}: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::cancel_ob_listing_with_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addOriginByteUnlistTx({\n\ttx,\n\tsharedObjects,\n\tlistingNonce,\n\tprice,\n\tnftTokenId,\n\tnftType,\n}: UnlistListingTx) {\n\tconst { orderbook } = sharedObjects;\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::cancel_ask',\n\t\targuments: [\n\t\t\ttx.object(orderbook),\n\t\t\ttx.object(listingNonce),\n\t\t\ttx.pure.u64(price),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n}\n\nexport function addSouffl3UnlistTx({ tx, listingNonce, nftType }: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x30d90b5b67be77e6e06f02dae9f0f2fcdad16e38854316ae8a7b4f5b4971f5e0::Market::delist_generic',\n\t\targuments: [tx.object(SOUFFL3_VERSION_OBJECT), tx.object(listingNonce)],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n}\n\nexport function addBluemoveUnlistTx({ tx, nftTokenId, nftType }: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::marketplace::delist_and_take',\n\t\targuments: [tx.object(BLUEMOVE_MARKET_CONFIG_OBJECT), tx.pure.address(nftTokenId)],\n\t\ttypeArguments: [nftType, nftType],\n\t});\n}\n\nexport async function addBluemoveKioskUnlistTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n}: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xcc97b74ed95c8e8a3ed88050a898727dee37896da579fc400d482b64db6149ff::kiosk_trade::kiosk_delist',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addKeepsakeUnlistTx({ tx, nftTokenId, nftType }: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x2be8c4a1a3cea4d3255d870d367c87838a8cc2bfe4f216a6b67b153027087a7::keepsake_marketplace::delist_and_take',\n\t\targuments: [\n\t\t\ttx.object(KEEPSAKE_MARKETPLACE_OBJECT),\n\t\t\ttx.object(KEEPSAKE_MARKETPLACE_KIOSK),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addHyperspaceKioskUnlistTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n}: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x6ea97b03c441edd54ae89224bf9560e583ee66c37e6c246f5db35258e580ba94::hyperspace::delist',\n\t\targuments: [\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType, HYPERSPACE_MP_TRANSFER_POLICY_TYPE],\n\t});\n}\n\nexport function addTocenUnlistTx({ tx, nftTokenId, nftType }: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x3605d91c559e80cf8fdeabae9abaccb0bc38f96eac0b32bf47e95a9159a5277f::tocen_marketplace::delist_and_take',\n\t\targuments: [tx.object(TOCEN_MARKETPLACE_OBJECT), tx.pure.address(nftTokenId)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addSomisUnlistTx({\n\ttx,\n\tsharedObjects,\n\tnftTokenId,\n\tnftType,\n\tprice,\n}: UnlistListingTx) {\n\tconst { marketplace } = sharedObjects;\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xf0b0beb956e26bde50dbd6ac393026c4525aee3b194a9478f09748f7211b5a02::marketplace::cancel_ask',\n\t\targuments: [tx.object(marketplace), tx.pure.address(nftTokenId), tx.pure.u64(price)],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n}\n\nexport async function addTradePortUnlistTxHandler(txData: UnlistListingTx) {\n\tif (\n\t\ttxData?.listingNonce &&\n\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\taddOriginByteUnlistTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\t// If non kiosk listing (nonce starts with \"0::\")\n\tif (txData?.listingNonce?.startsWith('0::')) {\n\t\taddTradePortUnlistTx(txData);\n\t\treturn;\n\t}\n\n\t// If kiosk listing (nonce starts with \"1::\")\n\tif (txData?.listingNonce?.startsWith('1::')) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addKioskTradePortUnlistTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\n\t\t\t\t// If XOCIETY Frontier collection, take NFT out of kiosk and transfer it back to user (seller)\n\t\t\t\tif (txData?.collectionId === XOCIETY_FRONTIER_COLLECTION_ID) {\n\t\t\t\t\tconst borrowedItem = await takeAndBorrowNftFromKiosk({\n\t\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\t\tnftTokenId: txData?.nftTokenId,\n\t\t\t\t\t\tnftType: txData?.nftType,\n\t\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\t\tkioskOwner: txData?.seller,\n\t\t\t\t\t});\n\n\t\t\t\t\ttxData?.tx.transferObjects(\n\t\t\t\t\t\t[txData?.tx.object(borrowedItem)],\n\t\t\t\t\t\ttxData?.tx.pure.address(addLeadingZerosAfter0x(txData?.seller)),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\t// Fallback to legacy contract logic\n\tif (\n\t\ttxData?.listingNonce &&\n\t\t(await isNonKioskListing({ suiClient: txData?.suiClient, listingNonce: txData?.listingNonce }))\n\t) {\n\t\tif (txData?.isPartOfRelist) {\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot relist this non kiosk NFT in one transaction from legacy contract. You must unlist and list again',\n\t\t\t);\n\t\t}\n\n\t\taddLegacyTradePortUnlistTx(txData);\n\t\treturn;\n\t}\n\n\t// If legacy kiosk listing\n\tif (txData?.sellerKiosk) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addLegacyTradePortKioskUnlistTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\n\t\t\t\t// if nft has no transfer policy rule but is inside a kiosk, take it out of the kiosk\n\t\t\t\tif (!hasNativeKioskTransferPolicyRules(txData?.transferPolicies)) {\n\t\t\t\t\tconst borrowedItem = await takeAndBorrowNftFromKiosk({\n\t\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\t\tnftTokenId: txData?.nftTokenId,\n\t\t\t\t\t\tnftType: txData?.nftType,\n\t\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\t\tkioskOwner: txData?.seller,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Transfer the borrowed item back to the seller\n\t\t\t\t\ttxData?.tx.transferObjects(\n\t\t\t\t\t\t[txData?.tx.object(borrowedItem)],\n\t\t\t\t\t\ttxData?.tx.pure.address(addLeadingZerosAfter0x(txData?.seller)),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\t// If legacy non kiosk listing\n\taddLegacyTradePortUnlistTx(txData);\n}\n\nexport async function addHyperspaceUnlistTxHandler(txData: UnlistListingTx) {\n\tif (\n\t\ttxData?.listingNonce &&\n\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\taddOriginByteUnlistTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\treturn kioskTxWrapper({\n\t\ttx: txData?.tx,\n\t\tkioskClient: txData?.kioskClient,\n\t\tkioskOwner: txData?.seller,\n\t\tkiosk: txData?.sellerKiosk,\n\t\tshouldAllowNftUnsharedKiosk: true,\n\t\tsharedKioskState: txData?.sharedKioskState,\n\t\tshouldUseSharedKioskTx: false,\n\t\tasync runCommands(kioskTx) {\n\t\t\tawait addHyperspaceKioskUnlistTx({\n\t\t\t\t...txData,\n\t\t\t\tkioskTx,\n\t\t\t});\n\t\t},\n\t});\n}\n\nexport async function addBluemoveUnlistTxHandler(txData: UnlistListingTx) {\n\tif (\n\t\ttxData?.listingNonce &&\n\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\taddOriginByteUnlistTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\tif (txData?.sellerKiosk) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addBluemoveKioskUnlistTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\taddBluemoveUnlistTx(txData);\n}\n\nexport async function addClutchyUnlistTxHandler(txData: UnlistListingTx) {\n\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\taddOriginByteUnlistTx({ ...txData, sharedObjects });\n}\n\nexport async function addSouffl3UnlistTxHandler(txData: UnlistListingTx) {\n\taddSouffl3UnlistTx(txData);\n}\n\nexport async function addSomisUnlistTxHandler(txData: UnlistListingTx) {\n\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\n\tif (sharedObjects?.marketplace) {\n\t\taddSomisUnlistTx(txData);\n\t\treturn;\n\t}\n\n\taddOriginByteUnlistTx({ ...txData, sharedObjects });\n}\n\nexport async function addKeepsakeUnlistTxHandler(txData: UnlistListingTx) {\n\taddKeepsakeUnlistTx(txData);\n}\n\nexport function addTocenUnlistTxHandler(txData: UnlistListingTx) {\n\taddTocenUnlistTx(txData);\n}\n","import { type KioskClient, type KioskTransaction } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchBidsById } from '../../graphql/queries/fetchBidsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport {\n\taddBluemoveAcceptNftBidTx,\n\taddOriginByteAcceptNftBidTx,\n\taddTradePortAcceptNftBidTxHandler,\n} from './addAcceptNftBidTxs';\n\nexport type AcceptNftBidTx = {\n\ttx: Transaction;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tkioskTx?: any;\n\tsharedKioskState?: SharedKioskState;\n\tseller?: string;\n\tbidNonce: string;\n\tnftType: string;\n\tnftTokenId: string;\n\titemOwner: string;\n\tlistingPrice: number;\n\tbidAmount: number;\n\tsellerKiosk: string;\n\tisListedOnBluemove: boolean;\n\tbidMarketName: string;\n\troyaltyRulePackageId?: string;\n\troyaltyRuleModule?: string;\n\tshouldSplitRoyaltyFromUserGasCoins?: boolean;\n\tbeforeResolveKioskTransferRequest?: (coin: any, transferRequest: any) => void | Promise<void>;\n\tmultiBidId?: string;\n};\n\nexport type AcceptNftBids = {\n\tbidIds: string[];\n\twalletAddress: string;\n\ttx?: Transaction;\n\tkioskTx?: KioskTransaction;\n\tbeforeResolveKioskTransferRequest?: (coin: any, transferRequest: any) => void | Promise<void>;\n};\n\nconst ERROR_UNLIST_FIRST = 'Item must be unlisted first before you can accept a solo bid on it';\n\nexport const acceptNftBids = async (\n\t{\n\t\tbidIds,\n\t\twalletAddress,\n\t\ttx: existingTx,\n\t\tkioskTx,\n\t\tbeforeResolveKioskTransferRequest,\n\t}: AcceptNftBids,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchBidsById,\n\t\tvariables: { bidIds },\n\t});\n\n\tif (res?.bids?.length === 0) {\n\t\tthrow new Error('No bids found');\n\t}\n\n\tconst bidsForTracking = [];\n\tconst tx = existingTx ?? new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: kioskTx ?? undefined,\n\t};\n\n\tfor (const bid of res.bids) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(bid?.nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tif (addLeadingZerosAfter0x(bid?.bidder) === addLeadingZerosAfter0x(walletAddress)) {\n\t\t\tthrow new Error('Wallet cannot accept its own bid');\n\t\t}\n\n\t\tif (bid?.status !== 'active') {\n\t\t\tthrow new Error('Bid not active');\n\t\t}\n\n\t\tif (bid?.type !== 'solo') {\n\t\t\tthrow new Error('Bid is not an individual item bid. Use acceptCollectionBid() instead.');\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: bid?.collection?.id,\n\t\t\tcollectionChainState: bid?.collection?.chain_state,\n\t\t\tnft: bid?.nft,\n\t\t});\n\n\t\tconst transferPolicies = bid?.collection?.chain_state?.transfer_policies;\n\n\t\tconst txData: AcceptNftBidTx = {\n\t\t\ttx,\n\t\t\tkioskTx,\n\t\t\tsharedKioskState,\n\t\t\ttransferPolicies,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tbidNonce: bid?.nonce,\n\t\t\tnftType,\n\t\t\tlistingPrice: bid?.nft?.listings?.[0]?.price,\n\t\t\tnftTokenId: bid?.nft?.token_id,\n\t\t\titemOwner: bid?.nft?.owner,\n\t\t\tbidAmount: bid?.price,\n\t\t\tsellerKiosk: bid?.nft?.chain_state?.kiosk_id,\n\t\t\tseller: bid?.nft?.owner,\n\t\t\tisListedOnBluemove: bid?.nft?.listings?.[0]?.market_name === 'bluemove',\n\t\t\tbidMarketName: bid?.market_contract?.name,\n\t\t\tmultiBidId: bid?.multi_bid_id,\n\t\t\tbeforeResolveKioskTransferRequest,\n\t\t};\n\n\t\tswitch (txData.bidMarketName) {\n\t\t\tcase 'tradeport':\n\t\t\t\tif (txData?.listingPrice && txData?.listingPrice > 0) {\n\t\t\t\t\tthrow new Error(ERROR_UNLIST_FIRST);\n\t\t\t\t}\n\n\t\t\t\tawait addTradePortAcceptNftBidTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'clutchy':\n\t\t\tcase 'hyperspace':\n\t\t\tcase 'somis': {\n\t\t\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\t\t\tawait addOriginByteAcceptNftBidTx({ ...txData, sharedObjects });\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'bluemove':\n\t\t\t\taddBluemoveAcceptNftBidTx(txData);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Marketplace not supported');\n\t\t}\n\n\t\tbidsForTracking.push({\n\t\t\tnftType,\n\t\t\tcollectionId: bid?.nft?.collection_id,\n\t\t\tbidAmount: bid?.price,\n\t\t\tbidMarketName: bid?.market_contract?.name,\n\t\t\titemOwner: bid?.nft?.owner,\n\t\t\tbidder: bid?.bidder,\n\t\t});\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && bidsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'ACCEPT_NFT_BIDS',\n\t// \t\titems: bidsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchBidsById = gql`\n\tquery fetchBidsById($bidIds: [uuid!]) {\n\t\tbids(where: { id: { _in: $bidIds } }) {\n\t\t\tnonce\n\t\t\tprice\n\t\t\tstatus\n\t\t\ttype\n\t\t\treceiver\n\t\t\tbidder\n\t\t\tmulti_bid_id\n\t\t\tnft {\n\t\t\t\ttoken_id\n\t\t\t\tproperties\n\t\t\t\tchain_state\n\t\t\t\tcollection_id\n\t\t\t\towner\n\t\t\t\tcontract {\n\t\t\t\t\tproperties\n\t\t\t\t}\n\t\t\t\tlistings(where: { listed: { _eq: true } }) {\n\t\t\t\t\tprice\n\t\t\t\t\tmarket_name\n\t\t\t\t}\n\t\t\t}\n\t\t\tmarket_contract {\n\t\t\t\tname\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { Transaction } from '@mysten/sui/transactions';\nimport {\n\tTRADEPORT_NFT_STRATEGY_PACKAGE_ID,\n\tTRADEPORT_NFT_STRATEGY_MANAGER_ID,\n\tTRADEPORT_POOL_REGISTRY_ID,\n\tTRADEPORT_POOL_VERSIONED_ID,\n} from '../../constants';\nimport { getCollectionChainState } from '../../helpers/getCollectionChainState';\n\nexport type ApplyFtStrategy = {\n\tcollectionId: string;\n\tstrategyFtType?: string;\n\ttx?: Transaction;\n\tcollectionChainState?: Record<string, unknown>;\n};\n\nexport async function applyFtStrategy({\n\tcollectionId,\n\tstrategyFtType,\n\ttx: existingTx,\n\tcollectionChainState,\n}: ApplyFtStrategy): Promise<Transaction> {\n\tconst tx = existingTx ?? new Transaction();\n\tconst chainState = collectionChainState ?? (await getCollectionChainState(collectionId));\n\tconst nftStrategies = (chainState?.nft_strategies ?? {}) as Record<\n\t\tstring,\n\t\tRecord<string, unknown>\n\t>;\n\tconst nftStrategyKeys = Object.keys(nftStrategies);\n\tconst nftType = chainState?.nft_type as string;\n\n\tif (nftStrategyKeys.length === 0) {\n\t\tthrow new Error('No NFT strategies found for collection');\n\t}\n\n\tstrategyFtType = strategyFtType ?? nftStrategyKeys[0];\n\n\tif (!nftStrategyKeys.includes(strategyFtType)) {\n\t\tthrow new Error(`Specified FT type ${strategyFtType} is not supported for this collection`);\n\t}\n\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_NFT_STRATEGY_PACKAGE_ID}::tradeport_nft_strategy::apply_ft_strategy`,\n\t\ttypeArguments: [nftType, strategyFtType],\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_NFT_STRATEGY_MANAGER_ID),\n\t\t\ttx.object((nftStrategies[strategyFtType] as { kiosk_id: string }).kiosk_id),\n\t\t\ttx.object(TRADEPORT_POOL_REGISTRY_ID),\n\t\t\ttx.object(TRADEPORT_POOL_VERSIONED_ID),\n\t\t\ttx.object.clock(),\n\t\t],\n\t});\n\n\treturn tx;\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchCollectionChainState = gql`\n\tquery fetchCollectionChainState($collectionId: uuid!) @cached(ttl: 10) {\n\t\tcollections(where: { id: { _eq: $collectionId } }) {\n\t\t\tchain_state\n\t\t}\n\t}\n`;\n\nexport const fetchCollectionChainStateByFtType = gql`\n\tquery fetchCollectionChainStateByFtType($ftType: String!) @cached(ttl: 10) {\n\t\tcollections_by_ft_type(args: { coin_type: $ftType }, limit: 1) {\n\t\t\tchain_state\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../graphql/gqlChainRequest';\nimport {\n\tfetchCollectionChainState,\n\tfetchCollectionChainStateByFtType,\n} from '../graphql/queries/fetchCollectionChainState';\n\nexport const getCollectionChainState = async (\n\tcollectionId: string,\n): Promise<Record<string, unknown> | undefined> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchCollectionChainState,\n\t\tvariables: { collectionId },\n\t});\n\n\treturn res?.collections?.[0]?.chain_state;\n};\n\nexport const getCollectionChainStateByFtType = async (\n\tftType: string,\n): Promise<Record<string, unknown> | undefined> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchCollectionChainStateByFtType,\n\t\tvariables: {\n\t\t\tftType,\n\t\t},\n\t});\n\n\treturn res?.collections_by_ft_type?.[0]?.chain_state;\n};\n","import { Transaction } from '@mysten/sui/transactions';\nimport {\n\tTRADEPORT_NFT_STRATEGY_PACKAGE_ID,\n\tTRADEPORT_NFT_STRATEGY_MANAGER_ID,\n\tTRADEPORT_ORDERBOOK_STORE,\n\tTRADEPORT_LISTINGS_STORE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchCollectionFloorListingsForMarket } from '../../graphql/queries/fetchCollectionFloorListingForMarket';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { RequestContext } from '../../SuiTradingClient';\nimport { getCollectionChainState } from '../../helpers/getCollectionChainState';\n\nexport type ApplyNftStrategy = {\n\tcollectionId: string;\n\tstrategyFtType?: string;\n\ttx?: Transaction;\n};\n\nexport async function applyTradeportNftStrategy({\n\tcollectionId,\n\tstrategyFtType,\n\ttx: existingTx,\n}: ApplyNftStrategy): Promise<Transaction> {\n\tconst tx = existingTx ?? new Transaction();\n\tconst chainState = await getCollectionChainState(collectionId);\n\tconst nftStrategies = (chainState?.nft_strategies ?? {}) as Record<\n\t\tstring,\n\t\tRecord<string, unknown>\n\t>;\n\tconst nftStrategyKeys = Object.keys(nftStrategies);\n\tif (nftStrategyKeys.length === 0) {\n\t\tthrow new Error('No NFT strategies found for collection');\n\t}\n\n\tstrategyFtType = strategyFtType ?? nftStrategyKeys[0];\n\n\tif (!nftStrategyKeys.includes(strategyFtType)) {\n\t\tthrow new Error(`Specified FT type ${strategyFtType} is not supported for this collection`);\n\t}\n\n\tconst transferPolicy = getNativeKioskTransferPolicies(chainState?.transfer_policies ?? [])?.at(0);\n\n\tif (!transferPolicy) {\n\t\tthrow new Error('No transfer policy found for collection');\n\t}\n\n\tconst nftType = chainState?.nft_type as string;\n\tlet suiBalance = BigInt(\n\t\t(nftStrategies[strategyFtType] as { sui_balance: string }).sui_balance ?? 0n,\n\t);\n\n\tconst result = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchCollectionFloorListingsForMarket,\n\t\tvariables: {\n\t\t\tcollectionId,\n\t\t\tmarketAddress: TRADEPORT_NFT_STRATEGY_MANAGER_ID,\n\t\t\ttotalPrice: suiBalance.toString(),\n\t\t},\n\t});\n\tif ((result?.listings?.length ?? 0) === 0) {\n\t\tthrow new Error(\n\t\t\t`No floor listing found for collection with price bellow or equal to ${suiBalance} MIST`,\n\t\t);\n\t}\n\n\tfor (const floorListing of result.listings) {\n\t\tsuiBalance -= BigInt(floorListing.price);\n\t\tif (suiBalance < 0n) {\n\t\t\tbreak;\n\t\t}\n\n\t\ttx.moveCall({\n\t\t\ttarget: `${TRADEPORT_NFT_STRATEGY_PACKAGE_ID}::tradeport_nft_strategy::apply_tradeport_nft_strategy_confirm_request`,\n\t\t\ttypeArguments: [nftType, strategyFtType],\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_NFT_STRATEGY_MANAGER_ID),\n\t\t\t\ttx.object((nftStrategies[strategyFtType] as { kiosk_id: string }).kiosk_id),\n\t\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\t\ttx.object(floorListing.nft.delegated_owner),\n\t\t\t\ttx.object(floorListing.nft.token_id),\n\t\t\t\ttx.object(transferPolicy.id),\n\t\t\t],\n\t\t});\n\t}\n\n\treturn tx;\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchCollectionFloorListingsForMarket = gql`\n\tquery fetchCollectionFloorListingsForMarket(\n\t\t$collectionId: uuid!\n\t\t$marketAddress: String!\n\t\t$totalPrice: numeric\n\t) {\n\t\tlistings(\n\t\t\twhere: {\n\t\t\t\tcollection_id: { _eq: $collectionId }\n\t\t\t\tlisted: { _eq: true }\n\t\t\t\tmarket_name: { _eq: \"tradeport\" }\n\t\t\t\tseller: { _neq: $marketAddress }\n\t\t\t\tnonce: { _like: \"1::0x%\" }\n\t\t\t\tprice: { _lte: $totalPrice }\n\t\t\t}\n\t\t\torder_by: [{ price: asc_nulls_last }, { block_height: asc }, { tx_index: asc }]\n\t\t) {\n\t\t\tid\n\t\t\tprice\n\t\t\tnft {\n\t\t\t\ttoken_id\n\t\t\t\tdelegated_owner\n\t\t\t}\n\t\t}\n\t}\n`;\n","import type { KioskClient, KioskTransaction } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchListingsById } from '../../graphql/queries/fetchListingsById';\nimport { addThirdPartyTxFee } from '../../helpers/addThirdPartyTxFee';\nimport { getNftType } from '../../helpers/getNftType';\nimport {\n\tpreProcessSharedBulkBuyingData,\n\ttype SharedBulkBuyingDataByNftType,\n} from '../../helpers/kiosk/preProcessSharedBulkBuyingData';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport {\n\taddBluemoveBuyTxHandler,\n\taddClutchyBuyTxHandler,\n\taddHyperspaceBuyTxHandler,\n\taddKeepsakeBuyTxHandler,\n\taddSomisBuyTxHandler,\n\taddSouffl3BuyTxHandler,\n\taddTocenBuyTxHandler,\n\taddTradePortBuyTxHandler,\n} from './addBuyListingTxs';\n\ntype BuyTxBase = {\n\ttx: Transaction;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tkioskTx?: any;\n\tsharedKioskState?: SharedKioskState;\n\tbuyer: string;\n\tseller: string;\n\tnftTokenId: string;\n\tnftType: string;\n\tlistingId: string;\n\tlistingNonce: string;\n\tprice: number;\n\tsellerKiosk: string;\n\tcollectionId: string;\n\tnftContractId: string;\n\tremainingAccountBalance?: number;\n\troyalty?: number;\n\tsharedBulkBuyingDataByNftType?: SharedBulkBuyingDataByNftType;\n};\n\ntype NormalBuyTx = {\n\tcoinToSplit?: any;\n\tnftTokenIds?: never;\n} & BuyTxBase;\n\nexport type TocenBuyTx = {\n\tcoinToSplit?: any;\n\tnftTokenIds: string[];\n} & BuyTxBase;\n\nexport type BuyTx = (NormalBuyTx | TocenBuyTx) & {\n\tmarketFeeDecimalPercent?: number;\n\tbeforeResolveKioskTransferRequest?: (transferRequest: any) => void | Promise<void>;\n};\n\nexport type BuyListing = {\n\tlistingId: string;\n\twalletAddress: string;\n};\n\nexport type BuyListings = {\n\tlistingIds: string[];\n\twalletAddress: string;\n\ttx?: Transaction;\n\tkioskTx?: KioskTransaction;\n\tcoinToSplit?: any;\n\tbeforeResolveKioskTransferRequest?: (transferRequest: any) => void | Promise<void>;\n};\n\nexport const buyListings = async (\n\t{\n\t\tlistingIds,\n\t\twalletAddress,\n\t\ttx: existingTx,\n\t\tkioskTx,\n\t\tcoinToSplit,\n\t\tbeforeResolveKioskTransferRequest,\n\t}: BuyListings,\n\tcontext: RequestContext,\n\tmarketFeeDecimalPercent?: number,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchListingsById,\n\t\tvariables: { listingIds },\n\t});\n\n\tif (res?.listings?.length === 0) {\n\t\tthrow new Error('No listings found');\n\t}\n\n\tconst listingsForTracking = [];\n\tconst tx = existingTx ?? new Transaction();\n\n\tconst tocenTokenIds: string[] = [];\n\tlet tocenNftType = '';\n\tlet tocenTotalPrice = 0;\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: kioskTx ?? undefined,\n\t};\n\n\tlet sharedBulkBuyingDataByNftType: SharedBulkBuyingDataByNftType;\n\tif (res.listings.length > 1) {\n\t\tsharedBulkBuyingDataByNftType = await preProcessSharedBulkBuyingData({\n\t\t\tlistings: res.listings,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\twalletAddress,\n\t\t});\n\t}\n\n\tfor (const listing of res.listings) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(listing?.nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tif (!listing?.listed) {\n\t\t\tthrow new Error(`Listing ${listing?.id} is not listed`);\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: listing?.collection?.id,\n\t\t\tcollectionChainState: listing?.collection?.chain_state,\n\t\t\tnft: listing?.nft,\n\t\t});\n\n\t\tconst transferPolicies = listing?.collection?.chain_state?.transfer_policies;\n\n\t\tconst buyTxData: BuyTx = {\n\t\t\ttx,\n\t\t\tkioskTx,\n\t\t\ttransferPolicies,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tbuyer: walletAddress,\n\t\t\tseller: listing?.seller,\n\t\t\tnftTokenId: listing.nft?.token_id,\n\t\t\tnftType,\n\t\t\tlistingId: listing?.id,\n\t\t\tlistingNonce: listing?.nonce,\n\t\t\tprice: listing?.price,\n\t\t\tsellerKiosk: listing.nft?.chain_state?.kiosk_id,\n\t\t\tcollectionId: listing?.nft?.collection_id,\n\t\t\tnftContractId: listing?.nft?.contract_id,\n\t\t\tcoinToSplit,\n\t\t\tmarketFeeDecimalPercent,\n\t\t\tbeforeResolveKioskTransferRequest,\n\t\t\tsharedKioskState,\n\t\t\tsharedBulkBuyingDataByNftType,\n\t\t};\n\n\t\tswitch (listing?.market_name) {\n\t\t\tcase 'tradeport':\n\t\t\t\tawait addTradePortBuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'hyperspace':\n\t\t\t\tawait addHyperspaceBuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'bluemove':\n\t\t\t\tawait addBluemoveBuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'clutchy':\n\t\t\t\tawait addClutchyBuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'souffl3':\n\t\t\t\tawait addSouffl3BuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'somis':\n\t\t\t\tawait addSomisBuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'keepsake':\n\t\t\t\tawait addKeepsakeBuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'tocen':\n\t\t\t\ttocenTokenIds.push(buyTxData?.nftTokenId);\n\t\t\t\ttocenNftType = buyTxData?.nftType;\n\t\t\t\ttocenTotalPrice += Number(listing.price);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Marketplace not supported');\n\t\t}\n\n\t\tif (listing?.market_name !== 'tradeport') {\n\t\t\tawait addThirdPartyTxFee(tx, listing?.price);\n\t\t}\n\n\t\tlistingsForTracking.push({\n\t\t\twalletAddress,\n\t\t\tnftType,\n\t\t\tcollectionId: listing?.nft?.collection_id,\n\t\t\tprice: listing?.price,\n\t\t\tseller: listing?.seller,\n\t\t\tmarketName: listing?.market_name,\n\t\t});\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\tif (tocenTokenIds?.length > 0) {\n\t\taddTocenBuyTxHandler({\n\t\t\ttx,\n\t\t\tnftType: tocenNftType,\n\t\t\tnftTokenIds: tocenTokenIds,\n\t\t\tprice: tocenTotalPrice,\n\t\t} as TocenBuyTx);\n\t}\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && listingsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'BUY_LISTINGS',\n\t// \t\titems: listingsForTracking,\n\t// \t});\n\t// }\n\n\treturn tx;\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchListingsById = gql`\n\tquery fetchListingsById($listingIds: [uuid!]) {\n\t\tlistings(where: { id: { _in: $listingIds } }) {\n\t\t\tid\n\t\t\tseller\n\t\t\tlisted\n\t\t\tmarket_name\n\t\t\tprice\n\t\t\tnonce\n\t\t\tnft {\n\t\t\t\tid\n\t\t\t\ttoken_id\n\t\t\t\tcollection_id\n\t\t\t\tcontract_id\n\t\t\t\tproperties\n\t\t\t\tchain_state\n\t\t\t\tcontract {\n\t\t\t\t\tproperties\n\t\t\t\t}\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { type Transaction } from '@mysten/sui/transactions';\nimport {\n\tTRADEPORT_BENEFICIARY_ADDRESS,\n\tTRADEPORT_THIRD_PARTY_FEE_DECIMAL_PERCENT,\n} from '../constants';\nimport { addLeadingZerosAfter0x } from '../utils/addLeadingZerosAfter0x';\n\nexport const addThirdPartyTxFee = async (tx: Transaction, price: number) => {\n\tconst [microTxFee] = tx.splitCoins(tx.gas, [\n\t\ttx.pure.u64(price * TRADEPORT_THIRD_PARTY_FEE_DECIMAL_PERCENT),\n\t]);\n\n\ttx.transferObjects(\n\t\t[tx.object(microTxFee)],\n\t\ttx.pure.address(addLeadingZerosAfter0x(TRADEPORT_BENEFICIARY_ADDRESS)),\n\t);\n};\n","import type { KioskClient } from '@mysten/kiosk';\nimport { bcs } from '@mysten/sui/bcs';\nimport type { SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_KIOSK_LISTING_STORE } from '../../constants';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { getNftType } from '../getNftType';\nimport { getSharedObjects } from '../getSharedObjects';\nimport { isOriginByteCollection } from '../originByte/isOriginByteCollection';\nimport { getTransferPoliciesToResolve } from './getTransferPoliciesToResolve';\n\nexport type SharedBulkBuyingDataByNftType = Record<\n\tstring,\n\t{\n\t\tsharedObjects?: any;\n\t\ttransferPoliciesToResolve?: any[];\n\t\troyaltyFeeAmountsByListingId?: Record<string, bigint>;\n\t\tcommissionFeeAmountsByListingId?: Record<string, number>;\n\t}\n>;\n\nexport const preProcessSharedBulkBuyingData = async ({\n\tlistings,\n\tsuiClient,\n\tkioskClient,\n\twalletAddress,\n}: {\n\tlistings: any[];\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\twalletAddress: string;\n}) => {\n\tconst sharedBulkBuyingDataByNftType: SharedBulkBuyingDataByNftType = {};\n\n\tconst listingsByNftType = listings.reduce<Record<string, any[]>>(\n\t\t(acc: Record<string, any[]>, listing: any) => {\n\t\t\tconst nftType = getNftType({\n\t\t\t\tcollectionId: listing?.collection?.id,\n\t\t\t\tcollectionChainState: listing?.collection?.chain_state,\n\t\t\t\tnft: listing?.nft,\n\t\t\t});\n\n\t\t\tacc[nftType] = [...(acc[nftType] || []), listing];\n\n\t\t\treturn acc;\n\t\t},\n\t\t{},\n\t);\n\n\tfor (const nftType of Object.keys(listingsByNftType)) {\n\t\tsharedBulkBuyingDataByNftType[nftType] = {\n\t\t\tsharedObjects: [],\n\t\t\ttransferPoliciesToResolve: [],\n\t\t\troyaltyFeeAmountsByListingId: {},\n\t\t\tcommissionFeeAmountsByListingId: {},\n\t\t};\n\n\t\tconst transferPolicies =\n\t\t\tlistingsByNftType[nftType]?.[0]?.collection?.chain_state?.transfer_policies;\n\n\t\tif (isOriginByteCollection(transferPolicies)) {\n\t\t\tsharedBulkBuyingDataByNftType[nftType].sharedObjects = await getSharedObjects(nftType);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst tradeportLegacyKioskListings = listingsByNftType[nftType]?.filter(\n\t\t\t(listing: any) =>\n\t\t\t\tlisting.market_name === 'tradeport' &&\n\t\t\t\t!listing.nonce?.startsWith('0::') &&\n\t\t\t\t!listing.nonce?.startsWith('1::') &&\n\t\t\t\tlisting.price &&\n\t\t\t\tlisting.listed &&\n\t\t\t\t!(listing?.nonce && isOriginByteCollection(transferPolicies)) &&\n\t\t\t\tlisting.nft?.chain_state?.kiosk_id,\n\t\t);\n\n\t\tif (tradeportLegacyKioskListings.length === 0) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst transferPoliciesToResolve = await getTransferPoliciesToResolve({\n\t\t\ttransferPolicies,\n\t\t\tsuiClient,\n\t\t\tkioskClient,\n\t\t\tnftType,\n\t\t});\n\t\tsharedBulkBuyingDataByNftType[nftType].transferPoliciesToResolve = transferPoliciesToResolve;\n\n\t\tconst transferPolicyToResolve = transferPoliciesToResolve.at(0);\n\n\t\tconst royaltyRuleToResolve = transferPolicyToResolve.rules.find(\n\t\t\t(rule: any) => rule.moduleName === 'royalty_rule' || rule.moduleName === 'kiosk_royalty_rule',\n\t\t);\n\n\t\tif (royaltyRuleToResolve?.rulePackageId && royaltyRuleToResolve?.moduleName) {\n\t\t\t// for each tp kiosk listing, create fee_amount txs and dev inspect the tx block to get the royalty fee amounts and store them in shared data\n\t\t\tconst feeTx = new Transaction();\n\t\t\tfor (const listing of tradeportLegacyKioskListings) {\n\t\t\t\tfeeTx.moveCall({\n\t\t\t\t\ttarget: `${royaltyRuleToResolve.rulePackageId}::${royaltyRuleToResolve.moduleName}::fee_amount`,\n\t\t\t\t\targuments: [feeTx.object(transferPolicyToResolve?.id), feeTx.pure.u64(listing.price)],\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst res = await suiClient.devInspectTransactionBlock({\n\t\t\t\tsender: addLeadingZerosAfter0x(walletAddress),\n\t\t\t\ttransactionBlock: feeTx,\n\t\t\t});\n\n\t\t\tfor (let i = 0; i < res.results.length; i++) {\n\t\t\t\tconst result = res.results[i];\n\t\t\t\tconst returnedAmount = result?.returnValues?.[0]?.[0];\n\t\t\t\tconst feeAmount = BigInt(bcs.U64.parse(new Uint8Array(returnedAmount)));\n\n\t\t\t\tif (!feeAmount && feeAmount !== 0n) {\n\t\t\t\t\t// We were not able to calculate the fee amount outside of the transaction via dev inspect, so skip pre processing\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tsharedBulkBuyingDataByNftType[nftType].royaltyFeeAmountsByListingId[\n\t\t\t\t\ttradeportLegacyKioskListings[i].id\n\t\t\t\t] = feeAmount;\n\t\t\t}\n\t\t}\n\n\t\t// for each tp kiosk listing, pre-fetch commission fee amounts in batches and store them in shared data\n\t\tconst batchSize = 10;\n\t\tconst commissionResults: Array<{ listingId: string; commission: number }> = [];\n\t\tfor (let i = 0; i < tradeportLegacyKioskListings.length; i += batchSize) {\n\t\t\tconst batch = tradeportLegacyKioskListings.slice(i, i + batchSize);\n\t\t\tconst batchPromises = batch.map(async (listing: any) => {\n\t\t\t\tconst response = await suiClient.getDynamicFieldObject({\n\t\t\t\t\tparentId: TRADEPORT_KIOSK_LISTING_STORE,\n\t\t\t\t\tname: { type: '0x2::object::ID', value: listing.nft.token_id },\n\t\t\t\t});\n\n\t\t\t\tif (response.error?.code === 'dynamicFieldNotFound') {\n\t\t\t\t\tthrow new Error(`Not found kiosk listing object of token ${listing.nft.token_id}`);\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tlistingId: listing.id,\n\t\t\t\t\tcommission: Number((response.data.content as any).fields.commission),\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tconst batchResults = await Promise.all(batchPromises);\n\t\t\tcommissionResults.push(...batchResults);\n\t\t}\n\n\t\tfor (const result of commissionResults) {\n\t\t\tsharedBulkBuyingDataByNftType[nftType].commissionFeeAmountsByListingId[result.listingId] =\n\t\t\t\tresult.commission;\n\t\t}\n\t}\n\n\treturn sharedBulkBuyingDataByNftType;\n};\n","import { bcs } from '@mysten/sui/bcs';\nimport {\n\tBLUEMOVE_CREATOR_CONFIG_OBJECT,\n\tBLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT,\n\tBLUEMOVE_MARKET_CONFIG_OBJECT,\n\tBLUEMOVE_ROYALTY_COLLECTION_OBJECT,\n\tHYPERSPACE_MP_TRANSFER_POLICY_TYPE,\n\tHYPERSPACE_TRANSFER_POLICY_TYPE,\n\tKEEPSAKE_MARKETPLACE_KIOSK,\n\tKEEPSAKE_MARKETPLACE_OBJECT,\n\tNON_KIOSK_LISTING_NONCE_TYPE,\n\tSOUFFL3_EXTENSION_OBJECT,\n\tSOUFFL3_GENERIC_BUY_METHOD_COLLECTIONS,\n\tSOUFFL3_MARKETPLACE_OBJECT,\n\tSOUFFL3_VERSION_OBJECT,\n\tTOCEN_MARKETPLACE_OBJECT,\n\tTRADEPORT_LISTINGS_DEFAULT_COMMISSION_BPS,\n\tTRADEPORT_KIOSK_LISTING_STORE,\n\tTRADEPORT_LISTING_STORE,\n\tTRADEPORT_LISTINGS_PACKAGE,\n\tCUSTOM_TRANSFER_RULES_BY_COLLECTION,\n\tTRADEPORT_LISTINGS_STORE,\n\tXOCIETY_FRONTIER_COLLECTION_ID,\n\tTRADEPORT_ORDERBOOK_STORE,\n} from '../../constants';\nimport { getCommissionByNftContractId } from '../../graphql/queries/getCommissionByListingId';\nimport { destroyZeroCoin } from '../../helpers/destroyZeroCoin';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { assertNftInSharedKiosk } from '../../helpers/kiosk/assertNftInSharedKiosk';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { resolveCustomTransferPolicyRules } from '../../helpers/kiosk/resolveCustomTransferPolicyRules';\nimport { resolveTransferPolicies } from '../../helpers/kiosk/resolveTransferPolicies';\nimport { confirmOBTranfer } from '../../helpers/originByte/confirmOBTranfer';\nimport { getOrCreateOBKiosk } from '../../helpers/originByte/getOrCreateOBKiosk';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { shareOriginByteKiosk } from '../../helpers/originByte/shareOriginByteKiosk';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { type BuyTx, type TocenBuyTx } from './buyListings';\nimport BigNumber from '../../bigNumberConfig';\nimport { calculateRoyaltyFee } from '../../helpers/calculateRoyaltyFee';\nimport { getCollectionChainState } from '../../helpers/getCollectionChainState';\nimport { normalizeSuiObjectId } from '@mysten/sui/utils';\nimport { applyFtStrategy } from '../applyFtStrategy/applyFtStrategy';\n\nexport function addLegacyTradePortBuyTx({\n\ttx,\n\tnftType,\n\tlistingNonce,\n\tprice,\n\tsharedObjects,\n\tcoinToSplit,\n}: BuyTx) {\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\tconst { collection, royaltyStrategy } = sharedObjects;\n\tif (collection && royaltyStrategy) {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::listings::ob_buy',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_LISTING_STORE),\n\t\t\t\ttx.pure.address(listingNonce),\n\t\t\t\ttx.object(coin),\n\t\t\t\ttx.object(collection),\n\t\t\t\ttx.object(royaltyStrategy),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t} else {\n\t\ttx.moveCall({\n\t\t\ttarget: '0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::listings::buy',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_LISTING_STORE),\n\t\t\t\ttx.pure.address(listingNonce),\n\t\t\t\ttx.object(coin),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t}\n\n\tdestroyZeroCoin({ tx, coin });\n}\n\nexport const addLegacyTradeportKioskBuyTx = async ({\n\ttx,\n\ttransferPolicies,\n\tkioskTx,\n\tsuiClient,\n\tkioskClient,\n\tlistingId,\n\tnftType,\n\tnftTokenId,\n\tprice,\n\tsellerKiosk,\n\tseller,\n\tcoinToSplit,\n\tbeforeResolveKioskTransferRequest,\n\tsharedBulkBuyingDataByNftType,\n\tcollectionId,\n}: BuyTx) => {\n\tlet commissionFeeAmount: number =\n\t\tsharedBulkBuyingDataByNftType?.[nftType]?.commissionFeeAmountsByListingId?.[listingId] ?? 0;\n\n\tif (!commissionFeeAmount) {\n\t\tconst response = await suiClient.getDynamicFieldObject({\n\t\t\tparentId: TRADEPORT_KIOSK_LISTING_STORE,\n\t\t\tname: { type: '0x2::object::ID', value: nftTokenId },\n\t\t});\n\n\t\tif (response.error?.code === 'dynamicFieldNotFound') {\n\t\t\tthrow new Error(`Not found kiosk listing object of token ${nftTokenId}`);\n\t\t}\n\n\t\tcommissionFeeAmount = Number((response.data?.content as any)?.fields?.commission);\n\t}\n\n\tif (commissionFeeAmount === 0) {\n\t\t// Fallback to default commission if had trouble fetching commission from dynamic field object\n\t\tcommissionFeeAmount = getMarketFeePrice({ price, collectionId });\n\t}\n\n\tconst coin = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [\n\t\ttx.pure.u64(price + commissionFeeAmount),\n\t]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\tconst [kioskItem, transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_listings::buy',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_LISTING_STORE),\n\t\t\ttx.object(sellerKiosk),\n\t\t\ttx.object('value' in kioskTx.kiosk ? kioskTx.kiosk.value : kioskTx.kiosk),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: seller,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: price?.toString(),\n\t\tkioskItem,\n\t\ttransferRequest,\n\t\tcoinToSplit,\n\t\tbeforeResolveKioskTransferRequest,\n\t\ttransferPoliciesToResolve: sharedBulkBuyingDataByNftType?.[nftType]?.transferPoliciesToResolve,\n\t\troyaltyFeeAmount:\n\t\t\tsharedBulkBuyingDataByNftType?.[nftType]?.royaltyFeeAmountsByListingId?.[listingId],\n\t});\n\n\tdestroyZeroCoin({ tx, coin });\n};\n\nexport async function addTradePortBuyTx({ tx, nftType, nftTokenId, price, coinToSplit }: BuyTx) {\n\tconst marketFee = new BigNumber(price)\n\t\t.times(TRADEPORT_LISTINGS_DEFAULT_COMMISSION_BPS)\n\t\t.div(10_000)\n\t\t.integerValue(BigNumber.ROUND_DOWN)\n\t\t.toNumber();\n\tconst totalAmount = new BigNumber(price).plus(marketFee).toNumber();\n\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(totalAmount)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::buy_ob_listing_without_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tdestroyZeroCoin({ tx, coin });\n}\n\nexport async function addKioskTradePortBuyTx({\n\ttx,\n\ttransferPolicies,\n\tkioskTx,\n\tnftType,\n\tnftTokenId,\n\tprice,\n\tsellerKiosk,\n\tcoinToSplit,\n\tbuyer,\n\tcollectionId,\n}: BuyTx) {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst marketFee = new BigNumber(price)\n\t\t.times(TRADEPORT_LISTINGS_DEFAULT_COMMISSION_BPS)\n\t\t.div(10000)\n\t\t.integerValue(BigNumber.ROUND_DOWN);\n\n\tconst royaltyFee = calculateRoyaltyFee(\n\t\tgetNativeKioskTransferPolicies(transferPolicies)?.at(0)?.rules,\n\t\tnew BigNumber(price),\n\t);\n\n\tconst totalAmount = new BigNumber(price).plus(marketFee).plus(royaltyFee).toNumber();\n\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(totalAmount)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\tconst transferRequest = tx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::buy_ob_listing_with_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.object(sellerKiosk),\n\t\t\ttx.object('value' in kioskTx.kiosk ? kioskTx.kiosk.value : kioskTx.kiosk),\n\t\t\ttx.object('value' in kioskTx.kioskCap ? kioskTx.kioskCap.value : kioskTx.kioskCap),\n\t\t\ttx.pure.address(buyer),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t\ttx.object(coin),\n\t\t\ttx.object(transferPolicyId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\t// Resolve custom transfer policy rules if this collection has any\n\tconst customRuleConfigs = CUSTOM_TRANSFER_RULES_BY_COLLECTION[collectionId];\n\tif (customRuleConfigs?.length > 0) {\n\t\tresolveCustomTransferPolicyRules({\n\t\t\ttx,\n\t\t\trules: customRuleConfigs.map((config) => ({\n\t\t\t\trule: `${config.packageId}::${config.moduleName}`,\n\t\t\t\trulePackageId: config.packageId,\n\t\t\t\tmoduleName: config.moduleName,\n\t\t\t\tparams: config.params,\n\t\t\t})),\n\t\t\ttransferRequest,\n\t\t\tnftType,\n\t\t\tpolicyId: transferPolicyId,\n\t\t});\n\t}\n\n\ttx.moveCall({\n\t\ttarget: '0x2::transfer_policy::confirm_request',\n\t\targuments: [tx.object(transferPolicyId), transferRequest],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tdestroyZeroCoin({ tx, coin });\n}\n\nexport async function addOriginByteBuyTx({\n\ttx,\n\tsharedObjects,\n\tbuyer,\n\tsellerKiosk,\n\tseller,\n\tnftTokenId,\n\tnftType,\n\tlistingNonce,\n\tprice,\n\tsharedKioskState,\n\tcoinToSplit,\n}: BuyTx) {\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: sellerKiosk,\n\t\twalletAddress: seller,\n\t\tsharedKioskState,\n\t});\n\n\tconst { orderbook } = sharedObjects;\n\tconst { kiosk: buyerKiosk, isNewKiosk: isNewBuyerKiosk } = await getOrCreateOBKiosk({\n\t\ttx,\n\t\taddress: buyer,\n\t\tsharedKioskState,\n\t});\n\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\tconst transferRequest = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::buy_nft',\n\t\targuments: [\n\t\t\ttx.object(orderbook),\n\t\t\ttx.object(listingNonce),\n\t\t\ttx.object(buyerKiosk),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.u64(price),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\tconfirmOBTranfer({ tx, sharedObjects, transferRequest, nftType });\n\n\tdestroyZeroCoin({ tx, coin });\n\n\tif (isNewBuyerKiosk) {\n\t\tshareOriginByteKiosk({ tx, kiosk: buyerKiosk });\n\t}\n}\n\nexport const addHyperspaceKioskBuyTx = async ({\n\ttx,\n\ttransferPolicies,\n\tsuiClient,\n\tkioskTx,\n\tkioskClient,\n\tnftType,\n\tnftTokenId,\n\tprice,\n\tsellerKiosk,\n\tseller,\n\tbeforeResolveKioskTransferRequest,\n\tcoinToSplit,\n}: BuyTx) => {\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\tconst [kioskItem, transferRequest, hyperspaceTransferRequest, hyperspaceMpTransferRequest] =\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x6ea97b03c441edd54ae89224bf9560e583ee66c37e6c246f5db35258e580ba94::hyperspace::purchase',\n\t\t\targuments: [tx.object(sellerKiosk), tx.pure.address(nftTokenId), tx.object(coin)],\n\t\t\ttypeArguments: [nftType, HYPERSPACE_MP_TRANSFER_POLICY_TYPE],\n\t\t});\n\n\tconst customTransferPolicies = [\n\t\t{\n\t\t\ttype: HYPERSPACE_TRANSFER_POLICY_TYPE,\n\t\t\ttransferRequest: hyperspaceTransferRequest,\n\t\t},\n\t\t{\n\t\t\ttype: HYPERSPACE_MP_TRANSFER_POLICY_TYPE,\n\t\t\ttransferRequest: hyperspaceMpTransferRequest,\n\t\t},\n\t].filter((customTransferPolicy) => customTransferPolicy.transferRequest !== transferRequest);\n\n\tawait beforeResolveKioskTransferRequest?.(transferRequest);\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: seller,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: price?.toString(),\n\t\tkioskItem,\n\t\ttransferRequest,\n\t\tcustomTransferPolicies,\n\t});\n};\n\nexport function addBluemoveBuyTx({ tx, nftTokenId, nftType, price, coinToSplit }: BuyTx) {\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::marketplace::buy_and_take',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_MARKET_CONFIG_OBJECT),\n\t\t\ttx.object(BLUEMOVE_ROYALTY_COLLECTION_OBJECT),\n\t\t\ttx.object(BLUEMOVE_CREATOR_CONFIG_OBJECT),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(coin),\n\t\t\ttx.pure.u64(price),\n\t\t],\n\t\ttypeArguments: [nftType, nftType],\n\t});\n}\n\nexport async function addBluemoveKioskBuyTx({\n\ttx,\n\tsuiClient,\n\ttransferPolicies,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\tprice,\n\tsellerKiosk,\n\tseller,\n\tbeforeResolveKioskTransferRequest,\n\tcoinToSplit,\n}: BuyTx) {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [coin1, coin2] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [\n\t\ttx.pure.u64(price),\n\t\ttx.pure.u64(price * 0.025),\n\t]);\n\n\tif (!coin1 || !coin2) throw new Error('Coin could not be split');\n\n\ttx.mergeCoins(tx.object(coin1), [tx.object(coin2)]);\n\n\tconst [kioskItem, transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0xcc97b74ed95c8e8a3ed88050a898727dee37896da579fc400d482b64db6149ff::kiosk_trade::kiosk_buy_v2',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT),\n\t\t\ttx.object(sellerKiosk),\n\t\t\ttx.object(transferPolicyId),\n\t\t\ttx.object('value' in kioskTx.kiosk ? kioskTx.kiosk.value : kioskTx.kiosk),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.u64(price),\n\t\t\ttx.object(coin1),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\tawait beforeResolveKioskTransferRequest?.(transferRequest);\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: seller,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: price?.toString(),\n\t\tkioskItem,\n\t\ttransferRequest,\n\t});\n}\n\nexport async function addSouffl3BuyTx({\n\ttx,\n\tnftType,\n\tprice,\n\tlistingNonce,\n\tcollectionId,\n\ttransferPolicies,\n\tcoinToSplit,\n}: BuyTx) {\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tif (transferPolicyId && !SOUFFL3_GENERIC_BUY_METHOD_COLLECTIONS?.includes(collectionId)) {\n\t\tconst [coinToDestroy] = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x30d90b5b67be77e6e06f02dae9f0f2fcdad16e38854316ae8a7b4f5b4971f5e0::Market::buy_with_sui_with_ext',\n\t\t\targuments: [\n\t\t\t\ttx.object(SOUFFL3_VERSION_OBJECT),\n\t\t\t\ttx.object(SOUFFL3_EXTENSION_OBJECT),\n\t\t\t\ttx.object(transferPolicyId),\n\t\t\t\ttx.object(listingNonce),\n\t\t\t\ttx.pure.u64(price),\n\t\t\t\ttx.object(SOUFFL3_MARKETPLACE_OBJECT),\n\t\t\t\ttx.object(coin),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\n\t\tdestroyZeroCoin({ tx, coin: coinToDestroy });\n\t} else {\n\t\tconst [coinToDestroy] = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x30d90b5b67be77e6e06f02dae9f0f2fcdad16e38854316ae8a7b4f5b4971f5e0::Market::buy_generic_with_ext',\n\t\t\targuments: [\n\t\t\t\ttx.object(SOUFFL3_VERSION_OBJECT),\n\t\t\t\ttx.object(SOUFFL3_EXTENSION_OBJECT),\n\t\t\t\ttx.object(listingNonce),\n\t\t\t\ttx.pure.u64(price),\n\t\t\t\ttx.object(SOUFFL3_MARKETPLACE_OBJECT),\n\t\t\t\ttx.object(coin),\n\t\t\t],\n\t\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t\t});\n\n\t\tdestroyZeroCoin({ tx, coin: coinToDestroy });\n\t}\n}\n\nexport function addSomisBuyTx({\n\ttx,\n\tsharedObjects,\n\tnftTokenId,\n\tnftType,\n\tprice,\n\tcoinToSplit,\n}: BuyTx) {\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xf0b0beb956e26bde50dbd6ac393026c4525aee3b194a9478f09748f7211b5a02::marketplace::buy_nft',\n\t\targuments: [\n\t\t\ttx.object(sharedObjects?.marketplace),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n}\n\nexport async function addKeepsakeBuyTx({\n\ttx,\n\tsharedObjects,\n\tbuyer,\n\tnftTokenId,\n\tnftType,\n\tprice,\n\troyalty,\n\ttransferPolicies,\n\tcoinToSplit,\n}: BuyTx) {\n\tconst { keepsakeRoyaltyStrategy } = sharedObjects;\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [coin1, coin2] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [\n\t\ttx.pure.u64(price),\n\t\ttx.pure.u64((price * Number(royalty)) / 100 + price * Number(royalty) * 0.00005),\n\t]);\n\n\tif (!coin1 || !coin2) throw new Error('Coin could not be split');\n\n\tconst [balance] = tx.moveCall({\n\t\ttarget: '0x2::coin::into_balance',\n\t\targuments: [tx.object(coin2)],\n\t\ttypeArguments: ['0x2::sui::SUI'],\n\t});\n\n\tif (!balance) throw new Error('Coin into_balance failed');\n\n\tconst [transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x02be8c4a1a3cea4d3255d870d367c87838a8cc2bfe4f216a6b67b153027087a7::keepsake_marketplace::buy',\n\t\targuments: [\n\t\t\ttx.object(KEEPSAKE_MARKETPLACE_OBJECT),\n\t\t\ttx.object(KEEPSAKE_MARKETPLACE_KIOSK),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(coin1),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tif (!transferRequest) throw new Error('Transfer request could not be created');\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x02be8c4a1a3cea4d3255d870d367c87838a8cc2bfe4f216a6b67b153027087a7::keepsake_royalties::confirm_transfer_with_balance',\n\t\targuments: [tx.object(keepsakeRoyaltyStrategy), tx.object(transferRequest), tx.object(balance)],\n\t\ttypeArguments: [nftType],\n\t});\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x02be8c4a1a3cea4d3255d870d367c87838a8cc2bfe4f216a6b67b153027087a7::transfer_policy::confirm_request',\n\t\targuments: [tx.object(transferPolicyId), tx.object(transferRequest)],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tconst [balanceToTransfer] = tx.moveCall({\n\t\ttarget: '0x2::coin::from_balance',\n\t\targuments: [tx.object(balance)],\n\t\ttypeArguments: ['0x2::sui::SUI'],\n\t});\n\n\tif (!balanceToTransfer) throw new Error('Coin from_balance failed');\n\n\ttx.transferObjects(\n\t\t[tx.object(balanceToTransfer)],\n\t\ttx.pure.address(addLeadingZerosAfter0x(buyer)),\n\t);\n}\n\nexport const addTocenBuyTx = ({ tx, nftTokenIds, nftType, price, coinToSplit }: TocenBuyTx) => {\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x3605d91c559e80cf8fdeabae9abaccb0bc38f96eac0b32bf47e95a9159a5277f::tocen_marketplace::buy_cart',\n\t\targuments: [\n\t\t\ttx.object(TOCEN_MARKETPLACE_OBJECT),\n\t\t\ttx.pure(bcs.vector(bcs.Address).serialize(nftTokenIds)),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n};\n\nexport async function addTradePortBuyTxHandler(txData: BuyTx) {\n\t// If origin byte collection, add origin byte buy tx\n\tif (txData?.listingNonce && isOriginByteCollection(txData?.transferPolicies)) {\n\t\tconst sharedObjects =\n\t\t\ttxData?.sharedBulkBuyingDataByNftType?.[txData?.nftType]?.sharedObjects ??\n\t\t\t(await getSharedObjects(txData?.nftType));\n\t\tawait addOriginByteBuyTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\t// If non kiosk listing (nonce starts with \"0::\")\n\tif (txData?.listingNonce?.startsWith('0::')) {\n\t\tawait addTradePortBuyTx(txData);\n\t\treturn;\n\t}\n\n\t// If kiosk listing (nonce starts with \"1::\")\n\tif (txData?.listingNonce?.startsWith('1::')) {\n\t\tawait kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.buyer,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addKioskTradePortBuyTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\n\t\t\t\t// If XOCIETY Frontier collection, take NFT out of kiosk and transfer it back to user (buyer)\n\t\t\t\tif (txData?.collectionId === XOCIETY_FRONTIER_COLLECTION_ID) {\n\t\t\t\t\tconst borrowedItem = kioskTx.take({\n\t\t\t\t\t\titemId: txData?.nftTokenId,\n\t\t\t\t\t\titemType: txData?.nftType,\n\t\t\t\t\t});\n\n\t\t\t\t\ttxData?.tx.transferObjects(\n\t\t\t\t\t\t[txData?.tx.object(borrowedItem as any)],\n\t\t\t\t\t\ttxData?.tx.pure.address(addLeadingZerosAfter0x(txData?.buyer)),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\n\t\t// If seller kiosk is associated with an NFT strategy, apply the strategy after the buy command\n\t\tconst chainState = await getCollectionChainState(txData.collectionId);\n\t\tconst nftStrategies = (chainState?.nft_strategies ?? {}) as Record<\n\t\t\tstring,\n\t\t\tRecord<string, unknown>\n\t\t>;\n\t\tconst normalizedSellerKiosk = normalizeSuiObjectId(txData.sellerKiosk);\n\t\tfor (const [strategyFtType, strategyData] of Object.entries(nftStrategies)) {\n\t\t\tconst strategyKioskId = (strategyData as { kiosk_id: string }).kiosk_id ?? '0x0';\n\t\t\tif (normalizeSuiObjectId(strategyKioskId) === normalizedSellerKiosk) {\n\t\t\t\tawait applyFtStrategy({\n\t\t\t\t\tcollectionId: txData.collectionId,\n\t\t\t\t\tstrategyFtType,\n\t\t\t\t\ttx: txData.tx,\n\t\t\t\t\tcollectionChainState: chainState,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn;\n\t}\n\n\t// Legacy contract logic below\n\tif (txData.listingNonce?.startsWith('0x')) {\n\t\tconst response = await txData?.suiClient.getObject({\n\t\t\tid: txData.listingNonce,\n\t\t\toptions: { showType: true },\n\t\t});\n\t\tif (response.error) {\n\t\t\tthrow new Error(response.error.code);\n\t\t}\n\n\t\tif (response.data.type === NON_KIOSK_LISTING_NONCE_TYPE) {\n\t\t\tconst sharedObjects =\n\t\t\t\ttxData?.sharedBulkBuyingDataByNftType?.[txData?.nftType]?.sharedObjects ??\n\t\t\t\t(await getSharedObjects(txData?.nftType));\n\t\t\taddLegacyTradePortBuyTx({ ...txData, sharedObjects });\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// If legacy kiosk listing\n\tif (txData?.sellerKiosk) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.buyer,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addLegacyTradeportKioskBuyTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\tconst sharedObjects =\n\t\ttxData?.sharedBulkBuyingDataByNftType?.[txData?.nftType]?.sharedObjects ??\n\t\t(await getSharedObjects(txData?.nftType));\n\n\t// If legacy non kiosk listing\n\taddLegacyTradePortBuyTx({ ...txData, sharedObjects });\n}\n\nexport async function addHyperspaceBuyTxHandler(txData: BuyTx) {\n\tif (txData?.listingNonce && isOriginByteCollection(txData?.transferPolicies)) {\n\t\tconst sharedObjects =\n\t\t\ttxData?.sharedBulkBuyingDataByNftType?.[txData?.nftType]?.sharedObjects ??\n\t\t\t(await getSharedObjects(txData?.nftType));\n\t\tawait addOriginByteBuyTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\treturn kioskTxWrapper({\n\t\ttx: txData?.tx,\n\t\tkioskClient: txData?.kioskClient,\n\t\tkioskOwner: txData?.buyer,\n\t\tkiosk: txData?.sellerKiosk,\n\t\tshouldConvertToPersonalKiosk: true,\n\t\tsharedKioskState: txData?.sharedKioskState,\n\t\tasync runCommands(kioskTx) {\n\t\t\tawait addHyperspaceKioskBuyTx({\n\t\t\t\t...txData,\n\t\t\t\tkioskTx,\n\t\t\t});\n\t\t},\n\t});\n}\n\nexport async function addBluemoveBuyTxHandler(txData: BuyTx) {\n\tif (txData?.listingNonce && isOriginByteCollection(txData?.transferPolicies)) {\n\t\tconst sharedObjects =\n\t\t\ttxData?.sharedBulkBuyingDataByNftType?.[txData?.nftType]?.sharedObjects ??\n\t\t\t(await getSharedObjects(txData?.nftType));\n\t\tawait addOriginByteBuyTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\tif (txData?.sellerKiosk) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.buyer,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addBluemoveKioskBuyTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\taddBluemoveBuyTx(txData);\n}\n\nexport async function addClutchyBuyTxHandler(txData: BuyTx) {\n\tawait addOriginByteBuyTx(txData);\n}\n\nexport async function addSouffl3BuyTxHandler(txData: BuyTx) {\n\tawait addSouffl3BuyTx(txData);\n}\n\nexport async function addSomisBuyTxHandler(txData: BuyTx) {\n\tif (txData?.sharedObjects?.marketplace) {\n\t\taddSomisBuyTx(txData);\n\t\treturn;\n\t}\n\n\treturn addOriginByteBuyTx(txData);\n}\n\nexport async function addKeepsakeBuyTxHandler(txData: BuyTx) {\n\tconst commission = await getCommissionByNftContractId(txData?.nftContractId);\n\n\tawait addKeepsakeBuyTx({\n\t\t...txData,\n\t\troyalty: commission?.royalty,\n\t});\n}\n\nexport function addTocenBuyTxHandler(txData: TocenBuyTx) {\n\taddTocenBuyTx(txData);\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchCommissionByNftContractId = gql`\n\tquery fetchCommissionByNftContractId($nftContractId: uuid!) {\n\t\tcommissions(where: { contract_id: { _eq: $nftContractId } }) {\n\t\t\tis_custodial\n\t\t\tkey\n\t\t\tmarket_fee\n\t\t\tmarket_name\n\t\t\troyalty\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../gqlChainRequest';\nimport { fetchCommissionByNftContractId } from './fetchCommissionByListingId';\n\nexport const getCommissionByNftContractId = async (nftContractId: string) => {\n\ttry {\n\t\tconst res = await gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchCommissionByNftContractId,\n\t\t\tvariables: { nftContractId },\n\t\t});\n\t\treturn res?.commissions?.[0];\n\t} catch (err) {\n\t\tthrow new Error(`Failed to fetch commission for listing ${nftContractId}`);\n\t}\n};\n","import { type Transaction, type TransactionArgument } from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tcoin: string | TransactionArgument;\n};\n\nexport const destroyZeroCoin = ({ tx, coin }: Args) => {\n\ttx.moveCall({\n\t\ttarget: '0x2::coin::destroy_zero',\n\t\targuments: [tx.object(coin as any)],\n\t\ttypeArguments: ['0x2::sui::SUI'],\n\t});\n};\n","import {\n\tBASC_ROYALTY_DECIMAL_PERCENT,\n\tCOLLECTION_IDS_WITH_ZERO_COMMISSION,\n\tDSL_LEGACY_ROYALTY_DECIMAL_PERCENT,\n\tMASC_ROYALTY_DECIMAL_PERCENT,\n\tTRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT,\n} from '../constants';\n\nexport const getMASCMarketFeePrice = (price: number) => {\n\tif (price * (MASC_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT) < 1) {\n\t\treturn price * (MASC_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT);\n\t}\n\n\treturn parseInt(\n\t\t(price * (MASC_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT))?.toFixed(0),\n\t\t10,\n\t);\n};\n\nexport const getBASCMarketFeePrice = (price: number) => {\n\tif (price * (BASC_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT) < 1) {\n\t\treturn price * (BASC_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT);\n\t}\n\n\treturn parseInt(\n\t\t(price * (BASC_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT))?.toFixed(0),\n\t\t10,\n\t);\n};\n\nexport const getDSLLegacyMarketFeePrice = (price: number) => {\n\tif (price * (DSL_LEGACY_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT) < 1) {\n\t\treturn price * (DSL_LEGACY_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT);\n\t}\n\n\treturn parseInt(\n\t\t(price * (DSL_LEGACY_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT))?.toFixed(\n\t\t\t0,\n\t\t),\n\t\t10,\n\t);\n};\n\ntype GetMarketFeePrice = {\n\tprice: number;\n\tcollectionId: string;\n\tmarketFeeDecimalPercent?: number;\n};\n\nexport const getMarketFeePrice = ({\n\tprice,\n\tcollectionId,\n\tmarketFeeDecimalPercent,\n}: GetMarketFeePrice) => {\n\tif (collectionId === '6824e1ff-477e-4810-9ba7-8d6387b68c7d') {\n\t\treturn getBASCMarketFeePrice(price);\n\t}\n\n\tif (collectionId === '8568521c-73a3-4beb-b830-d1ff27a3f1ca') {\n\t\treturn getMASCMarketFeePrice(price);\n\t}\n\n\tif (collectionId === '307c7e7a-be3a-43a5-ae44-37f3a37d01f9') {\n\t\treturn getDSLLegacyMarketFeePrice(price);\n\t}\n\n\tlet marketFeePrice = 0;\n\n\tif (!COLLECTION_IDS_WITH_ZERO_COMMISSION?.includes(collectionId)) {\n\t\tmarketFeePrice = price * TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT;\n\n\t\tif (marketFeeDecimalPercent) {\n\t\t\tmarketFeePrice = price * marketFeeDecimalPercent;\n\t\t}\n\t}\n\n\tif (marketFeePrice < 1) {\n\t\treturn marketFeePrice;\n\t}\n\n\treturn parseInt(marketFeePrice?.toFixed(0), 10);\n};\n","import { BigNumber } from 'bignumber.js';\n\nBigNumber.set({\n\tPOW_PRECISION: 64,\n});\n\nexport const ZERO = new BigNumber(0);\nexport const ONE = new BigNumber(1);\n\nexport default BigNumber;\n","import BigNumber from '../bigNumberConfig';\nimport { ZERO } from '../bigNumberConfig';\n\nexport function calculateRoyaltyFee(\n\ttransferPolicyRules: Array<{ type: string; amount_bp?: string; min_amount?: string }>,\n\tprice: BigNumber,\n): BigNumber {\n\tconst royaltyRule = transferPolicyRules?.filter(\n\t\t(rule: { type: string }) => rule.type === 'royalty_rule' || rule.type === 'kiosk_royalty_rule',\n\t)?.[0];\n\n\tif (!royaltyRule || (!royaltyRule.amount_bp && !royaltyRule.min_amount)) {\n\t\treturn ZERO;\n\t}\n\n\tconst royaltyFee = royaltyRule.amount_bp\n\t\t? new BigNumber(royaltyRule.amount_bp)\n\t\t\t\t.times(price)\n\t\t\t\t.div(10000)\n\t\t\t\t.integerValue(BigNumber.ROUND_DOWN)\n\t\t: ZERO;\n\n\tif (royaltyRule.min_amount && new BigNumber(royaltyRule.min_amount).isGreaterThan(royaltyFee)) {\n\t\treturn new BigNumber(royaltyRule.min_amount);\n\t}\n\n\treturn royaltyFee;\n}\n","import { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_MULTI_BID_PACKAGE, TRADEPORT_MULTI_BID_STORE } from '../../constants';\nimport {\n\tfetchMultibidChainIdAndSingleBidsById,\n\tfetchMultibidChainIdById,\n} from '../../graphql/queries/fetchMultibidById';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { addCancelSingleBidForMultibidChainId } from '../removeNftBids/addRemoveNftBidTxs';\n\nexport interface CancelMultiBid {\n\twalletAddress: string;\n\tmultiBidId: string;\n}\n\nexport async function cancelMultiBid({ multiBidId }: CancelMultiBid): Promise<Transaction> {\n\tconst {\n\t\tchain_id: multiBidChainId,\n\t\tcancelled_at,\n\t\tbids,\n\t} = (\n\t\tawait gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchMultibidChainIdAndSingleBidsById,\n\t\t\tvariables: { multiBidId },\n\t\t})\n\t)?.multi_bids?.[0] ?? {};\n\tif (!multiBidChainId) {\n\t\tthrow new Error(`MultiBid ${multiBidId} not found`);\n\t}\n\n\tif (cancelled_at) {\n\t\tthrow new Error(`MultiBid ${multiBidId} already cancelled`);\n\t}\n\n\tconst tx = new Transaction();\n\tif (bids.length > 1022) {\n\t\t// Transaction block is limited to 1024 txs\n\t\tthrow new Error(`Too many bids to cancel in one transaction`);\n\t}\n\n\tfor (const bid of bids ?? []) {\n\t\taddCancelSingleBidForMultibidChainId(tx, bid.nonce, multiBidChainId);\n\t}\n\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::cancel_multi_bid`,\n\t\targuments: [tx.object(TRADEPORT_MULTI_BID_STORE), tx.pure.id(multiBidChainId)],\n\t});\n\n\treturn tx;\n}\n","import { normalizeSuiObjectId } from '@mysten/sui/utils';\nimport {\n\tBLUEMOVE_OFFER_DATA_OBJECT,\n\tTOCEN_MARKETPLACE_OBJECT,\n\tTRADEPORT_BIDDING_STORE,\n\tTRADEPORT_KIOSK_BIDDING_STORE,\n\tTRADEPORT_MULTI_BID_PACKAGE,\n\tTRADEPORT_MULTI_BID_STORE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchMultibidChainIdById } from '../../graphql/queries/fetchMultibidById';\nimport { isSingleBid } from '../../helpers/isSIngleBid';\nimport { isTradePortKioskBid } from '../../helpers/kiosk/isTradePortKioskBid';\nimport { isOriginByteBid } from '../../helpers/originByte/isOriginByteBid';\nimport { getObjectType } from '../../helpers/rpc/getObjectType';\nimport { type RemoveNftBidTx } from './removeNftBids';\nimport { type Transaction } from '@mysten/sui/transactions';\n\nexport function addTradeportRemoveNftBidTx({ tx, bidNonce, nftType }: RemoveNftBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::cancel_bid',\n\t\targuments: [tx.object(TRADEPORT_BIDDING_STORE), tx.pure.address(bidNonce)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addTradeportKioskRemoveNftBidTx({ tx, bidNonce, nftType }: RemoveNftBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::cancel_bid',\n\t\targuments: [tx.object(TRADEPORT_KIOSK_BIDDING_STORE), tx.pure.address(bidNonce)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addOriginByteRemoveNftBidTx({ tx, bidNonce }: RemoveNftBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::bidding::close_bid',\n\t\targuments: [tx.object(bidNonce)],\n\t\ttypeArguments: ['0x2::sui::SUI'],\n\t});\n}\n\nexport function addBluemoveRemoveNftBidTx({ tx, bidNonce, nftTokenId, nftType }: RemoveNftBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::offer_item::cancel_offer_nft',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_OFFER_DATA_OBJECT),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.u64(bidNonce),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addTocenRemoveNftBidTx({ tx, nftTokenId, bidAmount }: RemoveNftBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x3605d91c559e80cf8fdeabae9abaccb0bc38f96eac0b32bf47e95a9159a5277f::tocen_marketplace::cancel_offer',\n\t\targuments: [\n\t\t\ttx.object(TOCEN_MARKETPLACE_OBJECT),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.u64(bidAmount),\n\t\t],\n\t\ttypeArguments: [],\n\t});\n}\n\nexport async function addSingleBidRemoveNftBidTx({ tx, bidNonce, multiBidId }: RemoveNftBidTx) {\n\tconst multiBidChainId = multiBidId\n\t\t? (\n\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\tchain: 'sui',\n\t\t\t\t\tquery: fetchMultibidChainIdById,\n\t\t\t\t\tvariables: { multiBidId },\n\t\t\t\t})\n\t\t\t)?.multi_bids?.[0]?.chain_id\n\t\t: undefined;\n\taddCancelSingleBidForMultibidChainId(tx, bidNonce, multiBidChainId);\n}\n\nexport function addCancelSingleBidForMultibidChainId(\n\ttx: Transaction,\n\tbidNonce: string,\n\tmultiBidChainId?: string,\n) {\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::cancel_bid`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_MULTI_BID_STORE),\n\t\t\ttx.pure.id(normalizeSuiObjectId(bidNonce)),\n\t\t\ttx.pure.option('id', multiBidChainId),\n\t\t],\n\t});\n}\n\nexport async function addTradePortRemoveNftBidTxHandler(txData: RemoveNftBidTx) {\n\tconst bidType = await getObjectType({\n\t\tsuiClient: txData?.suiClient,\n\t\tobjectId: normalizeSuiObjectId(txData?.bidNonce),\n\t});\n\n\tif (isSingleBid(bidType)) {\n\t\tawait addSingleBidRemoveNftBidTx(txData);\n\t\treturn;\n\t}\n\n\tif (isOriginByteBid(bidType)) {\n\t\taddOriginByteRemoveNftBidTx(txData);\n\t\treturn;\n\t}\n\n\tif (isTradePortKioskBid(bidType)) {\n\t\taddTradeportKioskRemoveNftBidTx(txData);\n\t\treturn;\n\t}\n\n\taddTradeportRemoveNftBidTx(txData);\n}\n","import { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftsById } from '../../graphql/queries/fetchNftsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport { isOBKiosk } from '../../helpers/originByte/isOBKiosk';\nimport { addTradeportKioskCancelNftTransferTx } from './addCancelNftTransfersTx';\n\nexport type CancelNftTransfersTx = {\n\ttx: Transaction;\n\tnftType: string;\n\tnftTokenId: string;\n\tsenderKiosk: string;\n\tsenderAddress: string;\n\tsharedObjects?: any;\n\tkioskTx?: any;\n\tsharedKioskState?: SharedKioskState;\n};\n\nexport type CancelNftTransfers = {\n\tnftIds: string[];\n\twalletAddress: string;\n};\n\nexport const cancelNftTransfers = async (\n\t{ nftIds, walletAddress }: CancelNftTransfers,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftsById,\n\t\tvariables: { nftIds },\n\t});\n\n\tif (res?.nfts?.length === 0) {\n\t\tthrow new Error('No nfts found');\n\t}\n\n\tconst nftsForTracking = [];\n\tconst tx = new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: undefined,\n\t};\n\n\tfor (const nft of res.nfts) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tif (nft?.chain_state?.claimable_reason !== 'offer-transfer') {\n\t\t\tthrow new Error('Cannot cancel transfer of NFT that is not currently transferring');\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: nft?.collection?.id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t});\n\n\t\tconst sharedObjects = await getSharedObjects(nftType);\n\n\t\tconst txData: CancelNftTransfersTx = {\n\t\t\ttx,\n\t\t\tsharedKioskState,\n\t\t\tnftType,\n\t\t\tnftTokenId: nft?.token_id,\n\t\t\tsenderKiosk: nft?.chain_state?.kiosk_id,\n\t\t\tsenderAddress: walletAddress,\n\t\t\tsharedObjects,\n\t\t};\n\n\t\tconst isSenderKioskOriginByte = await isOBKiosk(txData.senderAddress, txData.senderKiosk);\n\n\t\t// If NFT is not inside native kiosk, throw error\n\t\tif (!txData.senderKiosk || isSenderKioskOriginByte) {\n\t\t\tthrow new Error('NFT is not inside a native kiosk, cannot cancel transfer');\n\t\t}\n\n\t\tawait kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tkioskOwner: txData?.senderAddress,\n\t\t\tkiosk: txData?.senderKiosk,\n\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addTradeportKioskCancelNftTransferTx({ ...txData, kioskTx });\n\t\t\t},\n\t\t});\n\n\t\t// nftsForTracking.push({\n\t\t// \tnftType,\n\t\t// \tsenderAddress: walletAddress,\n\t\t// });\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && nftsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'CANCEL_NFT_TRANSFERS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchAccountKiosks = gql`\n\tquery fetchAccountKiosks($accountAddress: String!) {\n\t\tkiosks: kiosks_by_owner_address(owner_address: $accountAddress) {\n\t\t\tid\n\t\t\tis_origin_byte\n\t\t\towner_address\n\t\t\tprofits\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchAccountKiosks } from '../../graphql/queries/fetchAccountKiosks';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\n\nexport const isOBKiosk = async (accountAddress: string, kiosk: any): Promise<boolean> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchAccountKiosks,\n\t\tvariables: { accountAddress: addLeadingZerosAfter0x(accountAddress) },\n\t});\n\n\treturn res?.kiosks?.filter((k: any) => k?.id === kiosk)?.[0]?.is_origin_byte;\n};\n","import { TRADEPORT_KIOSK_TRANSFERS_STORE } from '../../constants';\nimport { type CancelNftTransfersTx } from './cancelNftTransfers';\n\nexport async function addTradeportKioskCancelNftTransferTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n}: CancelNftTransfersTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x49642273ca7db3d942f9fd810c93467974c40e73ea7f03e8e7a632f1222aca73::kiosk_transfers::cancel_with_purchase_cap',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_STORE),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n","import type { KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tBLUEMOVE_CLAIMABLE_CONTRACT_KEYS,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftsById } from '../../graphql/queries/fetchNftsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport {\n\taddBluemoveClaimAcceptedBidNft,\n\taddClaimAcceptedBidNftTx,\n\taddClaimAcceptedBidNftWithPurchaseCapTx,\n\taddClaimTradeHoldTx,\n\taddClaimTransferredNftTx,\n\taddClaimTransferredNftWithPurchaseCapTx,\n} from './addClaimNftsTxs';\n\nexport type ClaimTradeHoldTx = {\n\ttx: Transaction;\n\tkioskClient: KioskClient;\n\tsharedKioskState?: SharedKioskState;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tnftType: string;\n\tclaimableTradeId: string;\n\tclaimableSellerKiosk: string;\n\tclaimableBuyerKiosk: string;\n};\n\nexport type ClaimTransferredNftTx = {\n\ttx: Transaction;\n\tsuiClient?: SuiClient;\n\tkioskTx?: any;\n\tkioskClient: KioskClient;\n\tsharedKioskState?: SharedKioskState;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tclaimer: string;\n\tnftTokenId: string;\n\tnftType: string;\n\tsellerKiosk: string;\n\tseller: string;\n\tpreloadedTransferPolicyId?: string;\n};\n\nexport type ClaimAcceptedBidNftTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskTx?: any;\n\tkioskClient: KioskClient;\n\tsharedKioskState?: SharedKioskState;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tclaimer: string;\n\tnftTokenId: string;\n\tnftType: string;\n\tsellerKiosk: string;\n\tseller: string;\n};\n\nexport type ClaimNfts = {\n\tnftIds: string[];\n\twalletAddress: string;\n\ttx?: Transaction;\n};\nexport const claimNfts = async (\n\t{ nftIds, walletAddress, tx: existingTx }: ClaimNfts,\n\tcontext: RequestContext,\n\tuseOldClaim?: boolean,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftsById,\n\t\tvariables: { nftIds },\n\t});\n\n\tif (res?.nfts?.length === 0) {\n\t\tthrow new Error('No nfts found');\n\t}\n\n\tconst nftsForTracking = [];\n\tconst tx = existingTx ?? new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: undefined,\n\t};\n\n\tfor (const nft of res.nfts) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tif (!nft) {\n\t\t\tthrow new Error('No nft found');\n\t\t}\n\n\t\tif (!nft?.chain_state?.claimable) {\n\t\t\tthrow new Error(`Nft ID: ${nft?.id} is not claimable`);\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: nft?.collection?.id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t});\n\n\t\tconst transferPolicies = nft?.collection?.chain_state?.transfer_policies;\n\n\t\t// claim trade hold nft\n\t\tif (nft?.chain_state?.claimable_trade_id) {\n\t\t\tconst txData: ClaimTradeHoldTx = {\n\t\t\t\ttx,\n\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\ttransferPolicies,\n\t\t\t\tnftType,\n\t\t\t\tclaimableTradeId: nft?.chain_state?.claimable_trade_id,\n\t\t\t\tclaimableSellerKiosk: nft?.chain_state?.claimable_seller_kiosk,\n\t\t\t\tclaimableBuyerKiosk: nft?.chain_state?.claimable_buyer_kiosk,\n\t\t\t\tsharedKioskState,\n\t\t\t};\n\n\t\t\tconst sharedObjects = await getSharedObjects(nftType);\n\t\t\taddClaimTradeHoldTx({ ...txData, sharedObjects });\n\t\t\tcontinue;\n\t\t}\n\n\t\t// claim accepted bid nft\n\t\tif (\n\t\t\t['accept-token-offer', 'accept-collection-offer']?.includes(\n\t\t\t\tnft?.chain_state?.claimable_reason,\n\t\t\t)\n\t\t) {\n\t\t\tconst txData: ClaimAcceptedBidNftTx = {\n\t\t\t\ttx,\n\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\tsharedKioskState,\n\t\t\t\ttransferPolicies,\n\t\t\t\tclaimer: walletAddress,\n\t\t\t\tnftType,\n\t\t\t\tnftTokenId: nft?.token_id,\n\t\t\t\tsellerKiosk: nft?.chain_state?.kiosk_id,\n\t\t\t\tseller: nft?.owner,\n\t\t\t};\n\n\t\t\tif (BLUEMOVE_CLAIMABLE_CONTRACT_KEYS?.includes(nft?.chain_state?.claimable_contract_key)) {\n\t\t\t\tawait kioskTxWrapper({\n\t\t\t\t\ttx,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tkioskOwner: txData?.claimer,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tsharedKioskState,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addBluemoveClaimAcceptedBidNft({\n\t\t\t\t\t\t\t...txData,\n\t\t\t\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (useOldClaim) {\n\t\t\t\tawait kioskTxWrapper({\n\t\t\t\t\ttx,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tkioskOwner: txData?.claimer,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tsharedKioskState,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addClaimAcceptedBidNftTx({ ...txData, kioskTx });\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tawait kioskTxWrapper({\n\t\t\t\t\ttx,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tkioskOwner: txData?.claimer,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\t\tsharedKioskState,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addClaimAcceptedBidNftWithPurchaseCapTx({ ...txData, kioskTx });\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\t// claim transferred nft\n\t\tif (nft?.chain_state?.claimable_reason === 'offer-transfer') {\n\t\t\tconst txData: ClaimTransferredNftTx = {\n\t\t\t\ttx,\n\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\ttransferPolicies,\n\t\t\t\tclaimer: walletAddress,\n\t\t\t\tnftType,\n\t\t\t\tnftTokenId: nft?.token_id,\n\t\t\t\tsellerKiosk: nft?.chain_state?.kiosk_id,\n\t\t\t\tseller: nft?.owner,\n\t\t\t\tsharedKioskState,\n\t\t\t};\n\n\t\t\tif (useOldClaim) {\n\t\t\t\tawait kioskTxWrapper({\n\t\t\t\t\ttx,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tkioskOwner: txData?.claimer,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tkioskStrategy: 'exclude',\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tsharedKioskState,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addClaimTransferredNftTx({ ...txData, kioskTx });\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tawait kioskTxWrapper({\n\t\t\t\t\ttx,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tkioskOwner: txData?.claimer,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tkioskStrategy: 'exclude',\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tsharedKioskState,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addClaimTransferredNftWithPurchaseCapTx({ ...txData, kioskTx });\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// nftsForTracking.push({\n\t\t// \tnftType,\n\t\t// \tclaimer: walletAddress,\n\t\t// \tclaimReason: nft?.chain_state?.claimable_reason,\n\t\t// });\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && nftsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'CLAIM_NFTS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import { type Transaction } from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tamounts: any;\n};\n\nexport const splitCoins = ({ tx, amounts }: Args) => {\n\tconst res = tx.splitCoins(tx.gas, amounts);\n\n\treturn res;\n};\n","import {\n\tBLUEMOVE_KIOSK_OFFER_COLLECTION_BIDDER_BAG,\n\tTRADEPORT_KIOSK_BIDDING_ESCROW_KIOSK,\n\tTRADEPORT_KIOSK_BIDDING_STORE,\n\tTRADEPORT_KIOSK_TRANSFERS_ESCROW_KIOSK,\n\tTRADEPORT_KIOSK_TRANSFERS_STORE,\n} from '../../constants';\nimport { getKioskCollectionRoyaltyFeeAmount } from '../../helpers/kiosk/getKioskCollectionRoyaltyFeeAmount';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { resolveTransferPolicies } from '../../helpers/kiosk/resolveTransferPolicies';\nimport { confirmOBTranfer } from '../../helpers/originByte/confirmOBTranfer';\nimport { splitCoins } from '../../helpers/splitCoins';\nimport {\n\ttype ClaimAcceptedBidNftTx,\n\ttype ClaimTradeHoldTx,\n\ttype ClaimTransferredNftTx,\n} from './claimNfts';\n\nexport const addClaimTradeHoldTx = ({\n\ttx,\n\tsharedObjects,\n\tnftType,\n\tclaimableTradeId,\n\tclaimableSellerKiosk,\n\tclaimableBuyerKiosk,\n}: ClaimTradeHoldTx) => {\n\tconst { orderbook } = sharedObjects;\n\n\tconst transferRequest = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::finish_trade',\n\t\targuments: [\n\t\t\ttx.object(orderbook),\n\t\t\ttx.pure.address(claimableTradeId),\n\t\t\ttx.object(claimableSellerKiosk),\n\t\t\ttx.object(claimableBuyerKiosk),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\tconfirmOBTranfer({ tx, sharedObjects, transferRequest, nftType });\n};\n\nexport const addClaimAcceptedBidNftTx = async ({\n\ttx,\n\tsuiClient,\n\tclaimer,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\ttransferPolicies,\n}: ClaimAcceptedBidNftTx) => {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::claim_bid',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_BIDDING_STORE),\n\t\t\ttx.object(TRADEPORT_KIOSK_BIDDING_ESCROW_KIOSK),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(transferPolicyId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: claimer,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: '0',\n\t\ttransferRequest,\n\t\tshouldSkipKioskLocking: true,\n\t});\n};\n\nexport const addClaimAcceptedBidNftWithPurchaseCapTx = async ({\n\ttx,\n\tsuiClient,\n\tclaimer,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\tsellerKiosk,\n\ttransferPolicies,\n}: ClaimAcceptedBidNftTx) => {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::claim_bid_with_purchase_cap',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_BIDDING_STORE),\n\t\t\ttx.object(sellerKiosk),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(transferPolicyId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: claimer,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: '0',\n\t\ttransferRequest,\n\t\tshouldSkipKioskLocking: true,\n\t});\n};\n\nexport const addClaimTransferredNftTx = async ({\n\ttx,\n\tsuiClient,\n\tclaimer,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\ttransferPolicies,\n}: ClaimTransferredNftTx) => {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x49642273ca7db3d942f9fd810c93467974c40e73ea7f03e8e7a632f1222aca73::kiosk_transfers::claim',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_STORE),\n\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_ESCROW_KIOSK),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(transferPolicyId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: claimer,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: '0',\n\t\ttransferRequest,\n\t\tshouldSkipKioskLocking: true,\n\t});\n};\n\nexport const addClaimTransferredNftWithPurchaseCapTx = async ({\n\ttx,\n\tsuiClient,\n\tclaimer,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\tsellerKiosk,\n\ttransferPolicies,\n\tpreloadedTransferPolicyId,\n}: ClaimTransferredNftTx) => {\n\tconst transferPolicyId =\n\t\tpreloadedTransferPolicyId ?? getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x49642273ca7db3d942f9fd810c93467974c40e73ea7f03e8e7a632f1222aca73::kiosk_transfers::claim_with_purchase_cap',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_STORE),\n\t\t\ttx.object(sellerKiosk),\n\t\t\tkioskTx.kiosk,\n\t\t\tkioskTx.kioskCap,\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(transferPolicyId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: claimer,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: '0',\n\t\ttransferRequest,\n\t\tshouldSkipKioskLocking: true,\n\t});\n};\n\nexport const addBluemoveClaimAcceptedBidNft = async ({\n\ttx,\n\tsuiClient,\n\tclaimer,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n\tsellerKiosk,\n\ttransferPolicies,\n}: ClaimTransferredNftTx) => {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst royaltyFeeAmount = await getKioskCollectionRoyaltyFeeAmount({\n\t\ttx,\n\t\tsuiClient,\n\t\twalletAddress: claimer,\n\t\troyaltyRulePackageId: '0x434b5bd8f6a7b05fede0ff46c6e511d71ea326ed38056e3bcd681d2d7c2a7879',\n\t\troyaltyRuleModule: 'royalty_rule',\n\t\ttransferPolicyId,\n\t\tprice: '0',\n\t\tnftType,\n\t});\n\n\tconst [coin] = splitCoins({ tx, amounts: [royaltyFeeAmount] });\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xcc97b74ed95c8e8a3ed88050a898727dee37896da579fc400d482b64db6149ff::kiosk_offer_collection_v2::claim_nft_v2',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_KIOSK_OFFER_COLLECTION_BIDDER_BAG),\n\t\t\ttx.object(transferPolicyId),\n\t\t\ttx.object(sellerKiosk),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n};\n","import { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_MULTI_BID_PACKAGE, TRADEPORT_MULTI_BID_STORE } from '../../constants';\nimport { updateMultiBid } from '../updateMultiBid/updateMultiBid';\n\nexport interface CreateMultiBid {\n\twalletAddress: string;\n\tname?: string;\n\tamount?: bigint;\n\ttx?: Transaction;\n}\n\nexport async function createMultiBid({\n\twalletAddress,\n\tname,\n\tamount,\n\ttx: existingTx,\n}: CreateMultiBid): Promise<{ multiBidChainId: any; tx: Transaction }> {\n\tconst tx = existingTx ?? new Transaction();\n\n\tconst multiBidChainId = tx.moveCall({\n\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::create_multi_bid`,\n\t\targuments: [tx.object(TRADEPORT_MULTI_BID_STORE), tx.pure.option('string', name)],\n\t});\n\n\tif (amount > 0n) {\n\t\tawait updateMultiBid({\n\t\t\twalletAddress,\n\t\t\tmultiBidChainId,\n\t\t\tamount,\n\t\t\tname,\n\t\t\ttx,\n\t\t});\n\t}\n\n\treturn { multiBidChainId, tx };\n}\n","import { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_MULTI_BID_PACKAGE, TRADEPORT_MULTI_BID_STORE } from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchMultibidChainIdById } from '../../graphql/queries/fetchMultibidById';\nimport { type RequestContext } from '../../SuiTradingClient';\n\nexport interface UpdateMultiBid {\n\twalletAddress: string;\n\tmultiBidId?: string;\n\tname?: string;\n\tamount?: bigint;\n\tamountToWithdraw?: bigint;\n\ttx?: Transaction;\n\tmultiBidChainId?: any;\n\tcoinToSplit?: any;\n}\n\nexport async function updateMultiBid(\n\t{\n\t\twalletAddress,\n\t\tmultiBidId,\n\t\tname,\n\t\tamount,\n\t\tamountToWithdraw,\n\t\ttx: existingTx,\n\t\tmultiBidChainId,\n\t\tcoinToSplit,\n\t}: UpdateMultiBid,\n\tcontext?: Pick<RequestContext, 'suiClient' | 'tradeportRouterUrl'>,\n): Promise<Transaction> {\n\tconst tx = existingTx ?? new Transaction();\n\n\tif (!multiBidChainId) {\n\t\tconst { chain_id: chainId, cancelled_at } =\n\t\t\t(\n\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\tchain: 'sui',\n\t\t\t\t\tquery: fetchMultibidChainIdById,\n\t\t\t\t\tvariables: { multiBidId },\n\t\t\t\t})\n\t\t\t)?.multi_bids?.[0] ?? {};\n\t\tif (!chainId) {\n\t\t\tthrow new Error(`MultiBid ${multiBidId} not found`);\n\t\t}\n\n\t\tif (cancelled_at) {\n\t\t\tthrow new Error(`MultiBid ${multiBidId} already cancelled`);\n\t\t}\n\n\t\tmultiBidChainId = chainId;\n\t}\n\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [amount ?? 0n]);\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::update_multi_bid`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_MULTI_BID_STORE),\n\t\t\ttypeof multiBidChainId === 'string' ? tx.pure.id(multiBidChainId) : multiBidChainId,\n\t\t\ttx.pure.option('string', name),\n\t\t\tcoin,\n\t\t\ttx.pure.option('u64', amountToWithdraw),\n\t\t],\n\t});\n\n\treturn tx;\n}\n","import { type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { Transaction, type TransactionObjectInput } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftsWithListingsById } from '../../graphql/queries/fetchNftsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { isExpiredListing } from '../../helpers/isExpiredListing';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { relistNft } from '../relistNft/relistNft';\nimport { addSponsorListingTx } from '../sponsorNftListing/addSponsorNftListingTx';\nimport { type SponsorNftListingOptions } from '../sponsorNftListing/sponsorNftListing';\nimport { addTradePortListTxHandler } from './addListTxs';\n\nexport type ListNftTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tkioskTx?: any;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tseller: string;\n\tcollectionId: string;\n\tnftTokenId?: string;\n\tborrowedItem?: TransactionObjectInput;\n\tnftType: string;\n\tlistPrice: number;\n\tsellerKiosk: string;\n\tsharedKioskState?: SharedKioskState;\n};\n\nexport type ListNfts = {\n\tnfts: Array<{\n\t\tid: string;\n\t\tlistPriceInMist: number;\n\t\tsponsorOptions?: SponsorNftListingOptions;\n\t}>;\n\twalletAddress: string;\n\ttx?: Transaction;\n};\n\nexport const listNfts = async (\n\t{ nfts, walletAddress, tx: existingTx }: ListNfts,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftsWithListingsById,\n\t\tvariables: { nftIds: nfts.map((nft) => nft.id) },\n\t});\n\n\tif (res?.nfts?.length === 0) {\n\t\tthrow new Error('No nfts found');\n\t}\n\n\tconst nftsForTracking = [];\n\tconst tx = existingTx ?? new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: undefined,\n\t};\n\n\tfor (const nft of res.nfts) {\n\t\tconst inputNft = nfts?.find((n) => n.id === nft?.id);\n\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: nft?.collection?.id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t});\n\n\t\tconst transferPolicies = nft?.collection?.chain_state?.transfer_policies;\n\n\t\tif (inputNft?.sponsorOptions?.shouldSponsor && isOriginByteCollection(transferPolicies)) {\n\t\t\tthrow new Error(`You cannot sponsor an Origin Byte NFT. Nft Token Id: ${nft?.token_id}`);\n\t\t}\n\n\t\tif (\n\t\t\tnft?.listed ||\n\t\t\tnft.listings.some((listing: { nonce?: string; seller?: string }) =>\n\t\t\t\tisExpiredListing(listing, walletAddress),\n\t\t\t)\n\t\t) {\n\t\t\tawait relistNft({\n\t\t\t\ttx,\n\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\tsharedKioskState,\n\t\t\t\ttransferPolicies,\n\t\t\t\tnft,\n\t\t\t\tlistPrice: inputNft?.listPriceInMist,\n\t\t\t\twalletAddress,\n\t\t\t});\n\t\t} else {\n\t\t\tconst listTxData: ListNftTx = {\n\t\t\t\ttx,\n\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\tsharedKioskState,\n\t\t\t\ttransferPolicies,\n\t\t\t\tseller: walletAddress,\n\t\t\t\tcollectionId: nft?.collection_id,\n\t\t\t\tnftTokenId: nft?.token_id,\n\t\t\t\tnftType,\n\t\t\t\tlistPrice: inputNft?.listPriceInMist,\n\t\t\t\tsellerKiosk: nft?.chain_state?.kiosk_id,\n\t\t\t};\n\n\t\t\tawait addTradePortListTxHandler(listTxData);\n\t\t}\n\n\t\tif (inputNft?.sponsorOptions?.shouldSponsor) {\n\t\t\tawait addSponsorListingTx({\n\t\t\t\ttx,\n\t\t\t\tcoinToSplit: inputNft?.sponsorOptions?.coinToSplit,\n\t\t\t\tnftTokenId: nft?.token_id,\n\t\t\t\tnftType,\n\t\t\t\tsponsorOptions: inputNft?.sponsorOptions,\n\t\t\t});\n\t\t}\n\n\t\tnftsForTracking.push({\n\t\t\twalletAddress,\n\t\t\tnftType,\n\t\t\tcollectionId: nft?.collection_id,\n\t\t\tlistPrice: inputNft?.listPriceInMist,\n\t\t\tisRelist: nft?.listed,\n\t\t\tmarketRelistedFrom: nft?.listings?.[0]?.market_name,\n\t\t});\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && nftsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'LIST_NFTS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\treturn tx;\n};\n","import { normalizeSuiAddress } from '@mysten/sui/utils';\n\nexport const isExpiredListing = (\n\tlisting: { nonce?: string; seller?: string },\n\twalletAddress: string,\n) =>\n\tlisting.nonce &&\n\tlisting.seller &&\n\tnormalizeSuiAddress(listing.seller) === normalizeSuiAddress(walletAddress);\n","import { getNativeKioskTransferPolicies } from './kiosk/getNativeKioskTransferPolicies';\n\ninterface ValidateMinFloorPriceArgs {\n\ttransferPolicies: any;\n\tlistPrice: number;\n}\n\nexport function validateMinFloorPrice({ transferPolicies, listPrice }: ValidateMinFloorPriceArgs) {\n\tconst transferPolicy = getNativeKioskTransferPolicies(transferPolicies)?.at(0);\n\tconst minFloorPrice = transferPolicy?.rules?.filter(\n\t\t(rule: any) => rule?.type === 'floor_price_rule',\n\t)?.[0]?.floor_price;\n\n\tif (minFloorPrice) {\n\t\tif (listPrice < minFloorPrice) {\n\t\t\tconst formattedMinFloorPrice = Number(minFloorPrice) / 1000000000;\n\t\t\tthrow new Error(\n\t\t\t\t`NFT Transfer Policy has a miminum floor price rule. Item cannot be listed for less than ${formattedMinFloorPrice} SUI`,\n\t\t\t);\n\t\t}\n\t}\n}\n","import {\n\tORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK,\n\tTRADEPORT_BENEFICIARY_ADDRESS,\n\tTRADEPORT_LISTINGS_PACKAGE,\n\tTRADEPORT_LISTINGS_STORE,\n\tTRADEPORT_ORDERBOOK_STORE,\n} from '../../constants';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { hasNativeKioskTransferPolicyRules } from '../../helpers/hasTransferPolicyRules';\nimport { assertNftInSharedKiosk } from '../../helpers/kiosk/assertNftInSharedKiosk';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { takeAndBorrowNftFromKiosk } from '../../helpers/kiosk/takeAndBorrowNftFromKiosk';\nimport { depositItemIntoOBKiosk } from '../../helpers/originByte/depositNftIntoOBKiosk';\nimport { getOrCreateOBKiosk } from '../../helpers/originByte/getOrCreateOBKiosk';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { shareOriginByteKiosk } from '../../helpers/originByte/shareOriginByteKiosk';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { validateMinFloorPrice } from '../../helpers/validateMinFloorPrice';\nimport { type ListNftTx } from './listNfts';\n\nexport async function addOriginByteListTx({\n\ttx,\n\tsharedObjects,\n\tnftTokenId,\n\tnftType,\n\tseller,\n\tlistPrice,\n\tcollectionId,\n\tsellerKiosk,\n\tsharedKioskState,\n}: ListNftTx) {\n\tconst { orderbook } = sharedObjects;\n\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: sellerKiosk,\n\t\twalletAddress: seller,\n\t\tsharedKioskState,\n\t});\n\n\tconst { kiosk, isNewKiosk } = await getOrCreateOBKiosk({\n\t\ttx,\n\t\taddress: seller,\n\t\tkioskToUseIfExists: sellerKiosk,\n\t\tsharedKioskState,\n\t});\n\n\tif (isNewKiosk) {\n\t\tdepositItemIntoOBKiosk({\n\t\t\ttx,\n\t\t\tkiosk: sellerKiosk,\n\t\t\tnftTokenId,\n\t\t\tnftType,\n\t\t});\n\t}\n\n\tconst marketFeePrice = getMarketFeePrice({ price: listPrice, collectionId });\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::create_ask_with_commission',\n\t\targuments: [\n\t\t\ttx.object(orderbook),\n\t\t\ttx.object(kiosk),\n\t\t\ttx.pure.u64(listPrice),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.address(TRADEPORT_BENEFICIARY_ADDRESS),\n\t\t\ttx.pure.u64(marketFeePrice),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\tif (isNewKiosk) {\n\t\tshareOriginByteKiosk({ tx, kiosk });\n\t}\n}\n\nexport function addTradePortListTx({\n\ttx,\n\tnftTokenId,\n\tborrowedItem,\n\tnftType,\n\tlistPrice,\n}: ListNftTx) {\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::create_ob_listing_without_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\tborrowedItem ? tx.object(borrowedItem) : tx.object(nftTokenId),\n\t\t\ttx.pure.u64(listPrice),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addKioskTradePortListTx({\n\ttx,\n\tkioskTx,\n\ttransferPolicies,\n\tnftTokenId,\n\tnftType,\n\tlistPrice,\n\tseller,\n}: ListNftTx) {\n\tvalidateMinFloorPrice({ transferPolicies, listPrice });\n\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::create_ob_listing_with_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(seller),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t\ttx.pure.u64(listPrice),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addTradePortListTxHandler(txData: ListNftTx) {\n\t// If NFT is an Origin Byte collection, create an Origin Byte listing\n\tif (\n\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\tawait addOriginByteListTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\t// If nft has no transfer policy rule but is inside a kiosk, take it out of the kiosk\n\tif (\n\t\t!hasNativeKioskTransferPolicyRules(txData?.transferPolicies) &&\n\t\ttxData?.sellerKiosk &&\n\t\ttxData?.nftType !==\n\t\t\t'0xbf1431324a4a6eadd70e0ac6c5a16f36492f255ed4d011978b2cf34ad738efe6::day_one::DayOne'\n\t) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tconst borrowedItem = await takeAndBorrowNftFromKiosk({\n\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\t\tkioskTx,\n\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\tnftTokenId: txData?.nftTokenId,\n\t\t\t\t\tnftType: txData?.nftType,\n\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\tkioskOwner: txData?.seller,\n\t\t\t\t});\n\n\t\t\t\taddTradePortListTx({ ...txData, borrowedItem });\n\t\t\t},\n\t\t});\n\t}\n\n\t// If NFT is in a kiosk, create a kiosk listing\n\tif (txData?.sellerKiosk) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addKioskTradePortListTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\t// If NFT is not in a kiosk, but nft type has a transfer policy rule, create kiosk and place NFT in kiosk first\n\tif (!txData?.sellerKiosk && hasNativeKioskTransferPolicyRules(txData?.transferPolicies)) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tkioskTx.place({\n\t\t\t\t\titem: txData?.nftTokenId,\n\t\t\t\t\titemType: txData?.nftType,\n\t\t\t\t});\n\t\t\t\tawait addKioskTradePortListTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\t// Fallback to non-kiosk listing\n\taddTradePortListTx(txData);\n}\n","import { type KioskClient, type ObjectArgument } from '@mysten/kiosk';\nimport { type Transaction, type TransactionObjectArgument } from '@mysten/sui/transactions';\nimport {\n\tBLUEMOVE_MARKET_CONFIG_OBJECT,\n\tTOCEN_MARKETPLACE_OBJECT,\n\tTRADEPORT_LISTINGS_PACKAGE,\n\tTRADEPORT_LISTINGS_STORE,\n\tTRADEPORT_ORDERBOOK_STORE,\n} from '../../constants';\nimport { addTradePortListTx } from './addListTxs';\nimport { type SuiClient } from '@mysten/sui/client';\n\nexport type RelistNftTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskTx?: any;\n\tkioskClient: KioskClient;\n\ttransferPolicies: any;\n\tseller: string;\n\tcollectionId: string;\n\tnftTokenId?: string;\n\tborrowedItem?: ObjectArgument;\n\tnftType: string;\n\tlistPrice: number;\n\tlistingNonce: string;\n\tsellerKiosk: string;\n};\n\nexport function addTradePortRelistTx({ tx, nftTokenId, nftType, listPrice }: RelistNftTx) {\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::relist_ob_listing_without_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t\ttx.pure.u64(listPrice),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addKioskTradePortRelistTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n\tlistPrice,\n}: RelistNftTx) {\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::relist_ob_listing_with_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t\ttx.pure.u64(listPrice),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addBlueMoveRelistTx(txData: RelistNftTx) {\n\tconst { tx, nftTokenId, nftType, listPrice } = txData;\n\n\tconst borrowedItem = tx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::marketplace::delist',\n\t\targuments: [tx.object(BLUEMOVE_MARKET_CONFIG_OBJECT), tx.pure.address(nftTokenId)],\n\t\ttypeArguments: [nftType, nftType],\n\t}) as TransactionObjectArgument;\n\n\taddTradePortListTx({ ...txData, listPrice, borrowedItem });\n}\n\nexport function addTocenRelistTx(txData: RelistNftTx) {\n\tconst { tx, nftTokenId, nftType, listPrice } = txData;\n\n\tconst borrowedItem = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x3605d91c559e80cf8fdeabae9abaccb0bc38f96eac0b32bf47e95a9159a5277f::tocen_marketplace::delist',\n\t\targuments: [tx.object(TOCEN_MARKETPLACE_OBJECT), tx.pure.address(nftTokenId)],\n\t\ttypeArguments: [nftType],\n\t}) as any;\n\n\taddTradePortListTx({ ...txData, listPrice, borrowedItem });\n}\n","import { type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK } from '../../constants';\nimport { getNftType } from '../../helpers/getNftType';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { addTradePortListTxHandler } from '../listNfts/addListTxs';\nimport {\n\taddBlueMoveRelistTx,\n\taddTocenRelistTx,\n\taddTradePortRelistTx,\n\taddKioskTradePortRelistTx,\n} from '../listNfts/addRelistTxs';\nimport {\n\taddBluemoveUnlistTxHandler,\n\taddClutchyUnlistTxHandler,\n\taddHyperspaceUnlistTxHandler,\n\taddTradePortUnlistTxHandler,\n} from '../unlistListings/addUnlistListingTxs';\nimport { type UnlistListingTx } from '../unlistListings/unlistListings';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\n\ninterface Args {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tsharedKioskState: SharedKioskState;\n\ttransferPolicies: any;\n\tnft: any;\n\tlistPrice: number;\n\twalletAddress: string;\n}\n\nexport async function relistNft({\n\ttx,\n\tsuiClient,\n\tkioskClient,\n\tsharedKioskState,\n\tnft,\n\tlistPrice,\n\ttransferPolicies,\n\twalletAddress,\n}: Args) {\n\tconst firstListedOrExpiredListing = (\n\t\tnft?.listings as Array<{ listed: boolean; price?: number; nonce?: string; market_name: string }>\n\t).find((l) => l.listed || l.nonce);\n\tif (!firstListedOrExpiredListing) {\n\t\tthrow new Error('No listing found for NFT');\n\t}\n\n\tconst txData: UnlistListingTx = {\n\t\ttx,\n\t\tsuiClient,\n\t\tkioskClient,\n\t\tsharedKioskState,\n\t\ttransferPolicies,\n\t\tnftTokenId: nft?.token_id,\n\t\tnftType: getNftType({\n\t\t\tcollectionId: nft?.collection?.id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t}),\n\t\tlistingNonce: firstListedOrExpiredListing.nonce,\n\t\tprice: firstListedOrExpiredListing.price,\n\t\tsellerKiosk: nft?.chain_state?.kiosk_id,\n\t\tcollectionId: nft?.collection_id,\n\t\tseller: walletAddress,\n\t};\n\n\tswitch (firstListedOrExpiredListing.market_name) {\n\t\tcase 'tradeport':\n\t\t\tif (\n\t\t\t\ttxData?.listingNonce &&\n\t\t\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t\t\t) {\n\t\t\t\tawait addTradePortUnlistTxHandler(txData);\n\t\t\t\tawait addTradePortListTxHandler({\n\t\t\t\t\t...txData,\n\t\t\t\t\tlistPrice,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (txData?.listingNonce?.startsWith('0::')) {\n\t\t\t\taddTradePortRelistTx({ ...txData, listPrice });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (txData?.listingNonce?.startsWith('1::')) {\n\t\t\t\treturn kioskTxWrapper({\n\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\tkioskOwner: txData?.seller,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\t\t\tshouldUseSharedKioskTx: false,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addKioskTradePortRelistTx({\n\t\t\t\t\t\t\t...txData,\n\t\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\t\tlistPrice,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tawait addTradePortUnlistTxHandler({ ...txData, isPartOfRelist: true });\n\t\t\tawait addTradePortListTxHandler({ ...txData, listPrice });\n\t\t\tbreak;\n\t\tcase 'hyperspace':\n\t\t\tawait addHyperspaceUnlistTxHandler(txData);\n\t\t\tawait addTradePortListTxHandler({ ...txData, listPrice });\n\t\t\tbreak;\n\t\tcase 'bluemove':\n\t\t\tif (\n\t\t\t\t!isOriginByteCollection(txData?.transferPolicies) ||\n\t\t\t\t(ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType)) &&\n\t\t\t\t\t!txData?.sellerKiosk)\n\t\t\t) {\n\t\t\t\taddBlueMoveRelistTx({ ...txData, listPrice });\n\t\t\t} else {\n\t\t\t\tawait addBluemoveUnlistTxHandler(txData);\n\t\t\t\tawait addTradePortListTxHandler({ ...txData, listPrice });\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase 'clutchy':\n\t\t\tawait addClutchyUnlistTxHandler(txData);\n\t\t\tawait addTradePortListTxHandler({ ...txData, listPrice });\n\t\t\tbreak;\n\t\tcase 'souffl3':\n\t\t\t// Souffl3 contract does not support relists\n\n\t\t\tbreak;\n\t\tcase 'somis':\n\t\t\t// Somis contract does not support relists\n\n\t\t\tbreak;\n\t\tcase 'keepsake':\n\t\t\t// Keepsake contract does not support relists\n\n\t\t\tbreak;\n\t\tcase 'tocen':\n\t\t\taddTocenRelistTx({ ...txData, listPrice });\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error('Marketplace not supported');\n\t}\n}\n","import type { Transaction } from '@mysten/sui/transactions';\nimport BigNumber from '../../bigNumberConfig';\nimport { TRADEPORT_LISTINGS_PACKAGE, TRADEPORT_LISTINGS_STORE } from '../../constants';\nimport { type SponsorNftListingOptions } from './sponsorNftListing';\n\nexport const addSponsorListingTx = async ({\n\ttx,\n\tcoinToSplit,\n\tnftTokenId,\n\tnftType,\n\tsponsorOptions,\n}: {\n\ttx: Transaction;\n\tcoinToSplit: any;\n\tnftTokenId: string;\n\tnftType: string;\n\tsponsorOptions: SponsorNftListingOptions;\n}) => {\n\tconst [sponsorFeeCoin] = tx.splitCoins(coinToSplit, [\n\t\ttx.pure.u64(\n\t\t\tnew BigNumber(sponsorOptions?.usdcFeeAmountPerPeriod)\n\t\t\t\t?.times(sponsorOptions?.numOfPeriods)\n\t\t\t\t.toString(),\n\t\t),\n\t]);\n\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::add_sponsored_listing`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object.clock(),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t\ttx.pure.u64(sponsorOptions?.numOfPeriods),\n\t\t\ttx.object(sponsorFeeCoin),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n};\n","import { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchKiosksByOwner } from '../../graphql/queries/fetchKiosksByOwner';\nimport {\n\tfetchBulkNftsByKioskId,\n\tfetchNftsByKioskId,\n} from '../../graphql/queries/fetchNftsByKioskId';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getNativeKioskTransferPoliciesByNftType } from '../../helpers/kiosk/getNativeKioskTransferPoliciesByNftType';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { addClaimTransferredNftWithPurchaseCapTx } from '../claimNfts/addClaimNftsTxs';\nimport { addTradeportKioskTransferTx } from '../transferNfts/addTransferNftTx';\n\nexport type MigrateNftsFromUnsharedToSharedKiosks = {\n\twalletAddress: string;\n\tmax?: number;\n};\n\nexport async function migrateNftsFromUnsharedToSharedKiosks(\n\t{ walletAddress, max = 50 }: MigrateNftsFromUnsharedToSharedKiosks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst tx = new Transaction();\n\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchKiosksByOwner,\n\t\tvariables: { ownerAddress: addLeadingZerosAfter0x(walletAddress) },\n\t});\n\n\tconst unsharedOBKiosks = res?.kiosks\n\t\t?.filter((k: any) => !k.is_shared && k.is_origin_byte)\n\t\t?.map((k: any) => k.id);\n\n\tlet currentMigrationCount = 0;\n\n\tconst sharedOBKiosk = res?.kiosks?.filter((k: any) => k.is_shared && k.is_origin_byte)?.[0]?.id;\n\n\tfor (const unsharedOBKiosk of unsharedOBKiosks) {\n\t\tif (currentMigrationCount >= max) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst res = await gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchNftsByKioskId,\n\t\t\tvariables: { jsonFilter: { kiosk_id: unsharedOBKiosk } },\n\t\t});\n\n\t\tconst nfts = res?.nfts;\n\n\t\tif (nfts.length > 0) {\n\t\t\tcurrentMigrationCount++;\n\t\t}\n\n\t\tfor (const nft of nfts) {\n\t\t\tif (nft?.chain_state?.claimable_trade_id) {\n\t\t\t\t// origin byte trade hold, so they are stuck and cannot be migrated\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst nftType = getNftType({\n\t\t\t\tcollectionId: nft?.collection?.id,\n\t\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\t\tnft,\n\t\t\t});\n\n\t\t\tconst nftTokenId = nft?.token_id;\n\n\t\t\tif (sharedOBKiosk) {\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget:\n\t\t\t\t\t\t'0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::p2p_transfer',\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(unsharedOBKiosk),\n\t\t\t\t\t\ttx.object(sharedOBKiosk),\n\t\t\t\t\t\ttx.pure.address(nftTokenId),\n\t\t\t\t\t],\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget:\n\t\t\t\t\t\t'0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::p2p_transfer_and_create_target_kiosk',\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(unsharedOBKiosk),\n\t\t\t\t\t\ttx.pure.address(addLeadingZerosAfter0x(walletAddress)),\n\t\t\t\t\t\ttx.pure.address(nftTokenId),\n\t\t\t\t\t],\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tconst unsharedNativeKiosks = res?.kiosks\n\t\t?.filter((k: any) => !k.is_shared && !k.is_origin_byte)\n\t\t?.map((k: any) => k.id);\n\n\tconst allNfts = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchBulkNftsByKioskId,\n\t\tvariables: {\n\t\t\twhere: {\n\t\t\t\t_or: unsharedNativeKiosks.map((nk: any) => ({\n\t\t\t\t\tchain_state: { _contains: { kiosk_id: nk } },\n\t\t\t\t})),\n\t\t\t},\n\t\t},\n\t});\n\n\tconst formatted: any = {};\n\tallNfts.nfts.forEach((e: any) => {\n\t\tif (formatted[e.chain_state.kiosk_id]) {\n\t\t\tformatted[e.chain_state.kiosk_id]?.push(e);\n\t\t} else {\n\t\t\tformatted[e.chain_state.kiosk_id] = [e];\n\t\t}\n\t});\n\n\tconst allNftTypes = allNfts.nfts.reduce((acc: any[], curr: any) => {\n\t\tconst type = getNftType({\n\t\t\tcollectionId: curr?.collection?.id,\n\t\t\tcollectionChainState: curr?.collection?.chain_state,\n\t\t\tnft: curr,\n\t\t});\n\t\tif (!acc.includes(type)) acc.push(type);\n\t\treturn acc;\n\t}, []);\n\n\tconst transferPolicies = await Promise.all(\n\t\tallNftTypes.map(async (type: string) => getNativeKioskTransferPoliciesByNftType(type)),\n\t);\n\n\tconst mappedTrasferPolicies: Record<string, any> = {};\n\ttransferPolicies.forEach((tp: any) => {\n\t\tmappedTrasferPolicies[tp?.[0]?.type] = tp;\n\t});\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: undefined,\n\t};\n\n\tfor (const unsharedNativeKiosk of unsharedNativeKiosks) {\n\t\tif (currentMigrationCount >= max) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst nfts = formatted[unsharedNativeKiosk] ?? [];\n\t\tif (nfts?.length > 0) {\n\t\t\tcurrentMigrationCount++;\n\t\t}\n\n\t\tfor (const nft of nfts) {\n\t\t\tlet existingKioskTx;\n\t\t\tif (nft?.claimable_reason === 'offer-transfer') {\n\t\t\t\t// native kiosk kiosk_transfers transfer hold. Transfer needs to be cancelled first in order to be migrated\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst nftType = getNftType({\n\t\t\t\tcollectionId: nft?.collection?.id,\n\t\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\t\tnft,\n\t\t\t});\n\t\t\tconst nftTokenId = nft?.token_id;\n\t\t\tawait kioskTxWrapper({\n\t\t\t\ttx,\n\t\t\t\tkioskClient: context?.kioskClient,\n\t\t\t\tkioskOwner: walletAddress,\n\t\t\t\tkiosk: unsharedNativeKiosk,\n\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\tsharedKioskState,\n\t\t\t\tshouldUseSharedKioskTx: false,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tawait addTradeportKioskTransferTx({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: context?.kioskClient,\n\t\t\t\t\t\tsuiClient: context?.suiClient,\n\t\t\t\t\t\tsenderKiosk: unsharedNativeKiosk,\n\t\t\t\t\t\tsenderAddress: walletAddress,\n\t\t\t\t\t\trecipientAddress: walletAddress,\n\t\t\t\t\t\tnftTokenId,\n\t\t\t\t\t\tnftType,\n\t\t\t\t\t\ttransferPolicies: mappedTrasferPolicies[nftType],\n\t\t\t\t\t\ttransferPolicy: mappedTrasferPolicies[nftType]?.[0],\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\t\t\tawait kioskTxWrapper({\n\t\t\t\ttx,\n\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\tkioskOwner: walletAddress,\n\t\t\t\tkiosk: unsharedNativeKiosk,\n\t\t\t\tkioskStrategy: 'exclude',\n\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\tsharedKioskState,\n\t\t\t\tshouldUseSharedKioskTx: false,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tawait addClaimTransferredNftWithPurchaseCapTx({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tsharedObjects: [],\n\t\t\t\t\t\tclaimer: walletAddress,\n\t\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\t\t\tnftTokenId,\n\t\t\t\t\t\tnftType,\n\t\t\t\t\t\tsellerKiosk: unsharedNativeKiosk,\n\t\t\t\t\t\tseller: nft?.owner,\n\t\t\t\t\t\ttransferPolicies: mappedTrasferPolicies[nftType],\n\t\t\t\t\t\tpreloadedTransferPolicyId: mappedTrasferPolicies[nftType]?.[0]?.id,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\treturn Transaction.from(tx);\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchNftsByKioskId = gql`\n\tquery fetchNftsByKioskId($jsonFilter: jsonb) {\n\t\tnfts(where: { chain_state: { _contains: $jsonFilter } }) {\n\t\t\tid\n\t\t\tname\n\t\t\ttoken_id\n\t\t\tproperties\n\t\t\tchain_state\n\t\t\tcollection_id\n\t\t\tclaimable_reason\n\t\t\towner\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const fetchBulkNftsByKioskId = gql`\n\tquery fetchNftsByKioskId($where: nfts_bool_exp) {\n\t\tnfts(where: $where) {\n\t\t\tid\n\t\t\tname\n\t\t\ttoken_id\n\t\t\tproperties\n\t\t\tchain_state\n\t\t\tcollection_id\n\t\t\tclaimable_reason\n\t\t\towner\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { gql } from 'graphql-request';\n\nexport const fetchTransferPoliciesByType = gql`\n\tquery fetchTransferPoliciesByType($type: String!) {\n\t\ttransfer_policies_by_type(type: $type) {\n\t\t\tid\n\t\t\tis_origin_byte\n\t\t\trules\n\t\t\ttype\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchTransferPoliciesByType } from '../../graphql/queries/fetchTransferPoliciesByType';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { getNativeKioskTransferPolicies } from './getNativeKioskTransferPolicies';\n\nexport const getNativeKioskTransferPoliciesByNftType = async (nftType: string) => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchTransferPoliciesByType,\n\t\tvariables: { type: normalizedNftType(nftType) },\n\t});\n\n\treturn getNativeKioskTransferPolicies(res?.transfer_policies_by_type);\n};\n\nexport const knownTransferPolicyRules = [\n\t'royalty_rule',\n\t'kiosk_lock_rule',\n\t'personal_kiosk_rule',\n\t'floor_price_rule',\n];\n","import { type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport {\n\tMYSTEN_TRANSFER_POLICY_RULES_PACKAGE_ID,\n\tMYSTEN_TRANSFER_POLICY_RULES_PACKAGE_ID_V2,\n\tTRADEPORT_KIOSK_TRANSFERS_STORE,\n} from '../../constants';\nimport { destroyZeroCoin } from '../../helpers/destroyZeroCoin';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getTransferPolicyRuleNamesFromSuiObject } from '../../helpers/getTransferPolicyRuleNamesFromSuiObject';\nimport { assertNftInSharedKiosk } from '../../helpers/kiosk/assertNftInSharedKiosk';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport { getOBKiosk } from '../../helpers/originByte/getOBKiosk';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { type TransferNftTx } from './transferNfts';\n\ntype CollectionChainState = {\n\ttransfer_policies: TransferPolicy[];\n};\ntype TransferPolicy = {\n\tid: string;\n\trules: Array<{ type: string; min_amount?: string }>;\n\tis_origin_byte: boolean;\n\tis_disabled: boolean;\n};\n\nexport async function addOriginByteTransferNftTx({\n\ttx,\n\tnftTokenId,\n\tnftType,\n\trecipientAddress,\n\tsenderKiosk,\n\tsenderAddress,\n\tsharedKioskState,\n}: TransferNftTx) {\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: senderKiosk,\n\t\twalletAddress: senderAddress,\n\t\tsharedKioskState,\n\t});\n\n\tconst recipientOBKiosk = await getOBKiosk({ wallet: recipientAddress, sharedKioskState });\n\n\tif (recipientOBKiosk) {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::p2p_transfer',\n\t\t\targuments: [tx.object(senderKiosk), tx.object(recipientOBKiosk), tx.pure.address(nftTokenId)],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t} else {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::p2p_transfer_and_create_target_kiosk',\n\t\t\targuments: [\n\t\t\t\ttx.object(senderKiosk),\n\t\t\t\ttx.pure.address(addLeadingZerosAfter0x(recipientAddress)),\n\t\t\t\ttx.pure.address(nftTokenId),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t}\n}\n\nexport async function addTradeportKioskTransferTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n\trecipientAddress,\n\ttransferPolicy,\n\ttransferPolicies,\n}: TransferNftTx) {\n\tconst existingTransferPolicy =\n\t\ttransferPolicy ?? getNativeKioskTransferPolicies(transferPolicies)?.at(0);\n\tconst hasFloorPriceRule = existingTransferPolicy?.rules?.some(\n\t\t(rule: any) => rule.type === 'floor_price_rule',\n\t);\n\tif (hasFloorPriceRule) {\n\t\tthrow new Error('Cannot transfer NFT with a minimum floor price rule');\n\t}\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x49642273ca7db3d942f9fd810c93467974c40e73ea7f03e8e7a632f1222aca73::kiosk_transfers::transfer_with_purchase_capability',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_STORE),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.address(addLeadingZerosAfter0x(recipientAddress)),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addTradeportKioskDirectTransferTx(\n\ttxData: {\n\t\ttx: Transaction;\n\t\trecipientAddress: string;\n\t\tkioskClient: KioskClient;\n\t\tsenderAddress: string;\n\t\tsharedKioskState?: SharedKioskState;\n\t},\n\tnfts: any[],\n\tsuiClient: SuiClient,\n) {\n\tconst { tx, recipientAddress, kioskClient, sharedKioskState, senderAddress } = txData;\n\tif (nfts.length === 0) {\n\t\treturn;\n\t}\n\n\tconst transferPolicies = new Map<string, TransferPolicy>(\n\t\tawait Promise.all(\n\t\t\tnfts.map(\n\t\t\t\tasync (nft): Promise<[string, TransferPolicy]> => [\n\t\t\t\t\tnft.id as string,\n\t\t\t\t\tawait getTransferPolicyForDirectTransfer(suiClient, nft.collection.chain_state),\n\t\t\t\t],\n\t\t\t),\n\t\t),\n\t);\n\tconst royaltyAmounts = [...transferPolicies.values()].map((transferPolicy) =>\n\t\tBigInt(transferPolicy?.rules.find((rule) => rule.type === 'royalty_rule')?.min_amount ?? 0n),\n\t);\n\n\tconst totalRoyaltyAmount = royaltyAmounts.reduce((sum: bigint, amount) => sum + amount, 0n);\n\tconst [royaltyCoin] = tx.splitCoins(tx.gas, [tx.pure.u64(totalRoyaltyAmount)]);\n\tfor (const nft of nfts) {\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: nft?.collection?.id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t});\n\n\t\tawait kioskTxWrapper({\n\t\t\ttx,\n\t\t\tkioskClient,\n\t\t\tkioskOwner: senderAddress,\n\t\t\tkiosk: nft?.chain_state?.kiosk_id,\n\t\t\tsharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget:\n\t\t\t\t\t\t'0x4acc0efedd243eb61ab8f8a3e9c24b09a1838c43d16029e8c8985004dfd67239::kiosk_transfers::direct_transfer_to_receiver',\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(kioskTx.getKiosk() as any),\n\t\t\t\t\t\ttx.object(kioskTx.getKioskCap() as any),\n\t\t\t\t\t\ttx.pure.address(recipientAddress),\n\t\t\t\t\t\ttx.pure.id(nft.token_id),\n\t\t\t\t\t\ttx.object(transferPolicies.get(nft.id).id),\n\t\t\t\t\t\troyaltyCoin,\n\t\t\t\t\t],\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\tdestroyZeroCoin({ tx, coin: royaltyCoin });\n}\n\nexport async function canBeTransferedDirectly(\n\tsuiClient: SuiClient,\n\tcollectionChainState?: CollectionChainState,\n) {\n\treturn (\n\t\t(await getTransferPolicyForDirectTransfer(suiClient, collectionChainState, true)) !== undefined\n\t);\n}\n\nexport async function getTransferPolicyForDirectTransfer(\n\tsuiClient: SuiClient,\n\tcollectionChainState?: CollectionChainState,\n\tvalidateRules = false,\n): Promise<TransferPolicy | undefined> {\n\tconst candidatePolicy = collectionChainState?.transfer_policies?.find(\n\t\t(policy) =>\n\t\t\t!policy.is_origin_byte &&\n\t\t\t!policy.is_disabled &&\n\t\t\tpolicy.rules.length > 0 &&\n\t\t\tpolicy.rules?.filter(\n\t\t\t\t(rule) =>\n\t\t\t\t\trule.type !== 'kiosk_lock_rule' &&\n\t\t\t\t\trule.type !== 'royalty_rule' &&\n\t\t\t\t\trule.type !== 'personal_kiosk_rule',\n\t\t\t).length === 0,\n\t);\n\n\tif (validateRules && candidatePolicy) {\n\t\tconst ruleNames = await getTransferPolicyRuleNamesFromSuiObject({\n\t\t\tsuiClient,\n\t\t\ttransferPolicyId: candidatePolicy.id,\n\t\t});\n\t\tif (\n\t\t\t!ruleNames.every(\n\t\t\t\t(name) =>\n\t\t\t\t\tname.startsWith(MYSTEN_TRANSFER_POLICY_RULES_PACKAGE_ID) ||\n\t\t\t\t\tname.startsWith(MYSTEN_TRANSFER_POLICY_RULES_PACKAGE_ID_V2),\n\t\t\t)\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\treturn candidatePolicy;\n}\n","import { type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport { ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK } from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchCollectionsByIdWithOneNft } from '../../graphql/queries/fetchCollectionsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { getOrCreateOBKiosk } from '../../helpers/originByte/getOrCreateOBKiosk';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { shareOriginByteKiosk } from '../../helpers/originByte/shareOriginByteKiosk';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { addTradePortPlaceNftBidTxHandler } from '../placeNftBids/addPlaceNftBidTxs';\nimport { addOriginByteCollectionBidTx } from './addPlaceCollectionBidTxs';\n\nexport type PlaceCollectionBidTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tbidder: string;\n\tcollectionId: string;\n\tnftType: string;\n\tbidAmount: number;\n\tbidderKiosk?: string;\n\troyaltyRulePackageId?: string;\n\troyaltyRuleModule?: string;\n\tmultiBidId?: string;\n\tmultiBidChainId?: any;\n\texpireAt?: Date;\n\tcoinToSplit?: any;\n};\n\nexport type PlaceCollectionBid = {\n\tcollectionId: string;\n\tbidAmountInMist: number;\n\tnumOfBids: number;\n\twalletAddress: string;\n\tmultiBidId?: string;\n\tmultiBidChainId?: any;\n\texpireAt?: Date;\n\ttx?: Transaction;\n};\n\nexport type PlaceCollectionBids = {\n\tcollections: Array<{\n\t\tid: string;\n\t\tbidAmountInMist: number;\n\t\tnumOfBids: number;\n\t\texpireAt?: Date;\n\t}>;\n\twalletAddress: string;\n\tmultiBidId?: string;\n\tmultiBidChainId?: any;\n\ttx?: Transaction;\n\tcoinToSplit?: any;\n};\n\nexport const placeCollectionBids = async (\n\t{\n\t\tcollections,\n\t\twalletAddress,\n\t\tmultiBidId,\n\t\tmultiBidChainId,\n\t\ttx: existingTx,\n\t\tcoinToSplit,\n\t}: PlaceCollectionBids,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchCollectionsByIdWithOneNft,\n\t\tvariables: { collectionIds: collections.map((collection) => collection.id) },\n\t});\n\n\tif (res?.collections?.length === 0) {\n\t\tthrow new Error('No collection found');\n\t}\n\n\tconst collectionsForTracking = [];\n\tconst tx = existingTx ?? new Transaction();\n\n\tfor (const collection of res.collections) {\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: collection?.id,\n\t\t\tcollectionChainState: collection?.chain_state,\n\t\t\tnft: collection?.nfts?.[0],\n\t\t});\n\n\t\tconst transferPolicies = collection?.chain_state?.transfer_policies;\n\n\t\tconst txData: PlaceCollectionBidTx = {\n\t\t\ttx,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\ttransferPolicies,\n\t\t\tbidder: walletAddress,\n\t\t\tcollectionId: collection?.id,\n\t\t\tnftType,\n\t\t\tbidAmount: collections?.find((c) => c.id === collection?.id)?.bidAmountInMist,\n\t\t\tmultiBidId,\n\t\t\tmultiBidChainId,\n\t\t\texpireAt: collections?.find((c) => c.id === collection?.id)?.expireAt,\n\t\t\tcoinToSplit,\n\t\t};\n\n\t\tconst numOfBids = collections?.find((c) => c.id === collection?.id)?.numOfBids;\n\n\t\tif (\n\t\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t\t) {\n\t\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\n\t\t\tconst { kiosk: bidderKiosk, isNewKiosk: isNewBidderKiosk } = await getOrCreateOBKiosk({\n\t\t\t\ttx,\n\t\t\t\taddress: txData.bidder,\n\t\t\t});\n\n\t\t\tfor (let i = 0; i < numOfBids; i++) {\n\t\t\t\tawait addOriginByteCollectionBidTx({ ...txData, bidderKiosk, sharedObjects });\n\t\t\t}\n\n\t\t\tif (isNewBidderKiosk) {\n\t\t\t\tshareOriginByteKiosk({ tx, kiosk: bidderKiosk });\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let i = 0; i < numOfBids; i++) {\n\t\t\t\tawait addTradePortPlaceNftBidTxHandler({ ...txData, bidAmount: BigInt(txData.bidAmount) });\n\t\t\t}\n\t\t}\n\n\t\tcollectionsForTracking.push({\n\t\t\tnftType,\n\t\t\tcollectionId: collection?.id,\n\t\t\tbidAmount: collections?.find((c) => c.id === collection?.id)?.bidAmountInMist,\n\t\t\tbidder: walletAddress,\n\t\t});\n\t}\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && collectionsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'PLACE_COLLECTION_BIDS',\n\t// \t\titems: collectionsForTracking,\n\t// \t});\n\t// }\n\n\treturn tx;\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchCollectionsById = gql`\n\tquery fetchCollectionsById($collectionIds: [uuid!]) {\n\t\tcollections(where: { id: { _in: $collectionIds } }) {\n\t\t\tid\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const fetchCollectionsByIdWithOneNft = gql`\n\tquery fetchCollectionsByIdWithOneNft($collectionIds: [uuid!]) {\n\t\tcollections(where: { id: { _in: $collectionIds } }) {\n\t\t\tid\n\t\t\tchain_state\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tnfts(limit: 1) {\n\t\t\t\tid\n\t\t\t\tproperties\n\t\t\t\tcontract {\n\t\t\t\t\tproperties\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const fetchCollectionsBySlug = gql`\n\tquery fetchCollectionsBySlug($slug: String!) {\n\t\tcollections(where: { slug: { _eq: $slug } }) {\n\t\t\tid\n\t\t}\n\t}\n`;\n","import { type SuiClient } from '@mysten/sui/client';\nimport { fromHex, normalizeSuiObjectId } from '@mysten/sui/utils';\nimport {\n\tDYNAMIC_COLLECTION_IDS,\n\tORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK,\n\tTRADEPORT_MULTI_BID_PACKAGE,\n\tTRADEPORT_MULTI_BID_STORE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport {\n\tfetchMultibidChainIdAndExpiredSingleBidsById,\n\tfetchMultibidChainIdById,\n} from '../../graphql/queries/fetchMultibidById';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { type PlaceNftBidTx } from './placeNftBids';\nimport { addCancelSingleBidForMultibidChainId } from '../removeNftBids/addRemoveNftBidTxs';\nimport { type Transaction } from '@mysten/sui/transactions';\n\nexport async function addTradePortPlaceNftBidTxHandler(txData: PlaceNftBidTx) {\n\tif (\n\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t) {\n\t\tthrow new Error('OriginByte bidding not supported currently');\n\t}\n\n\tconst {\n\t\ttx,\n\t\tnftType,\n\t\tmultiBidId,\n\t\tmultiBidChainId: existingMultiBidChainId,\n\t\tnftTokenId,\n\t\tcollectionId,\n\t\tbcsHex,\n\t\texpireAt,\n\t\tcoinToSplit,\n\t} = txData;\n\tlet bcs: Uint8Array | undefined;\n\tif (nftTokenId && isDynamicCollection(collectionId)) {\n\t\tif (!bcsHex) {\n\t\t\tthrow new Error(`No BCS found for token ${nftTokenId}`);\n\t\t}\n\n\t\tbcs = fromHex(bcsHex);\n\t}\n\n\tlet multiBidChainId;\n\tlet expiredBids;\n\tif (existingMultiBidChainId) {\n\t\tmultiBidChainId = existingMultiBidChainId;\n\t} else {\n\t\tconst {\n\t\t\tchain_id: chainId,\n\t\t\tcancelled_at,\n\t\t\tbids,\n\t\t} = multiBidId\n\t\t\t? ((\n\t\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\t\tchain: 'sui',\n\t\t\t\t\t\tquery: fetchMultibidChainIdAndExpiredSingleBidsById,\n\t\t\t\t\t\tvariables: { multiBidId, expiredBidLimit: 300 },\n\t\t\t\t\t})\n\t\t\t\t)?.multi_bids?.[0] ?? {})\n\t\t\t: {};\n\n\t\tif (chainId && cancelled_at) {\n\t\t\tthrow new Error(`MultiBid ${chainId} already cancelled`);\n\t\t}\n\n\t\tmultiBidChainId = chainId;\n\t\texpiredBids = bids;\n\t}\n\n\tconst transferPolicies = getNativeKioskTransferPolicies(txData?.transferPolicies);\n\tconst transferPolicy = transferPolicies?.find(\n\t\t(policy: { rules: any[] }) => policy?.rules?.length > 0,\n\t);\n\tconst price = BigInt(txData?.bidAmount ?? 0n);\n\tconst fee = (BigInt(txData?.bidAmount ?? 0) * (await getBidFeeBps(txData?.suiClient))) / 10_000n;\n\tlet royalty = 0n;\n\tconst royaltyRule = (transferPolicy?.rules ?? []).find((r: { type: string }) =>\n\t\tr.type.endsWith('royalty_rule'),\n\t);\n\n\tif (royaltyRule) {\n\t\tconst { amount_bp, min_amount } = royaltyRule;\n\t\troyalty = BigInt((price * BigInt(amount_bp)) / 10_000n);\n\t\tif (royalty < BigInt(min_amount ?? 0n)) {\n\t\t\troyalty = BigInt(min_amount ?? 0n);\n\t\t}\n\t}\n\n\tconst txWithState = tx as Transaction & { hasCancelBidTransactions: Map<string, boolean> };\n\ttxWithState.hasCancelBidTransactions ??= new Map<string, boolean>();\n\n\tif (multiBidChainId && !txWithState.hasCancelBidTransactions.get(multiBidChainId)) {\n\t\t// Clean up expired bids in existing multibid\n\t\tfor (const { nonce } of expiredBids ?? []) {\n\t\t\taddCancelSingleBidForMultibidChainId(tx, nonce, multiBidChainId);\n\t\t}\n\n\t\ttxWithState.hasCancelBidTransactions.set(multiBidChainId, true);\n\t}\n\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [\n\t\tmultiBidChainId ? 0n : price + fee + royalty,\n\t]);\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::create_bid_with${transferPolicy ? '' : 'out'}_transfer_policy`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_MULTI_BID_STORE),\n\t\t\ttx.pure.u64(nftTokenId ? 1 : 0),\n\t\t\tmultiBidChainId\n\t\t\t\t? typeof multiBidChainId === 'string'\n\t\t\t\t\t? tx.pure.option('id', normalizeSuiObjectId(multiBidChainId))\n\t\t\t\t\t: tx.moveCall({\n\t\t\t\t\t\t\ttarget: '0x1::option::some',\n\t\t\t\t\t\t\ttypeArguments: ['0x2::object::ID'],\n\t\t\t\t\t\t\targuments: [multiBidChainId],\n\t\t\t\t\t\t})\n\t\t\t\t: undefined,\n\t\t\ttx.pure.option('id', nftTokenId ? normalizeSuiObjectId(nftTokenId) : undefined),\n\t\t\ttx.pure.option('vector<u8>', bcs ? [...bcs] : undefined),\n\t\t\ttx.pure.option('u64', expireAt?.getTime()),\n\t\t\ttx.pure.u64(price),\n\t\t\t...(transferPolicy ? [tx.object(transferPolicy.id)] : []),\n\t\t\ttx.object(coin),\n\t\t],\n\t});\n}\n\nlet bidFeeBps: bigint | undefined;\n\nexport async function getBidFeeBps(suiClient: SuiClient) {\n\tif (bidFeeBps !== undefined) {\n\t\treturn bidFeeBps;\n\t}\n\n\tconst res = await suiClient.getObject({\n\t\tid: TRADEPORT_MULTI_BID_STORE,\n\t\toptions: { showContent: true },\n\t});\n\tif (res.error) {\n\t\tthrow new Error(`Error on getting SUI object ${TRADEPORT_MULTI_BID_STORE}: ${res.error.code}`);\n\t}\n\n\tbidFeeBps = BigInt(\n\t\t(res?.data?.content as unknown as { fields: { fee_bps: string } })?.fields?.fee_bps ?? 0,\n\t);\n\n\treturn bidFeeBps;\n}\n\nexport function isDynamicCollection(collectionId: string): boolean {\n\treturn DYNAMIC_COLLECTION_IDS.includes(collectionId);\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchCollectionFloorListings = gql`\n\tquery fetchCollectionFloorListings($collectionId: uuid!) {\n\t\tlistings(\n\t\t\twhere: { collection_id: { _eq: $collectionId }, listed: { _eq: true }, nft: {} }\n\t\t\torder_by: { price: asc_nulls_last, market_name: desc_nulls_last }\n\t\t\tlimit: 3\n\t\t) {\n\t\t\tid\n\t\t\tprice\n\t\t\tmarket_name\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../graphql/gqlChainRequest';\nimport { fetchCollectionFloorListings } from '../graphql/queries/fetchCollectionFloorListings';\n\nexport const getCollectionFloorPrice = async (collectionId: string) => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchCollectionFloorListings,\n\t\tvariables: { collectionId },\n\t});\n\n\treturn res?.listings?.[0]?.price;\n};\n","import {\n\tTRADEPORT_BENEFICIARY_ADDRESS,\n\tTRADEPORT_BIDDING_STORE,\n\tTRADEPORT_KIOSK_BIDDING_STORE,\n} from '../../constants';\nimport { destroyZeroCoin } from '../../helpers/destroyZeroCoin';\nimport { getCollectionFloorPrice } from '../../helpers/getCollectionFloorPrice';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getRoyaltyRuleModule } from '../../helpers/getRoyaltyRuleModule';\nimport { getTradeportBiddingContractBidAmount } from '../../helpers/getTradeportBiddingContractBidAmount';\nimport { hasRoyaltyRule } from '../../helpers/hasRoyaltyRule';\nimport { getKioskPlaceBidCoin } from '../../helpers/kiosk/getKioskPlaceBidCoin';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { getRulePackageId } from '../../helpers/kiosk/getRulePackageId';\nimport { splitCoins } from '../../helpers/splitCoins';\nimport { type PlaceCollectionBidTx } from './placeCollectionBids';\n\nexport function addTradePortCollectionBidTx({\n\ttx,\n\tcollectionId,\n\tnftType,\n\tbidAmount,\n}: PlaceCollectionBidTx) {\n\tconst amountToBid = getTradeportBiddingContractBidAmount({ bidAmount, collectionId });\n\tconst marketFeePrice = getMarketFeePrice({ price: bidAmount, collectionId });\n\n\tconst [coin] = splitCoins({ tx, amounts: [tx.pure.u64(amountToBid + marketFeePrice)] });\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::collection_bid',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_BIDDING_STORE),\n\t\t\ttx.pure.u64(amountToBid),\n\t\t\ttx.object(coin),\n\t\t\ttx.pure.u64(marketFeePrice),\n\t\t\ttx.pure.address(TRADEPORT_BENEFICIARY_ADDRESS),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tdestroyZeroCoin({ tx, coin });\n}\n\nexport async function addTradePortKioskCollectionBidTx({\n\ttx,\n\tsuiClient,\n\tbidder,\n\tcollectionId,\n\tnftType,\n\tbidAmount,\n\troyaltyRulePackageId,\n\troyaltyRuleModule,\n\ttransferPolicies,\n}: PlaceCollectionBidTx) {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst marketFeePrice = getMarketFeePrice({\n\t\tprice: bidAmount,\n\t\tcollectionId,\n\t});\n\n\tconst coin = await getKioskPlaceBidCoin({\n\t\ttx,\n\t\tsuiClient,\n\t\tbidder,\n\t\tnftType,\n\t\tbidAmount,\n\t\tmarketFeePrice,\n\t\troyaltyRulePackageId,\n\t\troyaltyRuleModule,\n\t\ttransferPolicyId,\n\t});\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::collection_bid',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_BIDDING_STORE),\n\t\t\ttx.pure.u64(bidAmount),\n\t\t\ttx.object(coin),\n\t\t\ttx.pure.u64(marketFeePrice),\n\t\t\ttx.pure.address(TRADEPORT_BENEFICIARY_ADDRESS),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tdestroyZeroCoin({ tx, coin });\n}\n\nexport async function addOriginByteCollectionBidTx({\n\ttx,\n\tcollectionId,\n\tnftType,\n\tbidAmount,\n\tsharedObjects,\n\tbidderKiosk,\n\tcoinToSplit,\n}: PlaceCollectionBidTx) {\n\tconst collectionFloorPrice = await getCollectionFloorPrice(collectionId);\n\tif (\n\t\tcollectionFloorPrice &&\n\t\tcollectionFloorPrice > 0 &&\n\t\tNumber(bidAmount) > Number(collectionFloorPrice)\n\t) {\n\t\tthrow new Error('Bid amount must be less than the collection floor price');\n\t}\n\n\tconst { orderbook } = sharedObjects;\n\n\tconst marketFeePrice = getMarketFeePrice({ price: bidAmount, collectionId });\n\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [\n\t\ttx.pure.u64(bidAmount + marketFeePrice),\n\t]);\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::create_bid_with_commission',\n\t\targuments: [\n\t\t\ttx.object(orderbook),\n\t\t\ttx.object(bidderKiosk),\n\t\t\ttx.pure.u64(bidAmount),\n\t\t\ttx.pure.address(TRADEPORT_BENEFICIARY_ADDRESS),\n\t\t\ttx.pure.u64(marketFeePrice),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\tdestroyZeroCoin({ tx, coin });\n}\n\nexport async function addTradePortPlaceCollectionBidTxHandler(txData: PlaceCollectionBidTx) {\n\tif (hasRoyaltyRule(txData?.transferPolicies)) {\n\t\tconst royaltyRuleModule = getRoyaltyRuleModule(txData?.nftType);\n\t\tconst royaltyRulePackageId = await getRulePackageId({\n\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\tsuiClient: txData?.suiClient,\n\t\t\tnftType: txData.nftType,\n\t\t\truleType: getRoyaltyRuleModule(txData?.collectionId),\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t});\n\t\tawait addTradePortKioskCollectionBidTx({ ...txData, royaltyRulePackageId, royaltyRuleModule });\n\t\treturn;\n\t}\n\n\taddTradePortCollectionBidTx(txData);\n}\n","import { type SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftsById } from '../../graphql/queries/fetchNftsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { addTradePortPlaceNftBidTxHandler } from './addPlaceNftBidTxs';\n\nexport type PlaceNftBidTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tbidder: string;\n\tcollectionId: string;\n\tnftTokenId?: string;\n\tnftType: string;\n\tbidAmount: bigint;\n\tmultiBidId?: string;\n\tmultiBidChainId?: any;\n\texpireAt?: Date;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tbcsHex?: string;\n\tcoinToSplit?: any;\n};\n\nexport type PlaceNftBids = {\n\tbids: Array<{\n\t\tnftId: string;\n\t\tbidAmountInMist: number;\n\t\texpireAt?: Date;\n\t}>;\n\twalletAddress: string;\n\tmultiBidId?: string;\n\tmultiBidChainId?: any;\n\ttx?: Transaction;\n\tcoinToSplit?: any;\n};\n\nexport const placeNftBids = async (\n\t{ bids, walletAddress, multiBidId, multiBidChainId, tx: existingTx, coinToSplit }: PlaceNftBids,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst tx = existingTx ?? new Transaction();\n\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftsById,\n\t\tvariables: { nftIds: bids.map((bid) => bid.nftId) },\n\t});\n\n\tif (res?.nfts?.length === 0) {\n\t\tthrow new Error('No nfts found');\n\t}\n\n\tconst nftsForTracking = [];\n\tfor (const bid of bids) {\n\t\tconst nft = res.nfts?.find((nft: any) => nft.id === bid.nftId);\n\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: nft?.collection_id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t});\n\n\t\tconst transferPolicies = nft?.collection?.chain_state?.transfer_policies;\n\n\t\tconst txData: PlaceNftBidTx = {\n\t\t\ttx,\n\t\t\tsuiClient: context.suiClient,\n\t\t\ttransferPolicies,\n\t\t\tbidder: walletAddress,\n\t\t\tcollectionId: nft?.collection_id,\n\t\t\tnftTokenId: nft?.token_id,\n\t\t\tnftType,\n\t\t\tbidAmount: BigInt(bid?.bidAmountInMist ?? 0n),\n\t\t\tbcsHex: nft.chain_state?.bcs?.bcsHex,\n\t\t\tmultiBidId,\n\t\t\tmultiBidChainId,\n\t\t\texpireAt: bid?.expireAt,\n\t\t\tcoinToSplit,\n\t\t};\n\n\t\tawait addTradePortPlaceNftBidTxHandler(txData);\n\n\t\tnftsForTracking.push({\n\t\t\tnftType,\n\t\t\tcollectionId: nft?.collection_id,\n\t\t\tbidAmount: bid?.bidAmountInMist,\n\t\t\tbidder: walletAddress,\n\t\t});\n\t}\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && nftsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'PLACE_NFT_BIDS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\treturn tx;\n};\n","import type { SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchCollectionBidsById } from '../../graphql/queries/fetchCollectionBidById';\nimport { fetchCollectionsByIdWithOneNft } from '../../graphql/queries/fetchCollectionsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport {\n\taddBluemoveRemoveCollectionBidTxHandler,\n\taddClutchyRemoveCollectionBidTxHandler,\n\taddTradePortRemoveCollectionBidTxHandler,\n} from './addRemoveCollectionBidsTxs';\n\nexport type RemoveCollectionBidTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tsharedObjects?: any;\n\tbidNonce: string;\n\tbidder: string;\n\tnftType: string;\n\tnftTokenId: string;\n\tbidAmount: number;\n\tsellerKiosk: string;\n\tbidMarketName: string;\n\tmultiBidId?: string;\n};\n\nexport type RemoveCollectionBids = {\n\tbidIds: string[];\n\ttx?: Transaction | string;\n};\n\nexport const removeCollectionBids = async (\n\t{ bidIds, tx: existingTx }: RemoveCollectionBids,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchCollectionBidsById,\n\t\tvariables: { bidIds },\n\t});\n\n\tif (res?.bids?.length === 0) {\n\t\tthrow new Error('No bids found');\n\t}\n\n\tconst bidsForTracking = [];\n\tconst tx = existingTx ? Transaction.from(existingTx) : new Transaction();\n\n\tfor (const bid of res.bids) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(bid?.nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tconst collectionWithOneNftRes = await gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchCollectionsByIdWithOneNft,\n\t\t\tvariables: { collectionIds: [bid?.collection_id] },\n\t\t});\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: collectionWithOneNftRes?.collections?.[0]?.id,\n\t\t\tcollectionChainState: collectionWithOneNftRes?.collections?.[0]?.chain_state,\n\t\t\tnft: collectionWithOneNftRes?.collections?.[0]?.nfts?.[0],\n\t\t});\n\n\t\tconst txData: RemoveCollectionBidTx = {\n\t\t\ttx,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tbidNonce: bid?.nonce,\n\t\t\tbidder: bid?.bidder,\n\t\t\tnftType,\n\t\t\tnftTokenId: bid?.nft?.token_id,\n\t\t\tbidAmount: bid?.price,\n\t\t\tsellerKiosk: bid?.nft?.chain_state?.kiosk_id,\n\t\t\tbidMarketName: bid?.market_contract?.name,\n\t\t\tmultiBidId: bid?.multi_bid_id,\n\t\t};\n\n\t\tswitch (txData.bidMarketName) {\n\t\t\tcase 'tradeport':\n\t\t\t\tawait addTradePortRemoveCollectionBidTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'bluemove':\n\t\t\t\tawait addBluemoveRemoveCollectionBidTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'clutchy':\n\t\t\t\tawait addClutchyRemoveCollectionBidTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Marketplace not supported');\n\t\t}\n\n\t\tbidsForTracking.push({\n\t\t\tnftType,\n\t\t\tcollectionId: bid?.collection_id,\n\t\t\tbidAmount: bid?.price,\n\t\t\tbidMarketName: bid?.market_contract?.name,\n\t\t\tbidder: bid?.bidder,\n\t\t});\n\t}\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && bidsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'REMOVE_COLLECTION_BID',\n\t// \t\titems: bidsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import { normalizeSuiObjectId } from '@mysten/sui/utils';\nimport {\n\tBLUEMOVE_KIOSK_OFFER_COLLECTION_DATA_OBJECT,\n\tBLUEMOVE_OFFER_COLLECTION_DATA_OBJECT,\n\tTRADEPORT_BIDDING_STORE,\n} from '../../constants';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { isSingleBid } from '../../helpers/isSIngleBid';\nimport { isBluemoveKioskBid } from '../../helpers/kiosk/isBluemoveKioskBid';\nimport { isTradePortKioskBid } from '../../helpers/kiosk/isTradePortKioskBid';\nimport { isOriginByteBid } from '../../helpers/originByte/isOriginByteBid';\nimport { getObjectType } from '../../helpers/rpc/getObjectType';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport {\n\taddSingleBidRemoveNftBidTx,\n\taddTradeportKioskRemoveNftBidTx,\n} from '../removeNftBids/addRemoveNftBidTxs';\nimport { type RemoveCollectionBidTx } from './removeCollectionBids';\n\nexport function addTradeportRemoveCollectionBidTx({\n\ttx,\n\tnftType,\n\tbidNonce,\n}: RemoveCollectionBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::cancel_bid',\n\t\targuments: [tx.object(TRADEPORT_BIDDING_STORE), tx.pure.address(bidNonce)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addTradePortKioskRemoveCollectionBidTx(txData: RemoveCollectionBidTx) {\n\taddTradeportKioskRemoveNftBidTx(txData);\n}\n\nexport function addOriginByteRemoveCollectionBidTx({\n\ttx,\n\tnftType,\n\tbidAmount,\n\tbidder,\n\tsharedObjects,\n}: RemoveCollectionBidTx) {\n\tconst { orderbook } = sharedObjects;\n\n\tconst [coin] = tx.moveCall({\n\t\ttarget: '0x2::coin::zero',\n\t\targuments: [],\n\t\ttypeArguments: ['0x2::sui::SUI'],\n\t});\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::cancel_bid',\n\t\targuments: [tx.object(orderbook), tx.pure.u64(bidAmount), tx.object(coin)],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\ttx.transferObjects([tx.object(coin)], tx.pure.address(addLeadingZerosAfter0x(bidder)));\n}\n\nexport function addBluemoveRemoveCollectionBidTx({ tx, nftType, bidNonce }: RemoveCollectionBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::offer_collection::cancel_offer_collection',\n\t\targuments: [tx.object(BLUEMOVE_OFFER_COLLECTION_DATA_OBJECT), tx.pure.u64(bidNonce)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addBluemoveKioskRemoveCollectionBidTx({\n\ttx,\n\tnftType,\n\tbidNonce,\n}: RemoveCollectionBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xcc97b74ed95c8e8a3ed88050a898727dee37896da579fc400d482b64db6149ff::kiosk_offer_collection_v2::cancel_offer_collection_v2',\n\t\targuments: [tx.object(BLUEMOVE_KIOSK_OFFER_COLLECTION_DATA_OBJECT), tx.pure.u64(bidNonce)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addTradePortRemoveCollectionBidTxHandler(txData: RemoveCollectionBidTx) {\n\tconst bidType = await getObjectType({\n\t\tsuiClient: txData?.suiClient,\n\t\tobjectId: normalizeSuiObjectId(txData?.bidNonce),\n\t});\n\n\tif (isSingleBid(bidType)) {\n\t\tawait addSingleBidRemoveNftBidTx(txData);\n\t\treturn;\n\t}\n\n\tif (isOriginByteBid(bidType)) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\taddOriginByteRemoveCollectionBidTx({ ...txData, sharedObjects });\n\t\treturn;\n\t}\n\n\tif (isTradePortKioskBid(bidType)) {\n\t\taddTradePortKioskRemoveCollectionBidTx(txData);\n\t\treturn;\n\t}\n\n\taddTradeportRemoveCollectionBidTx(txData);\n}\n\nexport async function addBluemoveRemoveCollectionBidTxHandler(txData: RemoveCollectionBidTx) {\n\tconst bidType = await getObjectType({\n\t\tsuiClient: txData?.suiClient,\n\t\tobjectId: normalizeSuiObjectId(txData?.bidNonce),\n\t});\n\n\tif (isOriginByteBid(bidType)) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\taddOriginByteRemoveCollectionBidTx({ ...txData, sharedObjects });\n\t\treturn;\n\t}\n\n\tif (isBluemoveKioskBid(txData?.bidNonce)) {\n\t\taddBluemoveKioskRemoveCollectionBidTx(txData);\n\t\treturn;\n\t}\n\n\taddBluemoveRemoveCollectionBidTx(txData);\n}\n\nexport async function addClutchyRemoveCollectionBidTxHandler(txData: RemoveCollectionBidTx) {\n\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\taddOriginByteRemoveCollectionBidTx({ ...txData, sharedObjects });\n}\n","import type { SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchBidsById } from '../../graphql/queries/fetchBidsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport {\n\taddBluemoveRemoveNftBidTx,\n\taddOriginByteRemoveNftBidTx,\n\taddTocenRemoveNftBidTx,\n\taddTradePortRemoveNftBidTxHandler,\n} from './addRemoveNftBidTxs';\n\nexport type RemoveNftBidTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tsharedObjects?: any;\n\tbidNonce: string;\n\tnftType: string;\n\tnftTokenId: string;\n\tbidAmount: number;\n\tsellerKiosk: string;\n\tbidMarketName: string;\n\tmultiBidId?: string;\n};\n\nexport type RemoveNftBid = {\n\tbidId: string;\n};\n\nexport type RemoveNftBids = {\n\tbidIds: string[];\n\ttx?: Transaction | string;\n};\n\nexport const removeNftBids = async (\n\t{ bidIds, tx: existingTx }: RemoveNftBids,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchBidsById,\n\t\tvariables: { bidIds },\n\t});\n\n\tif (res?.bids?.length === 0) {\n\t\tthrow new Error('No bids found');\n\t}\n\n\tconst bidsForTracking = [];\n\tconst tx = existingTx ? Transaction.from(existingTx) : new Transaction();\n\n\tfor (const bid of res.bids) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(bid?.nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: bid?.collection?.id,\n\t\t\tcollectionChainState: bid?.collection?.chain_state,\n\t\t\tnft: bid?.nft,\n\t\t});\n\n\t\tconst txData: RemoveNftBidTx = {\n\t\t\ttx,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tbidNonce: bid?.nonce,\n\t\t\tnftType,\n\t\t\tnftTokenId: bid?.nft?.token_id,\n\t\t\tbidAmount: bid?.price,\n\t\t\tsellerKiosk: bid?.nft?.chain_state?.kiosk_id,\n\t\t\tbidMarketName: bid?.market_contract?.name,\n\t\t\tmultiBidId: bid?.multi_bid_id,\n\t\t};\n\n\t\tswitch (txData.bidMarketName) {\n\t\t\tcase 'tradeport':\n\t\t\t\tawait addTradePortRemoveNftBidTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'clutchy':\n\t\t\t\taddOriginByteRemoveNftBidTx(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'bluemove':\n\t\t\t\taddBluemoveRemoveNftBidTx(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'tocen':\n\t\t\t\taddTocenRemoveNftBidTx(txData);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Marketplace not supported');\n\t\t}\n\n\t\tbidsForTracking.push({\n\t\t\tnftType,\n\t\t\tcollectionId: bid?.nft?.collection_id,\n\t\t\tbidAmount: bid?.price,\n\t\t\tbidMarketName: bid?.market_contract?.name,\n\t\t\tbidder: bid?.bidder,\n\t\t});\n\t}\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && bidsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'REMOVE_NFT_BIDS',\n\t// \t\titems: bidsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import { Transaction } from '@mysten/sui/transactions';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftCollectionChainState } from '../../graphql/queries/fetchNftCollectionChainState';\nimport { getNftType } from '../../helpers/getNftType';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { addSponsorListingTx } from './addSponsorNftListingTx';\n\nexport type SponsorNftListingOptions = {\n\tshouldSponsor?: boolean;\n\tnumOfPeriods?: number;\n\tusdcFeeAmountPerPeriod?: number;\n\tcoinToSplit?: any;\n};\n\nexport type SponsorNftListing = {\n\ttx?: Transaction;\n\tcoinToSplit?: any;\n\tnftTokenId: string;\n\toptions: SponsorNftListingOptions;\n};\n\nexport const sponsorNftListing = async ({\n\ttx: existingTx,\n\tcoinToSplit,\n\tnftTokenId,\n\toptions,\n}: SponsorNftListing): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftCollectionChainState,\n\t\tvariables: { nftTokenId },\n\t});\n\n\tif (res?.nfts?.length === 0) {\n\t\tthrow new Error(`No nft found with token id ${nftTokenId}`);\n\t}\n\n\tconst nft = res?.nfts?.[0];\n\n\tconst nftType = getNftType({\n\t\tcollectionId: nft?.collection?.id,\n\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\tnft,\n\t});\n\n\tconst transferPolicies = nft?.collection?.chain_state?.transfer_policies;\n\n\tif (isOriginByteCollection(transferPolicies)) {\n\t\tthrow new Error(`You cannot sponsor an Origin Byte NFT. Nft Token Id: ${nftTokenId}`);\n\t}\n\n\tconst tx = existingTx ?? new Transaction();\n\n\tawait addSponsorListingTx({\n\t\ttx,\n\t\tcoinToSplit,\n\t\tnftTokenId,\n\t\tnftType,\n\t\tsponsorOptions: options,\n\t});\n\n\treturn tx;\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchNftCollectionChainState = gql`\n\tquery fetchNftCollectionChainState($nftTokenId: String!) {\n\t\tnfts(where: { token_id: { _eq: $nftTokenId } }) {\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n","import type { KioskClient } from '@mysten/kiosk';\nimport type { SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n\tXOCIETY_FRONTIER_COLLECTION_ID,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftsById } from '../../graphql/queries/fetchNftsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { hasNativeKioskTransferPolicyRules } from '../../helpers/hasTransferPolicyRules';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport { takeAndBorrowNftFromKiosk } from '../../helpers/kiosk/takeAndBorrowNftFromKiosk';\nimport { isOBKiosk } from '../../helpers/originByte/isOBKiosk';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport {\n\taddOriginByteTransferNftTx,\n\taddTradeportKioskDirectTransferTx,\n\taddTradeportKioskTransferTx,\n\tcanBeTransferedDirectly,\n} from './addTransferNftTx';\n\nexport type TransferNftTx = {\n\ttx: Transaction;\n\tkioskClient: KioskClient;\n\tsharedKioskState?: SharedKioskState;\n\tnftType: string;\n\tnftTokenId: string;\n\tsenderKiosk: string;\n\tsenderAddress: string;\n\trecipientAddress: string;\n\ttransferPolicies: any;\n\tkioskTx?: any;\n\ttransferPolicy?: any;\n\tsuiClient: SuiClient;\n};\n\nexport type TransferNfts = {\n\tnftIds: string[];\n\trecipientAddress: string;\n\twalletAddress: string;\n};\n\nexport const transferNfts = async (\n\t{ nftIds, recipientAddress, walletAddress }: TransferNfts,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tif (addLeadingZerosAfter0x(recipientAddress) === addLeadingZerosAfter0x(walletAddress)) {\n\t\tthrow new Error('Cannot transfer to self');\n\t}\n\n\t// Recipient address needs to have a balance to be a valid address\n\tif (!recipientAddress?.includes('0x') || recipientAddress?.length < 65) {\n\t\tthrow new Error('Invalid recipient address');\n\t}\n\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftsById,\n\t\tvariables: { nftIds },\n\t});\n\n\tif (res?.nfts?.length === 0) {\n\t\tthrow new Error('No nfts found');\n\t}\n\n\tconst nftsForTracking = [];\n\tconst nftsToTransferDirectly = [];\n\tconst tx = new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: undefined,\n\t};\n\n\tfor (const nft of res.nfts) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tif (nft?.listed) {\n\t\t\tthrow new Error('Cannot transfer a listed NFT');\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: nft?.collection?.id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t});\n\n\t\tconst transferPolicies = nft?.collection?.chain_state?.transfer_policies;\n\n\t\tconst txData: TransferNftTx = {\n\t\t\ttx,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tsharedKioskState,\n\t\t\tnftType,\n\t\t\tnftTokenId: nft?.token_id,\n\t\t\tsenderKiosk: nft?.chain_state?.kiosk_id,\n\t\t\tsenderAddress: walletAddress,\n\t\t\trecipientAddress,\n\t\t\ttransferPolicies,\n\t\t};\n\n\t\t// If NFT is not inside kiosk, transfer the NFT directly\n\t\tif (!txData.senderKiosk) {\n\t\t\ttx.transferObjects(\n\t\t\t\t[tx.object(txData.nftTokenId)],\n\t\t\t\ttx.pure.address(addLeadingZerosAfter0x(recipientAddress)),\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst isSenderKioskOriginByte = await isOBKiosk(txData.senderAddress, txData.senderKiosk);\n\n\t\t// If NFT is inside ob kiosk\n\t\tif (isSenderKioskOriginByte) {\n\t\t\tawait addOriginByteTransferNftTx(txData);\n\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If NFT is inside native kiosk and has no transfer policy rules or is XOCIETY Frontier collection, take it out of the kiosk and transfer it directly\n\t\tif (\n\t\t\ttxData?.senderKiosk &&\n\t\t\t(!hasNativeKioskTransferPolicyRules(txData?.transferPolicies) ||\n\t\t\t\tnft?.collection?.id === XOCIETY_FRONTIER_COLLECTION_ID)\n\t\t) {\n\t\t\tawait kioskTxWrapper({\n\t\t\t\ttx: txData?.tx,\n\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\tkioskOwner: txData?.senderAddress,\n\t\t\t\tkiosk: txData?.senderKiosk,\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\t\tshouldUseSharedKioskTx: false,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tconst borrowedItem = await takeAndBorrowNftFromKiosk({\n\t\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\t\tnftTokenId: txData?.nftTokenId,\n\t\t\t\t\t\tnftType: txData?.nftType,\n\t\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\t\tkioskOwner: txData?.senderAddress,\n\t\t\t\t\t});\n\n\t\t\t\t\ttx.transferObjects(\n\t\t\t\t\t\t[tx.object(borrowedItem)],\n\t\t\t\t\t\ttx.pure.address(addLeadingZerosAfter0x(recipientAddress)),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If NFT can be transferred directly by creating new kiosk for receiver\n\t\tif (await canBeTransferedDirectly(context.suiClient, nft?.collection?.chain_state)) {\n\t\t\tnftsToTransferDirectly.push(nft);\n\t\t} else {\n\t\t\tawait kioskTxWrapper({\n\t\t\t\ttx: txData?.tx,\n\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\tkioskOwner: txData?.senderAddress,\n\t\t\t\tkiosk: txData?.senderKiosk,\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\t\tshouldUseSharedKioskTx: false,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tawait addTradeportKioskTransferTx({ ...txData, kioskTx });\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tnftsForTracking.push({\n\t\t\tnftType,\n\t\t\tsenderAddress: walletAddress,\n\t\t\trecipientAddress,\n\t\t});\n\t}\n\n\tawait addTradeportKioskDirectTransferTx(\n\t\t{\n\t\t\ttx,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tsharedKioskState,\n\t\t\tsenderAddress: walletAddress,\n\t\t\trecipientAddress,\n\t\t},\n\t\tnftsToTransferDirectly,\n\t\tcontext.suiClient,\n\t);\n\n\t// currently turned off $1 bulk transfer fee\n\t// if (res?.nfts?.length > 1) {\n\t// \tawait addOneDollarFee(tx);\n\t// }\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && nftsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'TRANSFER_NFTS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import type { KioskClient } from '@mysten/kiosk';\nimport type { SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchListingsById } from '../../graphql/queries/fetchListingsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport {\n\taddBluemoveUnlistTxHandler,\n\taddClutchyUnlistTxHandler,\n\taddHyperspaceUnlistTxHandler,\n\taddKeepsakeUnlistTxHandler,\n\taddSomisUnlistTxHandler,\n\taddSouffl3UnlistTxHandler,\n\taddTocenUnlistTxHandler,\n\taddTradePortUnlistTxHandler,\n} from './addUnlistListingTxs';\nimport { normalizeSuiAddress } from '@mysten/sui/utils';\n\nexport type UnlistListingTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tsharedKioskState?: SharedKioskState;\n\tkioskTx?: any;\n\tseller: string;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tcollectionId: string;\n\tnftTokenId: string;\n\tnftType: string;\n\tlistingNonce: string;\n\tprice: number;\n\tsellerKiosk: string;\n\tisPartOfRelist?: boolean;\n};\n\nexport type UnlistListing = {\n\tlistingId: string;\n\twalletAddress: string;\n};\n\nexport type UnlistListings = {\n\tlistingIds: string[];\n\twalletAddress: string;\n};\n\nexport const unlistListings = async (\n\t{ listingIds, walletAddress }: UnlistListings,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchListingsById,\n\t\tvariables: { listingIds },\n\t});\n\n\tif (res?.listings?.length === 0) {\n\t\tthrow new Error('No listings found');\n\t}\n\n\tconst listingsForTracking = [];\n\tconst tx = new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: undefined,\n\t};\n\n\tfor (const listing of res.listings) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(listing?.nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\t// Allow the owner to unlist expired listing\n\t\tif (!listing?.listed && !listing?.nonce) {\n\t\t\tthrow new Error(`Listing ${listing?.id} is not listed`);\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: listing?.collection?.id,\n\t\t\tcollectionChainState: listing?.collection?.chain_state,\n\t\t\tnft: listing?.nft,\n\t\t});\n\n\t\tconst transferPolicies = listing?.collection?.chain_state?.transfer_policies;\n\n\t\tconst txData: UnlistListingTx = {\n\t\t\ttx,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tsharedKioskState,\n\t\t\ttransferPolicies,\n\t\t\tnftTokenId: listing.nft?.token_id,\n\t\t\tnftType,\n\t\t\tlistingNonce: listing?.nonce,\n\t\t\tprice: listing?.price,\n\t\t\tsellerKiosk: listing.nft?.chain_state?.kiosk_id,\n\t\t\tcollectionId: listing?.nft?.collection_id,\n\t\t\tseller: walletAddress,\n\t\t};\n\n\t\tswitch (listing?.market_name) {\n\t\t\tcase 'tradeport':\n\t\t\t\tawait addTradePortUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'hyperspace':\n\t\t\t\tawait addHyperspaceUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'bluemove':\n\t\t\t\tawait addBluemoveUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'clutchy':\n\t\t\t\tawait addClutchyUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'souffl3':\n\t\t\t\tawait addSouffl3UnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'somis':\n\t\t\t\tawait addSomisUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'keepsake':\n\t\t\t\tawait addKeepsakeUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'tocen':\n\t\t\t\taddTocenUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Marketplace not supported');\n\t\t}\n\n\t\tlistingsForTracking.push({\n\t\t\twalletAddress,\n\t\t\tnftType,\n\t\t\tcollectionId: listing?.nft?.collection_id,\n\t\t\tprice: listing?.price,\n\t\t\tseller: listing?.seller,\n\t\t\tmarketName: listing?.market_name,\n\t\t});\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && listingsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'UNLIST_LISTINGS',\n\t// \t\titems: listingsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import { KioskTransaction } from '@mysten/kiosk';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchOwnerCapByKiosk } from '../../graphql/queries/fetchOwnerCapByKiosk';\nimport { fetchPersonalCapByKiosk } from '../../graphql/queries/fetchPersonalCapByKiosk';\nimport { fetchWalletKiosks } from '../../graphql/queries/fetchWalletKiosks';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\n\nexport type WithdrawProfitsFromKiosks = {\n\twalletAddress: string;\n};\n\nexport async function withdrawProfitsFromKiosks(\n\t{ walletAddress }: WithdrawProfitsFromKiosks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchWalletKiosks,\n\t\tvariables: {\n\t\t\twallet: addLeadingZerosAfter0x(walletAddress),\n\t\t},\n\t});\n\n\tconst kiosks = res?.kiosks?.filter((kiosk: any) => !kiosk?.is_origin_byte);\n\n\tif (kiosks.length === 0) {\n\t\tthrow new Error(`No kiosks found for ${walletAddress}`);\n\t}\n\n\tlet kiosksWithProfit = kiosks.filter((kiosk: any) => kiosk.profits > 0);\n\n\tif (walletAddress === '0xcb0d10a55b0edd4d5b4748e484195a7a4b1dc10f0870d14fa850c66272796ece') {\n\t\tkiosksWithProfit = kiosksWithProfit.slice(0, 10);\n\t}\n\n\tif (kiosksWithProfit.length === 0) {\n\t\tthrow new Error(`No kiosks with profit to withdraw found for ${walletAddress}`);\n\t}\n\n\tconst tx = new Transaction();\n\n\ttry {\n\t\tfor (const kiosk of kiosksWithProfit) {\n\t\t\tlet kioskTx: KioskTransaction;\n\n\t\t\tif (kiosk.is_personal) {\n\t\t\t\tconst personalKioskCapId = (\n\t\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\t\tchain: 'sui',\n\t\t\t\t\t\tquery: fetchPersonalCapByKiosk,\n\t\t\t\t\t\tvariables: { kioskId: kiosk.id },\n\t\t\t\t\t})\n\t\t\t\t).personalCap?.id;\n\n\t\t\t\tkioskTx = new KioskTransaction({\n\t\t\t\t\ttransactionBlock: tx as any,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tcap: {\n\t\t\t\t\t\tisPersonal: true,\n\t\t\t\t\t\tobjectId: personalKioskCapId,\n\t\t\t\t\t\tkioskId: kiosk.id,\n\t\t\t\t\t\tdigest: '',\n\t\t\t\t\t\tversion: '',\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else if (kiosks.length > 0) {\n\t\t\t\tconst kioskCapId = (\n\t\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\t\tchain: 'sui',\n\t\t\t\t\t\tquery: fetchOwnerCapByKiosk,\n\t\t\t\t\t\tvariables: { kioskId: kiosk.id },\n\t\t\t\t\t})\n\t\t\t\t).ownerCap?.id;\n\n\t\t\t\tkioskTx = new KioskTransaction({\n\t\t\t\t\ttransactionBlock: tx as any,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tcap: {\n\t\t\t\t\t\tisPersonal: false,\n\t\t\t\t\t\tobjectId: kioskCapId,\n\t\t\t\t\t\tkioskId: kiosk.id,\n\t\t\t\t\t\tdigest: '',\n\t\t\t\t\t\tversion: '',\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tkioskTx.convertToPersonal(true);\n\t\t\t}\n\n\t\t\tkioskTx.withdraw(addLeadingZerosAfter0x(walletAddress));\n\t\t\tkioskTx.finalize();\n\t\t}\n\t} catch (err) {\n\t\tconsole.log('err', err);\n\t}\n\n\treturn Transaction.from(tx);\n}\n"],"mappings":"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A,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAA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","names":["gql","gql","Transaction","gql","gql","normalizeSuiObjectId","gql","rule","gql","gql","getNormalizedRuleType","policy","getNormalizedRuleType","gql","normalizeSuiObjectId","gql","normalizeSuiObjectId","sharedObjects","normalizeSuiObjectId","sharedObjects","Transaction","Transaction","gql","ERROR_UNLIST_FIRST","Transaction","Transaction","gql","Transaction","Transaction","gql","Transaction","Transaction","gql","bcs","Transaction","Transaction","bcs","bcs","gql","normalizeSuiObjectId","bcs","sharedObjects","normalizeSuiObjectId","Transaction","Transaction","normalizeSuiObjectId","normalizeSuiObjectId","Transaction","Transaction","gql","Transaction","Transaction","Transaction","Transaction","Transaction","Transaction","Transaction","Transaction","Transaction","Transaction","gql","gql","Transaction","res","Transaction","gql","normalizeSuiObjectId","bcs","normalizeSuiObjectId","gql","Transaction","Transaction","Transaction","nft","Transaction","normalizeSuiObjectId","normalizeSuiObjectId","Transaction","Transaction","Transaction","Transaction","gql","Transaction","Transaction","Transaction","Transaction","Transaction","KioskTransaction","Transaction","Transaction","KioskTransaction","tx"]}
|
|
1
|
+
{"version":3,"sources":["../src/SuiTradingClient.ts","../src/apiClients/createKioskClient.ts","../src/apiClients/createSuiClient.ts","../src/apiClients/graphqlClient.ts","../src/graphql/createChainGQLQuery.ts","../src/graphql/gqlChainRequest.ts","../src/graphql/queries/fetchCollectionBidById.ts","../src/graphql/queries/fetchCollectionBidsAtSamePrice.ts","../src/methods/acceptCollectionBid/acceptCollectionBid.ts","../src/constants.ts","../src/graphql/queries/fetchNftsById.ts","../src/helpers/getNftType.ts","../src/graphql/queries/fetchSharedObjectsByType.ts","../src/utils/addLeadingZerosAfter0x.ts","../src/helpers/getSharedObjects.ts","../src/methods/acceptCollectionBid/addAcceptCollectionBIdTxs.ts","../src/utils/normalizeNftType.ts","../src/helpers/getRoyaltyRuleModule.ts","../src/helpers/kiosk/getNativeKioskTransferPolicies.ts","../src/helpers/hasPersonalKioskRule.ts","../src/helpers/hasTransferPolicyRules.ts","../src/helpers/isSIngleBid.ts","../src/graphql/queries/fetchKiosksByOwner.ts","../src/helpers/kiosk/assertNftInSharedKiosk.ts","../src/helpers/kiosk/getRulePackageId.ts","../src/utils/addHexPrefix.ts","../src/helpers/getTransferPolicyRuleNamesFromSuiObject.ts","../src/helpers/kiosk/isBluemoveKioskBid.ts","../src/helpers/kiosk/isTradePortKioskBid.ts","../src/helpers/kiosk/kioskTxWrapper.ts","../src/graphql/queries/fetchOwnerCapByKiosk.ts","../src/graphql/queries/fetchPersonalCapByKiosk.ts","../src/helpers/kiosk/getKioskIdFromKioskTx.ts","../src/helpers/kiosk/getTransferPoliciesToResolve.ts","../src/helpers/kiosk/resolveFloorPriceRule.ts","../src/helpers/kiosk/resolveKioskLockRule.ts","../src/helpers/kiosk/resolvePersonalKioskRule.ts","../src/helpers/kiosk/getKioskCollectionRoyaltyFeeAmount.ts","../src/helpers/kiosk/resolveRoyaltyRule.ts","../src/helpers/kiosk/resolveTableAllowlistRule.ts","../src/helpers/kiosk/resolveCustomTransferPolicyRules.ts","../src/helpers/kiosk/resolveTransferPolicies.ts","../src/helpers/kiosk/takeLockedNftFromKiosk.ts","../src/helpers/kiosk/takeAndBorrowNftFromKiosk.ts","../src/helpers/originByte/confirmOBTranfer.ts","../src/helpers/originByte/depositNftIntoOBKiosk.ts","../src/helpers/originByte/createOBKiosk.ts","../src/graphql/queries/fetchWalletKiosks.ts","../src/helpers/originByte/getOBKiosk.ts","../src/helpers/originByte/getOrCreateOBKiosk.ts","../src/helpers/originByte/isOriginByteBid.ts","../src/helpers/originByte/isOriginByteCollection.ts","../src/helpers/originByte/shareOriginByteKiosk.ts","../src/helpers/rpc/getObjectType.ts","../src/methods/acceptNftBids/addAcceptNftBidTxs.ts","../src/graphql/queries/fetchMultibidById.ts","../src/helpers/kiosk/lockNftInsideKioskIfNotLocked.ts","../src/helpers/originByte/getOBBidderKiosk.ts","../src/helpers/isNonKioskListing.ts","../src/methods/unlistListings/addUnlistListingTxs.ts","../src/methods/acceptNftBids/acceptNftBids.ts","../src/graphql/queries/fetchBidsById.ts","../src/methods/applyFtStrategy/applyFtStrategy.ts","../src/graphql/queries/fetchCollectionChainState.ts","../src/helpers/getCollectionChainState.ts","../src/methods/buyListings/buyListings.ts","../src/graphql/queries/fetchListingsById.ts","../src/helpers/addThirdPartyTxFee.ts","../src/helpers/deserializeOrCreateTxBlock.ts","../src/helpers/extractSwapResultCoin.ts","../src/helpers/kiosk/preProcessSharedBulkBuyingData.ts","../src/methods/buyListings/addBuyListingTxs.ts","../src/graphql/queries/fetchCommissionByListingId.ts","../src/graphql/queries/getCommissionByListingId.ts","../src/helpers/destroyZeroCoin.ts","../src/helpers/getMarketFeePrice.ts","../src/bigNumberConfig.ts","../src/helpers/calculateRoyaltyFee.ts","../src/methods/cancelMultiBid/cancelMultiBid.ts","../src/methods/removeNftBids/addRemoveNftBidTxs.ts","../src/methods/cancelNftTransfers/cancelNftTransfers.ts","../src/graphql/queries/fetchAccountKiosks.ts","../src/helpers/originByte/isOBKiosk.ts","../src/methods/cancelNftTransfers/addCancelNftTransfersTx.ts","../src/methods/claimNfts/claimNfts.ts","../src/helpers/splitCoins.ts","../src/methods/claimNfts/addClaimNftsTxs.ts","../src/methods/updateMultiBid/updateMultiBid.ts","../src/methods/createMultiBid/createMultiBid.ts","../src/methods/listNfts/listNfts.ts","../src/helpers/validateMinFloorPrice.ts","../src/methods/listNfts/addListTxs.ts","../src/methods/listNfts/addRelistTxs.ts","../src/methods/relistNft/relistNft.ts","../src/methods/swapCoins/swapCoins.ts","../src/utils/pureValues.ts","../src/methods/sponsorNftListing/addSponsorNftListingTx.ts","../src/helpers/isExpiredListing.ts","../src/methods/migrateNftsFromUnsharedToSharedKiosks/migrateNftsFromUnsharedToSharedKiosks.ts","../src/graphql/queries/fetchNftsByKioskId.ts","../src/graphql/queries/fetchTransferPoliciesByType.ts","../src/helpers/kiosk/getNativeKioskTransferPoliciesByNftType.ts","../src/methods/transferNfts/addTransferNftTx.ts","../src/methods/placeCollectionBids/placeCollectionBids.ts","../src/graphql/queries/fetchCollectionsById.ts","../src/methods/placeNftBids/addPlaceNftBidTxs.ts","../src/graphql/queries/fetchCollectionFloorListings.ts","../src/helpers/getCollectionFloorPrice.ts","../src/methods/placeCollectionBids/addPlaceCollectionBidTxs.ts","../src/methods/placeNftBids/placeNftBids.ts","../src/methods/removeCollectionBids/removeCollectionBids.ts","../src/methods/removeCollectionBids/addRemoveCollectionBidsTxs.ts","../src/methods/removeNftBids/removeNftBids.ts","../src/methods/transferNfts/transferNfts.ts","../src/methods/unlistListings/unlistListings.ts","../src/methods/withdrawProfitsFromKiosks/withdrawProfitsFromKiosks.ts","../src/methods/sponsorNftListing/sponsorNftListing.ts","../src/graphql/queries/fetchNftCollectionChainState.ts","../src/methods/applyNftStrategy/applyNftStrategy.ts","../src/graphql/queries/fetchCollectionFloorListingForMarket.ts"],"sourcesContent":["import { getFullnodeUrl } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { GraphQLClient } from 'graphql-request';\nimport createKioskClient from './apiClients/createKioskClient';\nimport createSuiClient from './apiClients/createSuiClient';\nimport { getGraphqlClient, setGraphqlClient } from './apiClients/graphqlClient';\nimport { gqlChainRequest } from './graphql/gqlChainRequest';\nimport { fetchCollectionBidsById } from './graphql/queries/fetchCollectionBidById';\nimport { fetchCollectionBidsAtSamePrice } from './graphql/queries/fetchCollectionBidsAtSamePrice';\nimport {\n\tacceptCollectionBid,\n\ttype AcceptCollectionBid,\n} from './methods/acceptCollectionBid/acceptCollectionBid';\nimport { acceptNftBids, type AcceptNftBids } from './methods/acceptNftBids/acceptNftBids';\nimport { applyFtStrategy, type ApplyFtStrategy } from './methods/applyFtStrategy/applyFtStrategy';\nimport { buyListings, type BuyListings } from './methods/buyListings/buyListings';\nimport { cancelMultiBid, type CancelMultiBid } from './methods/cancelMultiBid/cancelMultiBid';\nimport {\n\tcancelNftTransfers,\n\ttype CancelNftTransfers,\n} from './methods/cancelNftTransfers/cancelNftTransfers';\nimport { claimNfts, type ClaimNfts } from './methods/claimNfts/claimNfts';\nimport { createMultiBid, type CreateMultiBid } from './methods/createMultiBid/createMultiBid';\nimport { listNfts, type ListNfts } from './methods/listNfts/listNfts';\nimport {\n\tmigrateNftsFromUnsharedToSharedKiosks,\n\ttype MigrateNftsFromUnsharedToSharedKiosks,\n} from './methods/migrateNftsFromUnsharedToSharedKiosks/migrateNftsFromUnsharedToSharedKiosks';\nimport {\n\tplaceCollectionBids,\n\ttype PlaceCollectionBid,\n} from './methods/placeCollectionBids/placeCollectionBids';\nimport { placeNftBids, type PlaceNftBids } from './methods/placeNftBids/placeNftBids';\nimport {\n\tremoveCollectionBids,\n\ttype RemoveCollectionBids,\n} from './methods/removeCollectionBids/removeCollectionBids';\nimport { removeNftBids, type RemoveNftBids } from './methods/removeNftBids/removeNftBids';\nimport { transferNfts, type TransferNfts } from './methods/transferNfts/transferNfts';\nimport { unlistListings, type UnlistListings } from './methods/unlistListings/unlistListings';\nimport { updateMultiBid, type UpdateMultiBid } from './methods/updateMultiBid/updateMultiBid';\nimport {\n\twithdrawProfitsFromKiosks,\n\ttype WithdrawProfitsFromKiosks,\n} from './methods/withdrawProfitsFromKiosks/withdrawProfitsFromKiosks';\nimport { addLeadingZerosAfter0x } from './utils/addLeadingZerosAfter0x';\nimport {\n\ttype SponsorNftListing,\n\tsponsorNftListing,\n} from './methods/sponsorNftListing/sponsorNftListing';\nimport {\n\ttype ApplyNftStrategy,\n\tapplyTradeportNftStrategy,\n} from './methods/applyNftStrategy/applyNftStrategy';\nimport {\n\tbuildSwapRoutes,\n\tcalculateAmountToSwap,\n\ttype SwapCoins,\n\tswapCoins,\n\ttype SwapRoutesArgs,\n} from './methods/swapCoins/swapCoins';\nimport { type Coin, type GetRoutesResult } from '@flowx-finance/sdk';\n\ntype ApiConfig = {\n\tapiUser: string;\n\tapiKey: string;\n\tapiUrl?: string;\n\tdefiRouterUrl?: string;\n\tapiVercelId?: string;\n\tsuiNodeUrl?: string;\n\tgraphQLClient?: GraphQLClient;\n};\nexport interface RequestContext {\n\tapiUser: string;\n\tapiKey: string;\n\tdefiRouterUrl?: string;\n\tsuiClient: ReturnType<typeof createSuiClient>;\n\tkioskClient: ReturnType<typeof createKioskClient>;\n}\n\nclass SuiTradingClient {\n\tprivate readonly apiUser: string;\n\tprivate readonly apiKey: string;\n\tprivate readonly defiRouterUrl: string;\n\tprivate readonly suiClient: ReturnType<typeof createSuiClient>;\n\tprivate readonly kioskClient: ReturnType<typeof createKioskClient>;\n\tprivate readonly allowedApiUsersForUnsharedKiosksMigration = ['tradeport.xyz', 'mercato.xyz'];\n\n\tconstructor({\n\t\tapiUser,\n\t\tapiKey,\n\t\tapiVercelId,\n\t\tapiUrl,\n\t\tdefiRouterUrl,\n\t\tsuiNodeUrl,\n\t\tgraphQLClient,\n\t}: ApiConfig) {\n\t\tthis.apiUser = apiUser;\n\t\tthis.apiKey = apiKey;\n\t\tthis.defiRouterUrl = defiRouterUrl ?? 'https://api.indexer.xyz/router';\n\t\tthis.suiClient = createSuiClient(suiNodeUrl ?? getFullnodeUrl('mainnet'));\n\t\tthis.kioskClient = createKioskClient(this.suiClient);\n\n\t\tif (graphQLClient) {\n\t\t\tsetGraphqlClient(graphQLClient);\n\t\t} else {\n\t\t\tsetGraphqlClient(new GraphQLClient(apiUrl ?? 'https://graphql.tradeport.gg'));\n\t\t}\n\n\t\tgetGraphqlClient().setHeaders({\n\t\t\t'x-api-user': apiUser,\n\t\t\t'x-api-key': apiKey,\n\t\t\t...(apiVercelId && { 'x-vercel-id': apiVercelId }),\n\t\t});\n\n\t\t// trackMethodCall({ apiUser, apiKey, event: 'INITIALIZE_CLIENT' });\n\t}\n\n\tpublic async buyListings({ listingIds, walletAddress, tx }: BuyListings): Promise<Transaction> {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn buyListings({ listingIds, walletAddress, tx }, context);\n\t}\n\n\tpublic async listNfts({ nfts, walletAddress }: ListNfts) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn listNfts({ nfts, walletAddress }, context);\n\t}\n\n\tpublic async unlistListings({ listingIds, walletAddress }: UnlistListings) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn unlistListings({ listingIds, walletAddress }, context);\n\t}\n\n\tpublic async placeNftBids(data: PlaceNftBids) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn placeNftBids(data, context);\n\t}\n\n\tpublic async removeNftBids({ bidIds, tx }: RemoveNftBids) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tapiKey: this.apiKey,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn removeNftBids({ bidIds, tx }, context);\n\t}\n\n\tpublic async acceptNftBids({ bidIds, walletAddress }: AcceptNftBids) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn acceptNftBids({ bidIds, walletAddress }, context);\n\t}\n\n\tpublic async placeCollectionBid({\n\t\tcollectionId,\n\t\tbidAmountInMist,\n\t\tnumOfBids,\n\t\twalletAddress,\n\t\tmultiBidId,\n\t\tmultiBidChainId,\n\t\texpireAt,\n\t\ttx,\n\t}: PlaceCollectionBid): Promise<Transaction> {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn placeCollectionBids(\n\t\t\t{\n\t\t\t\tcollections: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: collectionId,\n\t\t\t\t\t\tbidAmountInMist,\n\t\t\t\t\t\tnumOfBids,\n\t\t\t\t\t\texpireAt,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\twalletAddress,\n\t\t\t\tmultiBidId,\n\t\t\t\tmultiBidChainId,\n\t\t\t\ttx,\n\t\t\t},\n\t\t\tcontext,\n\t\t);\n\t}\n\n\tpublic async acceptCollectionBid({ bidId, nftId, walletAddress }: AcceptCollectionBid) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\tconst collectionBidRes = await gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchCollectionBidsById,\n\t\t\tvariables: { bidIds: [bidId] },\n\t\t});\n\t\tconst bid = collectionBidRes?.bids?.[0];\n\n\t\tif (!bid) {\n\t\t\tthrow new Error('No bid found');\n\t\t}\n\n\t\tif (addLeadingZerosAfter0x(bid?.bidder) === addLeadingZerosAfter0x(walletAddress)) {\n\t\t\tthrow new Error('Wallet cannot accept its own bid');\n\t\t}\n\n\t\tif (bid?.status !== 'active') {\n\t\t\tthrow new Error('Bid not active');\n\t\t}\n\n\t\tif (bid?.type !== 'collection') {\n\t\t\tthrow new Error('Bid is not a collection bid. Use acceptNftBid() instead.');\n\t\t}\n\n\t\tconst allBidsWithSameHighestPriceRes = await gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchCollectionBidsAtSamePrice,\n\t\t\tvariables: {\n\t\t\t\tcollectionId: bid?.collection_id,\n\t\t\t\tprice: bid?.price,\n\t\t\t},\n\t\t});\n\t\tconst allBidsWithSameHighestPrice = allBidsWithSameHighestPriceRes?.bids;\n\n\t\t// loop through all highest bids at same price until one succeeds\n\t\tfor (let i = 0; i < (allBidsWithSameHighestPrice?.length ?? 0); i++) {\n\t\t\tconst tx = await acceptCollectionBid(\n\t\t\t\t{\n\t\t\t\t\tbid: allBidsWithSameHighestPrice?.[i],\n\t\t\t\t\tnftId,\n\t\t\t\t\twalletAddress,\n\t\t\t\t},\n\t\t\t\tcontext,\n\t\t\t);\n\n\t\t\tlet result = await this.suiClient.devInspectTransactionBlock({\n\t\t\t\ttransactionBlock: tx,\n\t\t\t\tsender: addLeadingZerosAfter0x(walletAddress),\n\t\t\t});\n\n\t\t\tif (result.effects.status.status === 'success') {\n\t\t\t\treturn tx;\n\t\t\t}\n\n\t\t\tif (i === allBidsWithSameHighestPrice.length - 1) {\n\t\t\t\t// next loop through all the same bids and try with splitting royalty from user gas coins in case royalty has changed and the amount in escrow is not ennough\n\t\t\t\tfor (let j = 0; j < allBidsWithSameHighestPrice?.length; j++) {\n\t\t\t\t\tconst tx = await acceptCollectionBid(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbid: allBidsWithSameHighestPrice?.[j],\n\t\t\t\t\t\t\tnftId,\n\t\t\t\t\t\t\twalletAddress,\n\t\t\t\t\t\t\tshouldSplitRoyaltyFromUserGasCoins: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t);\n\n\t\t\t\t\tresult = await this.suiClient.devInspectTransactionBlock({\n\t\t\t\t\t\ttransactionBlock: tx,\n\t\t\t\t\t\tsender: addLeadingZerosAfter0x(walletAddress),\n\t\t\t\t\t});\n\n\t\t\t\t\tif (result?.effects.status.status === 'success') {\n\t\t\t\t\t\treturn tx;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Failed to validate accept bid transaction: ${result?.error ?? result?.effects?.status?.error ?? 'Unknown error'}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async removeCollectionBids({ bidIds, tx }: RemoveCollectionBids) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn removeCollectionBids({ bidIds, tx }, context);\n\t}\n\n\tpublic async transferNfts({ nftIds, recipientAddress, walletAddress }: TransferNfts) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn transferNfts({ nftIds, recipientAddress, walletAddress }, context);\n\t}\n\n\tpublic async cancelNftTransfers({ nftIds, walletAddress }: CancelNftTransfers) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\ttry {\n\t\t\treturn await cancelNftTransfers({ nftIds, walletAddress }, context);\n\t\t} catch (err) {\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot cancel NFT transfer unless the NFT was transferred using kiosk_transfers::transfer_with_purchase_capability',\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic async claimNfts({ nftIds, walletAddress }: ClaimNfts) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\ttry {\n\t\t\tconst tx = await claimNfts({ nftIds, walletAddress }, context, true);\n\n\t\t\ttx.setSenderIfNotSet(addLeadingZerosAfter0x(walletAddress));\n\t\t\tconst rawTransaction = await tx.build({ client: this.suiClient });\n\t\t\tawait this.suiClient.dryRunTransactionBlock({\n\t\t\t\ttransactionBlock: rawTransaction,\n\t\t\t});\n\t\t\treturn tx;\n\t\t} catch (err) {\n\t\t\treturn claimNfts({ nftIds, walletAddress }, context);\n\t\t}\n\t}\n\n\tpublic async withdrawProfitsFromKiosks(args: WithdrawProfitsFromKiosks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn withdrawProfitsFromKiosks(args, context);\n\t}\n\n\tpublic async migrateNftsFromUnsharedToSharedKiosks(args: MigrateNftsFromUnsharedToSharedKiosks) {\n\t\tif (!this.allowedApiUsersForUnsharedKiosksMigration.includes(this.apiUser)) {\n\t\t\tthrow new Error('This method is not available for your API user.');\n\t\t}\n\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn migrateNftsFromUnsharedToSharedKiosks(args, context);\n\t}\n\n\tpublic async createMultiBid(args: CreateMultiBid) {\n\t\treturn createMultiBid(args);\n\t}\n\n\tpublic async cancelMultiBid(args: CancelMultiBid) {\n\t\treturn cancelMultiBid(args);\n\t}\n\n\tpublic async updateMultiBid(args: UpdateMultiBid) {\n\t\treturn updateMultiBid(args);\n\t}\n\n\tpublic async sponsorNftListing(args: SponsorNftListing) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\n\t\t\tapiKey: this.apiKey,\n\t\t\tdefiRouterUrl: this.defiRouterUrl,\n\t\t\tsuiClient: this.suiClient,\n\t\t\tkioskClient: this.kioskClient,\n\t\t};\n\n\t\treturn sponsorNftListing(args, context);\n\t}\n\n\tpublic async applyFtStrategy(args: ApplyFtStrategy) {\n\t\treturn applyFtStrategy(args);\n\t}\n\n\tpublic async applyTradeportNftStrategy(args: ApplyNftStrategy) {\n\t\treturn applyTradeportNftStrategy(args);\n\t}\n\n\tpublic async swapCoins(args: SwapCoins) {\n\t\treturn swapCoins(args, { suiClient: this.suiClient, defiRouterUrl: this.defiRouterUrl });\n\t}\n\n\tpublic async buildSwapRoutes(args: SwapRoutesArgs): Promise<GetRoutesResult<Coin, Coin>> {\n\t\treturn buildSwapRoutes(args, { defiRouterUrl: this.defiRouterUrl });\n\t}\n\n\tpublic async calculateAmountToSwap(\n\t\targs: Pick<SwapCoins, 'coinInType' | 'coinOutType' | 'coinInAmount'>,\n\t): Promise<bigint> {\n\t\treturn calculateAmountToSwap(args);\n\t}\n}\n\nexport default SuiTradingClient;\n","import { KioskClient, Network } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\n\nconst createKioskClient = (suiClient: SuiClient) =>\n\tnew KioskClient({\n\t\t// @ts-ignore\n\t\tclient: suiClient,\n\t\tnetwork: Network.MAINNET,\n\t});\n\nexport default createKioskClient;\n","import { SuiClient } from '@mysten/sui/client';\n\nconst createSuiClient = (url: string) => new SuiClient({ url });\n\nexport default createSuiClient;\n","import type { GraphQLClient } from 'graphql-request';\n\nlet graphqlClient: GraphQLClient;\n\nexport const getGraphqlClient = () => {\n\tif (!graphqlClient) {\n\t\tthrow new Error(\n\t\t\t'GraphQL client not initialized. Please provide apiUrl to SuiTradingClient constructor.',\n\t\t);\n\t}\n\n\treturn graphqlClient;\n};\n\nexport function setGraphqlClient(client: GraphQLClient) {\n\tgraphqlClient = client;\n}\n","import { gql } from 'graphql-request';\n\ntype ChainQuery = {\n\tchain: string;\n\tquery: string;\n};\n\nexport function createChainGQLQuery({ chain, query }: ChainQuery) {\n\tconst regex = /query\\s+(\\w+)\\s*\\(([\\s\\S]*?)\\)\\s*((?:@\\w+(?:\\([^)]*\\))?\\s*)*){([\\s\\S]*)}/;\n\tconst matches = regex.exec(query);\n\n\tif (!matches || matches.length !== 5) {\n\t\tthrow new Error('Invalid query string format');\n\t}\n\n\tconst [, queryName, argsString, directivesString, bodyString] = matches;\n\n\tif (!argsString || !bodyString) return '';\n\n\tconst args = argsString.trim().length ? `(${argsString.trim()})` : '';\n\tconst directives = directivesString.trim();\n\tconst directivesPart = directives.length ? ` ${directives}` : '';\n\tconst body = bodyString.trim();\n\tconst wrappedBody = `${chain} {\\n${body}\\n}`;\n\n\treturn gql`query ${queryName}${args}${directivesPart} {\\n${wrappedBody}\\n}`;\n}\n","import { getGraphqlClient } from '../apiClients/graphqlClient';\nimport { createChainGQLQuery } from './createChainGQLQuery';\n\ntype Args = {\n\tchain: string;\n\tquery: string;\n\tvariables?: any;\n};\n\nexport const gqlChainRequest = async ({ chain, query, variables }: Args) => {\n\tif (!chain || !query) {\n\t\tthrow new Error('Missing required arguments');\n\t}\n\n\tconst response = await getGraphqlClient().request<any>(\n\t\tcreateChainGQLQuery({ chain, query }),\n\t\tvariables,\n\t);\n\n\treturn response?.[chain];\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchCollectionBidsById = gql`\n\tquery fetchCollectionBidsById($bidIds: [uuid!]) {\n\t\tbids(where: { id: { _in: $bidIds } }) {\n\t\t\tnonce\n\t\t\tprice\n\t\t\tbidder\n\t\t\tstatus\n\t\t\ttype\n\t\t\tcollection_id\n\t\t\tmulti_bid_id\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tmarket_contract {\n\t\t\t\tname\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { gql } from 'graphql-request';\n\nexport const fetchCollectionBidsAtSamePrice = gql`\n\tquery fetchCollectionBidsAtSamePrice($collectionId: uuid!, $price: numeric) {\n\t\tbids(\n\t\t\twhere: {\n\t\t\t\tcollection_id: { _eq: $collectionId }\n\t\t\t\tprice: { _eq: $price }\n\t\t\t\tstatus: { _eq: \"active\" }\n\t\t\t\ttype: { _eq: \"collection\" }\n\t\t\t}\n\t\t\torder_by: { price: desc }\n\t\t) {\n\t\t\tnonce\n\t\t\tprice\n\t\t\tbidder\n\t\t\tstatus\n\t\t\ttype\n\t\t\tcollection_id\n\t\t\tmulti_bid_id\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tmarket_contract {\n\t\t\t\tname\n\t\t\t}\n\t\t}\n\t}\n`;\n","import type { KioskClient, KioskTransaction } from '@mysten/kiosk';\nimport type { SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftById } from '../../graphql/queries/fetchNftsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport {\n\taddBluemoveAcceptCollectionBidTxHandler,\n\taddOriginByteAcceptCollectionBidTx,\n\taddTocenAcceptCollectionBidTxHandler,\n\taddTradePortAcceptCollectionBidTxHandler,\n} from './addAcceptCollectionBIdTxs';\n\nexport type AcceptCollectionBidTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tkioskTx?: any;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tsharedKioskState?: SharedKioskState;\n\tbidNonce: string;\n\tnftType: string;\n\tnftTokenId: string;\n\tlistingPrice: number;\n\tlistingNonce: string;\n\titemOwner: string;\n\tbidAmount: number;\n\tbidder: string;\n\tseller: string;\n\tsellerKiosk: string;\n\tcollectionId: string;\n\tisListedOnBluemove: boolean;\n\tbidMarketName: string;\n\titemTakenOutOfNativeKiosk?: any;\n\troyaltyRulePackageId?: string;\n\troyaltyRuleModule?: string;\n\tshouldSplitRoyaltyFromUserGasCoins?: boolean;\n\tmultiBidId?: string;\n\tbeforeResolveKioskTransferRequest?: (coin: any, transferRequest: any) => void | Promise<void>;\n};\n\nexport type AcceptCollectionBid = {\n\tbidId: string;\n\tnftId: string;\n\twalletAddress: string;\n};\n\nexport type InternalAcceptCollectionBid = {\n\tbid: any;\n\tnftId: string;\n\twalletAddress: string;\n\ttx?: Transaction;\n\tkioskTx?: KioskTransaction;\n\tshouldSplitRoyaltyFromUserGasCoins?: boolean;\n\tbeforeResolveKioskTransferRequest?: (coin: any, transferRequest: any) => void | Promise<void>;\n};\n\nconst ERROR_UNLIST_FIRST =\n\t'Item must be unlisted first before you can accept a collection bid with it';\n\nexport const acceptCollectionBid = async (\n\t{\n\t\tbid,\n\t\tnftId,\n\t\twalletAddress,\n\t\ttx: existingTx,\n\t\tkioskTx,\n\t\tshouldSplitRoyaltyFromUserGasCoins,\n\t\tbeforeResolveKioskTransferRequest,\n\t}: InternalAcceptCollectionBid,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst nftRes = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftById,\n\t\tvariables: { nftId },\n\t});\n\tconst nft = nftRes?.nfts?.[0];\n\n\tif (!nft) {\n\t\tthrow new Error('No nft found');\n\t}\n\n\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(nft?.token_id)) {\n\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t}\n\n\tconst bidsForTracking = [];\n\tconst tx = existingTx ?? new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: kioskTx ?? undefined,\n\t};\n\n\tconst nftType = getNftType({\n\t\tcollectionId: nft?.collection_id,\n\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\tnft,\n\t});\n\n\tconst transferPolicies = nft?.collection?.chain_state?.transfer_policies;\n\n\tconst txData: AcceptCollectionBidTx = {\n\t\ttx,\n\t\tkioskTx,\n\t\ttransferPolicies,\n\t\tsuiClient: context.suiClient,\n\t\tkioskClient: context.kioskClient,\n\t\tsharedKioskState,\n\t\tbidNonce: bid?.nonce,\n\t\tnftType,\n\t\tnftTokenId: nft?.token_id,\n\t\titemOwner: nft?.owner,\n\t\tlistingPrice: nft?.listings?.[0]?.price,\n\t\tlistingNonce: nft?.listings?.[0]?.nonce,\n\t\tbidAmount: bid?.price,\n\t\tbidder: bid?.bidder,\n\t\tseller: walletAddress,\n\t\tsellerKiosk: nft?.chain_state?.kiosk_id,\n\t\tcollectionId: nft?.collection_id,\n\t\tisListedOnBluemove: nft?.listings?.[0]?.market_name === 'bluemove',\n\t\tbidMarketName: bid?.market_contract?.name,\n\t\tmultiBidId: bid.multi_bid_id,\n\t\tshouldSplitRoyaltyFromUserGasCoins,\n\t\tbeforeResolveKioskTransferRequest,\n\t};\n\n\tswitch (txData.bidMarketName) {\n\t\tcase 'tradeport':\n\t\t\tif (txData?.listingPrice && txData?.listingPrice > 0) {\n\t\t\t\tthrow new Error(ERROR_UNLIST_FIRST);\n\t\t\t}\n\n\t\t\tawait addTradePortAcceptCollectionBidTxHandler(txData);\n\t\t\tbreak;\n\t\tcase 'clutchy': {\n\t\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\t\tawait addOriginByteAcceptCollectionBidTx({ ...txData, sharedObjects });\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'bluemove':\n\t\t\tif (txData?.listingPrice && txData?.listingPrice > 0 && !txData?.isListedOnBluemove) {\n\t\t\t\tthrow new Error(ERROR_UNLIST_FIRST);\n\t\t\t}\n\n\t\t\tawait addBluemoveAcceptCollectionBidTxHandler(txData);\n\t\t\tbreak;\n\t\tcase 'tocen':\n\t\t\tif (txData?.listingPrice && txData?.listingPrice > 0) {\n\t\t\t\tthrow new Error(ERROR_UNLIST_FIRST);\n\t\t\t}\n\n\t\t\taddTocenAcceptCollectionBidTxHandler(txData);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error('Marketplace not supported');\n\t}\n\n\tbidsForTracking.push({\n\t\tnftType,\n\t\tcollectionId: nft?.collection_id,\n\t\tbidAmount: bid?.price,\n\t\tbidMarketName: bid?.market_contract?.name,\n\t\titemOwner: nft?.owner,\n\t\tbidder: bid?.bidder,\n\t});\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && bidsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'ACCEPT_COLLECTION_BID',\n\t// \t\titems: bidsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","export const MYSTEN_TRANSFER_POLICY_RULES_PACKAGE_ID = '0x434b5bd8f6a7b05fede0ff46c6e511d71ea326ed38056e3bcd681d2d7c2a7879';\nexport const MYSTEN_TRANSFER_POLICY_RULES_PACKAGE_ID_V2 = '0x0cb4bcc0560340eb1a1b929cabe56b33fc6449820ec8c1980d69bb98b649b802';\n\nexport const TRADEPORT_BENEFICIARY_ADDRESS = '0xbca3b5c01c8d1a93aed3a036feff45145518292dd3c1db1d67cc99a699a7b517';\nexport const TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT = 0.03;\nexport const TRADEPORT_THIRD_PARTY_FEE_DECIMAL_PERCENT = 0.005;\nexport const TRADEPORT_LISTINGS_DEFAULT_COMMISSION_BPS = 300; // 3%\nexport const TRADEPORT_LISTING_STORE = '0x47cba0b6309a12ce39f9306e28b899ed4b3698bce4f4911fd0c58ff2329a2ff6';\nexport const TRADEPORT_BIDDING_STORE = '0x3d3b0c6e616fdc1a45b2b73d022bc085448e78bd729d28081c7a340abb33cba1';\nexport const TRADEPORT_MARKETPLACE_OBJECT = '0xc5f87120e388b532ee774f7bac23347679f632a1f2d59f4ed2bbf2ffe5a61b6f';\nexport const TRADEPORT_LISTINGS_PACKAGE = '0xc99caf110751c3c615c64a27c81bf5c829e39b21a32613b9e4f87ca69cb8ec38';\nexport const TRADEPORT_LISTINGS_STORE = '0xf96f9363ac5a64c058bf7140723226804d74c0dab2dd27516fb441a180cd763b';\nexport const TRADEPORT_ORDERBOOK_STORE = '0x3af0a94360253c80fbabe73f6832be0a49ddfc0b8772ccd5335f568cbc356da1';\nexport const TRADEPORT_KIOSK_LISTING_STORE = '0xbff3161b047fb8b727883838c09b08afa9e0dd0f5488bde9e99e80643da9b9e0';\nexport const TRADEPORT_KIOSK_TRANSFERS_STORE = '0xe0f61b6915d3fd4ec8bbe4618514e2152a82841605bfa00cde22ace434153a1b';\nexport const TRADEPORT_KIOSK_TRANSFERS_ESCROW_KIOSK = '0xa677dab85a93bd8d6845b6cc7914f3bbb334fef7fbcbe0e997b5f75b5922d106';\nexport const TRADEPORT_KIOSK_BIDDING_STORE = '0x1e5e7f38e3a61d1d189506d0fc6b7e47e935a292d9e1b23c0f3f1c0f94227772';\nexport const TRADEPORT_KIOSK_BIDDING_ESCROW_KIOSK = '0x151fbe627d3f8de855f424c879ea2176d89282185a4b9226a7157172dd2919cc';\nexport const TRADEPORT_BID_NONCE_TYPE = '0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::Bid';\nexport const TRADEPORT_KIOSK_BID_NONCE_TYPE = '0xec175e537be9e48f75fa6929291de6454d2502f1091feb22c0d26a22821bbf28::kiosk_biddings::Bid';\nexport const TRADEPORT_PRICE_LOCK_PACKAGE = '0x3cb532a2548290780a3d70ad6f4f06abc5bebb75ec6f8dd0197d4d2b2860c5d8';\nexport const TRADEPORT_PRICE_LOCK_STORE = '0x4b705de46a79b29276baf45009bc7d6f70cc0f1407f0c9e03cac5729c0c47946';\n\nexport const TRADEPORT_MULTI_BID_PACKAGE = '0x63ce6caee2ba264e92bca2d160036eb297d99b2d91d4db89d48a9bffca66e55b';\nexport const TRADEPORT_MULTI_BID_PACKAGE_ORIGINAL = '0x53134eb544c5a0b5085e99efaf7eab13b28ad123de35d61f941f8c8c40b72033'; // V1\nexport const TRADEPORT_MULTI_BID_STORE = '0x8aaed7e884343fb8b222c721d02eaac2c6ae2abbb4ddcdf16cb55cf8754ee860';\n\n\nexport const TRADEPORT_NFT_STRATEGY_PACKAGE_ID = '0xb7386fc8c6e64ea2b0079e293592b57e984988afdda763f78a3151021c5fbc22';\nexport const TRADEPORT_NFT_STRATEGY_MANAGER_ID = '0xfb58ee62b3a62a8150f871da950dfdf923cd0d97b153caf99b5219cd4ddda5bd';\n\nexport const TRADEPORT_POOL_REGISTRY_ID = '0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd';\nexport const TRADEPORT_POOL_VERSIONED_ID = '0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676'; \n\nexport const DexConstants = {\n commission: '0x24f5f2258ef80c0a3243088199faeb95ad50516ca1517dbd93be398d759057bb',\n commissionManager: '0xd19a03d4ec3d12b0ce407b54eb676cc0f8e1403621deda77d9677bfcb9d738c1',\n poolsToExclude: [\n '0x3addbbc82866c0bbd93e51b6e2d75c0a4faaf270cc0e281d8f4de5df48bebfa4',\n '0x19d614f421046cae90f5a3a976816063478f648087a12adc74e90ebd54dfaf19',\n '0x514c74e28a9720366abc4a65a5688f47c72e784dbf035844d3f59059bfaed056',\n '0x0854de4e9d64716b757b2f6f22258467f59cc1b4bc0cc64c70086549faaddedf',\n ],\n};\n\nexport const USDC_COIN_TYPE = '0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC';\n\nexport const COLLECTION_IDS_WITH_ZERO_COMMISSION = [\n\t'',\n];\n\nexport const ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0xb9353bccfb7ad87b9195c6956b2ac81551350b104d5bfec9cf0ea6f5c467c6d1';\nexport const STORKS_ORIGIN_BYTE_ALLOW_LIST = '0x2566a35b1703ea3a67dda8a4cd25a77382543a9faad15a1028eaa7592fbcd0ca';\nexport const SUISHI_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0xa9afd6ac0b5a68710992ebc145b9be4e764628dfffebbccb065ed891948f7d7c';\nexport const FUDDIES_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0x1ae174e8e2f238648d5fbef41e2b435b7285e678aa5e2e7db27f1be006ab242c';\nexport const CRYPTOPEDIA_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0x3bbe09ea50c49f58e2c4915bed1b19ffdce43e6a3763be44a4fdd8c5d8cb3f32';\nexport const GNOMES_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0xa830cf84682a597cdf3337bf1917492a0eea78a0135384060d675d4808daa318';\nexport const SACABAM_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0x6ec53faee01f3e193501b84e98a43915228faa2df3f070ef069f57d0ed7601ca';\nexport const SUI_ECOSYSTEM_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0x86f62b145974165fa53a8ac167de61a0fd0f9f7206dc67ac118fb3ac63b80476';\nexport const NOVAGEN_ORIGIN_BYTE_ALLOW_LIST_OBJECT = '0x60f94a76423dff7c1f46a1642c937fe754215ab91bcc48110d68c5e9ec29d419';\n\nexport const BLUEMOVE_MARKET_CONFIG_OBJECT = '0x09e24b156b08e7bc5272f9b731e93b80b458f0b79a5195eb81a471d514f1b1b8';\nexport const BLUEMOVE_ROYALTY_COLLECTION_OBJECT = '0xbf471e4f38f76ed88f18e44f3dce2c27e03c1857d51ea17cd9b230b6d69b4bc1';\nexport const BLUEMOVE_CREATOR_CONFIG_OBJECT = '0x6bdeb62b036f5f9c3f0587a0480e6dd75cb4e758660cf30b542c031fa394bb83';\nexport const BLUEMOVE_OFFER_DATA_OBJECT = '0x4a8e6a4634e3dedae00ffe9f065351664ba32d7e9c2d26221a666ca380ea68b9';\nexport const BLUEMOVE_OFFER_COLLECTION_DATA_OBJECT = '0xd1def3ba244a0cb3d248cd3e72078cae869c05b4f03ccc9289998188b1d7b768';\nexport const BLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT = '0x7ffb33136bcf4a69fefd9b962c5e47f9213c79cf4f443dd2a39ab17a1424ba6f';\nexport const BLUEMOVE_KIOSK_OFFER_COLLECTION_DATA_OBJECT = '0xd29edb24787f6b128018de0a2a513cdf63a48f7c256ecad1186cba3c6a45cb55';\nexport const BLUEMOVE_KIOSK_OFFER_COLLECTION_BIDDER_BAG = '0x15708d74504203a9620779583f8e63f2b5a599b28dd3a7d9063ab41e6fb75942';\nexport const BLUEMOVE_CLAIMABLE_CONTRACT_KEYS = ['0xee68a4f9a04b177ef65455c89e4c462ed5a4cd486ecac463407dd80e565c7420', '0xcc97b74ed95c8e8a3ed88050a898727dee37896da579fc400d482b64db6149ff'];\n\nexport const SOUFFL3_MARKETPLACE_OBJECT = '0x0ad62c9d9c5b06b60c1f2e7da6659f7408636c11392651444dfdc5f5930d5dce';\nexport const SOUFFL3_VERSION_OBJECT = '0x2c012a80a7fab8fe025d3d5be531227ccebbaa86d85cb56d09d235b1f3209cef';\nexport const SOUFFL3_EXTENSION_OBJECT = '0xa3e5b249961bae7270af1484687b7d924d6364476119f687564dba0530055e6f';\n\nexport const SOUFFL3_GENERIC_BUY_METHOD_COLLECTIONS = [\n\t'f7ccba9d-04f8-49c4-8e1f-d264b122584d',\n\t'86a437d7-e073-4365-8455-a4f2d983f840',\n\t'd8863069-7281-4809-b66c-30bb80d47967',\n\t'f447de12-64f1-490a-b8e5-636d4e778a61',\n\t'f6cf1905-8378-44c5-98aa-ef6b20d0a527',\n\t'19569440-6dfb-42af-8189-59fff6fa9905',\n];\n\nexport const KEEPSAKE_MARKETPLACE_OBJECT = '0x08f446892306164934c0622388d8220961a9d08bc143888b6c923bb97a179ea8';\nexport const KEEPSAKE_MARKETPLACE_KIOSK = '0xfaf1b99c273737e914da13324ee1191f42346643083892d3f6f09a2d246967e5';\n\nexport const TOCEN_MARKETPLACE_OBJECT = '0xb2b140b2841329320b66f92373a2683af7f9066472233effab03755270bcf65f';\n\nexport const HYPERSPACE_TRANSFER_POLICY = '0xb419035c773d944268d64ef8a271fc52700d9277ad118f24b3de78a37a8bf899';\nexport const HYPERSPACE_MP_TRANSFER_POLICY = '0xc38ba43a611f1571d78bffd3e85e6137d77e30a76f735c93821b24971b82619f';\nexport const HYPERSPACE_TRANSFER_POLICY_TYPE = '0x9a84b6a7914aedd6741e73cc2ca23cbc77e22ed3c5f884c072a51868fedde45b::hyperspace::Hyperspace';\nexport const HYPERSPACE_MP_TRANSFER_POLICY_TYPE = '0x9a84b6a7914aedd6741e73cc2ca23cbc77e22ed3c5f884c072a51868fedde45b::hyperspace_mp::Hyperspace_mp';\n\nexport const NON_KIOSK_LISTING_NONCE_TYPE = '0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::listings::Listing';\n\nexport const ORIGIN_BYTE_BID_NONCE_TYPE = '0x4e0629fa51a62b0c1d7c7b9fc89237ec5b6f630d7798ad3f06d820afb93a995a::bidding::Bid<0x2::sui::SUI>';\nexport const ORIGIN_BYTE_MARKETPLACES = [\n\t'tradeport',\n\t'clutchy',\n\t'bluemove',\n\t'hyperspace',\n\t'somis',\n];\n\nexport const MASC_ROYALTY_DECIMAL_PERCENT = 0.085;\nexport const BASC_ROYALTY_DECIMAL_PERCENT = 0.055;\nexport const DSL_LEGACY_ROYALTY_DECIMAL_PERCENT = 0.05;\n\nexport const PREMIUM_NOMINATOR = 300n;\nexport const PREMIUM_FEE_NOMINATOR = 2500n;\n\n// These are Origin Byte NFT types that are missing sharedobjects.orderbook, so must be traded with our normal non kiosk contract\nexport const ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK = [\n\t'0xc4fc5b341858ac6fff4859d8105e345b195847cd230e8538d61a2f319ae8093c::bluemove_launchpad::GOATsOfSui',\n];\n\nexport const DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE = 'This item has been flagged and marketplace actions are currently disabled by request of the DeLorean team. The owner of this asset violated the terms and conditions of the mint. More details will be provided soon from the DeLorean team.';\n\nexport const DELOREAN_TOKEN_IDS_TO_DISABLE = [\n '0xbce0a70b95c29c32a5eca860d91c516354ab885e78847d873c6adc8586aa1add',\n '0xa8ab7bfe0ebdfc4699d68de87c89310f19bc2722dad8c89bd95a7fc31b789ba6',\n '0x6bdd82e6794c1c5e5aec267586d373a278a0fac6f1fea24d8e9daadb895fa183',\n '0x363dcfff1367ed21aa4f60b5a7fea2282b454a9295b4ae36dbf25beeb6d42eae',\n '0xa433ed00929fd5775130f76c924066f45b3319ce4dd7c7714c3881b867680297',\n '0xdb6e83968d3370b570dc9747fa378d6e4cdf975d342f4e9e8f7c644e442a896d',\n '0x0c9e196f1625e469035c84c221bb5c626c1ece8f9225117993aa30f1f3b8fd29',\n '0xe3b3df2b89073952894524fffe85b00efd94cb8791597781f6afef5ea021ea8e',\n '0x8d3358a151e2a788a73a13abe14252ee7f71eee5086c8eaea95c0991ade57be5',\n '0xeb14a893bbd84da75d83f3ae778512374fc641b97c6259c69c08506083e0d7a1',\n '0xff60c15f8e299c9a7eb68621813396e95ce5908ae2ef8b575c2665a015e8311c',\n '0x89dbdfda4cb3ce2614ca530005ebedf9f3b15715626436aec4d8ee202fd9d575',\n '0xd0214e8a8412ee7430b3c6f4e783077f962261df7462c9ceaafbb63906a344d4',\n '0xe736cd6ef089951e32f733a7830a7d5faa44f937f07cb643ed255029a1a94e39',\n '0x56d0947e2a536b9ddf041630cd4b3a2f862ee6c271f0aee338c3ce3729702e77',\n '0xa1ebd337d0aed1c0e76d0494b01c261a0ed4d10aee5989492b872c125b542eb9',\n '0xd47164e9e13bf49bf8be44d617edc953727c9397066fdf2323acdce3d5d73326',\n '0x15df2eb999cbbd064d4b41c4aa9f1db0219cc0164497330de5cfd0e513b64e43',\n '0x2718ddd5425ce5d535e1362e020ceab4d3164e21ad9d7ff7d28fd13abe05b5eb',\n '0xca9a4c13e805a3cf50e47b7dcbb31b659b3058918ffc86b8b0deddbf84336b7d',\n '0x0b00b83d0b934b1d249a377e99cbda229a0e16d31b7dcb62f86646b469bf0731',\n '0x95d6404f42939e87a82b6fc0a58902eac28ef405239ac9a636d4dda655b2c753',\n '0x5f64bca70e53ab4db2ba453dd6bbc7d5d3185a779a5b26518acce2bef19f6b0f',\n '0x8592c4cdff4b23fbafcfdb8f58083b9549aa4e8352e69395db4f940ca628d283',\n '0x44014456e7c13f86966fe476d1ac5b0c479de2672d7a7515df30a3bc51ef6d88',\n '0x728e31ac3bcb2f78a4b59bf218a592b2373a7ddacdb58db75561434d55d11173',\n '0xb74910950d50dfa531cea5d386962e0a6ce316549ef91a15618791657369280e',\n '0xce6511eb3e1a9d02c2538d38b290295f3146d6a3237a63a5212b5c146766389a',\n '0x84d12657dbedbbc6072390a02b4e703fc037c93774a05424c4fc1cad3a847210',\n '0x8103ef96c4e17c07ebc4e6f93adc6def51580b949548c4ae48796f15160e8bce',\n '0x8b11085e4c2753ebda7040059c6882c41106715e179dd65c9b19423ad5de5c4d',\n '0x1d11e0d3c7cad3e0fac6cb9527c132a3e7c3e98ac897cd04d4dc21193c351a98',\n '0x9fe42f8f7a04e8c706736e28f5614271b7fbcddf2ac5c6aa82aad78bc42cb3e0',\n '0x3972db14f09fe45be286da18c5fe8a6c6b03b3bf758e4881932e46bd74d9f291',\n '0x7902daf1bddec369b041e38c419ca0b03691a6912256024ee78b8d65cb98e086',\n '0xd3dee9f11cbc706c1532a981d23309332523e9986f7cb6011580f8d73deccbab',\n '0xe609027d157dcbc7a728987c555d6323fcb8dc74c329634a407f86340c80f2d2',\n '0x3904e02d35d180afadc79c02a6eeee1ea0f5cf5a66d7b445f92c971a767443c2',\n '0x62790cd98be26917a72919bb07c261b5aed0554766c80f4da81ad57628ec57d0',\n '0xabb4347b3a68331c824a0de07002cceaa5d081c3a0bb419430baa14b5b15baf8',\n '0x49eccabff9d70b52808b9d7c67ef734be2270c0fa89eb0d02b5326055cd4541a',\n '0x325737ff858388795292684d3a704ce357f310588423b44f47fa53e48d0db34d',\n '0x2e498c75ed56303986bada4a3c3e8c81f25762fac9f6b4ff417559f8e8d544e9',\n '0x4b307f9c5941a0281ec33e9254f1a6083157f342f1f4da378fe49d2a1d19f750',\n '0x7a291a9249e7081282a8e8f5dd024941dd9ba7cf22543646f690b77bc2c4f4c0',\n '0xe8970fab1a085c079ccdeae34f3ddebb85fe2f7cdfff746b8f9b3157add5ebfc',\n '0x0c4c376b2ed85fd3928df9ebdf20588f6c98f30f2c5411961432d4e4dc92dbe5',\n '0x61c4f0d5491819e2641f9e58dc37a9181d5be4d0401227afae103013d564fe28',\n '0xe111d6163b7fdefeb6bb6c86c44e8832fccf2ad5aca7567d129e21d9b9cc2fa8',\n '0x72417177be3dcf1be8f8e99bbe4bc022548fac4fdf06025a26963dd2ab3960ed',\n '0x8c52f340e104778aa3affa1b7a914539072c3bc8b1b67fa719cde76a6d2290bd',\n '0x68011f6843901823151e2c8a130c025bf3b3908f568636813c176991dc4e2640',\n '0x8df4c246bf411a2526f565d6efdbd53a88f22c0bd0ca6d385e3cbc2de6f775c7',\n '0x53a30def71432cda01a92dfeb2495922a33499bba989c9e5a245b0d669a2483b',\n '0x3c1bda820cb03c6d8d5f896a4295bd1730587ab44cefd54414c105ffd1cefaa9',\n '0xf2f861deec9a2c9084fbdf77c3cdd4b26425609a904d2b5beffc53006dc64d9d',\n '0xc90560ece000cba3d4f6fb8d817cd54befe19067e2aa343f2a4ee285294ee181',\n '0x51e0981dbc7f47e81ed8fca9257d0cfbd3b2af998206ef91936aa4e3277a7576',\n '0xe75de817180ceb7cb63b8aa40a443aba91d2f4fba09772c346ef12008aca5cbf',\n '0x9086cb240098436cd0dc345f582d0cb685e261e014a0cec61d3d9ce83e57fc8b',\n '0x937cdabbb081307f49740e7fed9d52964319bbdf60948483525c145b98d637db',\n '0x6ae4e1678940dbbafe87506a7882398e7996ec3a936b7b72efc8e942aa93ae86',\n '0x27e679fdae07ce2475d6a520ed88a91708112138a4807d92e58c59e50f7834e7',\n '0xa3ff917aba5245ae22fc3b34ae05067c3e25aeb3a44fbd0e8a4de63664be2c35',\n '0x2d8f60dcacbdb1ed3d396b8aff970797b77f8188a7c6b7d4e41792a59085d17e',\n '0xa59db4f1157833f516063b4b2dce909e05adecc3c65e5ccebb1727b61bdbcd5a',\n '0xfe36e9d4055f07f5de4ab42d7dcd94b1757e72fefc08b3c2ab7c85a1cf8a3c5c',\n '0x4c013c74c7eb56bba4568a889f50c9137945a5565af50070199ca167c6f09d77',\n '0xb7db7a73f2eb594747c6d8603268ba3e81dce344bc067247871c78f3db754fb1',\n '0x16ad400d04072c308be9ca778c0a48367e6a579c030dca33bf8d54228ba52241',\n '0xa886a3730d4d89affdee05440078dbc03c82880d375b4c462f8d416d4f590b2b',\n '0x987f4651d7613c2bab9edd1256e303f0d0c4c20f3df27375866a3f4ce50c8359',\n '0xf17a8d605bd0b348b56dc1ad57d391ce8f0facf853ef7cae2ffb93e94b344da8',\n '0x72dce7baa0fd144c0afb39a950e6ec2e4e51a623ebe372b584987d9b27fde4b3',\n '0x4b09845c266bed47ac5c0cfcb0bb2f5be87318534b07aaa93e2173a2a70cfa14',\n '0x55ac36673ee1b37f33d1697c69e3e59c87c7c0a6a8497c004c420123c672eae0',\n '0xaf3ee6b8f066a781c92798abdc2e3d9f97a4dbe01af208bdf293fe589494500c',\n '0x4ee4a8c669721f15c636d6899a49b5324552a85b6f999d88c42bf92220e305bd',\n '0xc8ea5d6a39790c63d43db1dd4c33f68e287c0fc010784f0533d338a914044540',\n '0x40d1e8a3e9a26497c0d251244503df1c94879f214f2fe5c0432ed2807e2273ab',\n '0x9d58d918cac59cc704e6291edb36fe3ac627baa3cad9047680a3c2dcc0035532',\n '0x647eb1c440e099335f5917a4731f4e884aecd03f7b7e7d08043eab1720819bfb',\n '0x1f80e114c2f68b57030564c49071a2da90dc784d1817597496755b5a43336be6',\n '0x0907ec368cbcb78a279797971da18a15852d7b66a01e9df680b7a45dcadea0d8',\n '0xcb83034de192eb28ba67187fa2c2dcb42599fc7ca43812b5933e5987d473fae7',\n '0x63f2efd2fdac4b13940c7f17515f6377aa5ee1d0e8db39fe84c353a52645fc94',\n '0x4c0d2db0f95a86e895340446de8fc474d70f25f6d0025c06930967ef1a03e6e4',\n '0x768d6d6cf02971287da8987b9908129931a0494cc91371c01782ef6bf2f59ba8',\n '0xc3ae8e3471a0bad4b6c5a85924857da174d0557ff7ebcd424460c5f79a26f4d8',\n '0xfbc36ea7a8a8b2e076cac88ae6159505b0402e559927d3cd0bace4abbb2c6ca4',\n '0x660b25cc02ebe9f8b9a1bafe3c44fbb245b1f25f8f833d2932c1f668b4b16646',\n '0xb54511a062af7b265f07086b66cf00ec33972923e1fce91829f88d54da0db918',\n '0xe05db949851e86a4da82fcda57e20c27f7bed634cb9f30d4c98a9c7a9ed6d34b',\n '0x501a02a8cc35db3ab93b7109d92162b20054000e4f3ed060448344c063ad6e23',\n '0x4be332fc5e4edd5ed7023b210186588a3f056a41bc4e99a91989538c024e5319',\n '0x28ebd56bfd5c16d15ea7c0fdc3850963c3df46a291115d69bc454e3bb122ebee',\n '0x5147f22bb24e2b65e96c5c6d77ff2fc4817929a7a70b0ea352064beace82ab5e',\n '0x97693f71ef0b03ec4db319c0675767444786f88edd42576a37516d720221d0ef',\n '0x018a6a61d6be8e246e6ccf6c430958e3876f9e1a7ae0cf11a126983697ea480e',\n '0xbdf48b189d2697121293a32e38bb31c26996dbf97d31250511acafe77dad6fbe',\n '0x663208948946abad72f92a4b20548ff96cfeeb28c9d6dd255991a1eac930b6a5',\n '0x6f46e790d814f33ae926521d1404c59f062e99f97777bba0b8e3cb0b6a14885f',\n '0xd0e83ca4fb48f6de3e2a60f6e047a6c6eedd3d8f2b22e1c34fae0f1d51289451',\n '0x2280032c988a483d21cf968c79237fc774acf21e5bedd49872b57a561fd134e3',\n '0x3e56d5927bfc7461667ab4fb3243d5a39590658caebbe34e9b68be162af079fe',\n '0xf7302ed57ef1a681a47ecaad1373057cb49f76637b71814e2663f0d854b1a71e',\n '0x807c8f21ea10e0bbc74c3e3ceeaa35ef1bd46b9a48d25da7e71780757002a132',\n '0x7b95f121a82388ffd2c1d1e9f92e43f0efb2032e02ec46849ffa408905630c2d',\n '0x119f8976dd0c1d839d9dfc205c746cdacdeb7d7d5035e560b4e5b6065ddbdea6',\n '0xbfe621e8641d0277a42f8e598e737249343f7cc5343a8e4f2e73756c536ff60b',\n '0x1338059ecbaee7ff6e52a352629580b83a801a308e34750a3aed8e928b98fde2',\n '0xf20bfd18d4f6095bb138efc54563550a6fa8cd4f63fbc4f77b21f00db069d625',\n '0x3dfe42a4889ee8212a3fcce7b82ad3877de5a7bf467d8115e7d8f7b006ad3264',\n '0x52506161dec7c9a89002fae888da8fac4f8274d4f8c3c8317f56b1f2896faf6c',\n '0xb4d381f3ad260d9dca6fcd3fd59dc477e406b26b33c659b522fd6e2568dba8bc',\n '0x954dc5ffeaae24abd4d14af398d29c1b6e3f354321940e5fedd51f5cf2ff67a3',\n '0x907f729347744467af5476e00644d16ac7d446c4cd1f5e28d84fb723f681f61d',\n '0xd5fd521460a0d76318c8620a630836eef68af7593f1c039b15befe96a7ee788c',\n '0x1128552e0b1dcb2d40137ae1ed47f506e7b888d946cca72a21a919b49865bf79',\n '0x1ab20d70a9953aea475f1ca1e7b7064f82971b10c91473a6e2632baa20951b50',\n '0xb5d4cd2d46f61d145e8603b5ee5e9248904a81bc496bfc39dcf335825ec5b3ed',\n '0x17df253e69f700c99e6756b3d1466722692332f4ca98d5490fa5af2ae0d0e221',\n '0xc38af99ab6aaafa57aa2564ca393ae03eecae4a5954b7613a45b559b090f418e',\n '0xec8e46215373fa311d6a9d0719f7ccb8de0f0eb94d4721e96c8abb9161c9f733',\n '0x587ec94337ddd50c5a71dafae69e7f589a2a44c783a612571ec1fe826e4e6d1d',\n '0xb155e120393f059a07cf8e42c976c02a1deaaa0ec82baa7ce26ba919758af908',\n '0xa1893de6dff8cacbd90ec8ef4f764abf51b7728de594624f335fe39868d1ce97',\n '0xc9b1f64d0b41b34727ab3539534303085d767f2c4934b00aaf42f9919d0bdee1',\n '0x0fb41350798af8d368ec77bc99217cc4d9020f163388785114251dc0ededf946',\n '0xa230bf985b21cdd452044bc4252f62a77d14433dc8fd838ba144784d8bca0177',\n '0xf088a2cf90df306a843b1f70d400d1ac82c2e8e1462cd4950f62b03a38963825',\n '0x58942ef6beb508c7b884ab1cdfcb656df091b059bfc2b3b372463a55e8e7dbc3',\n '0x98a357dccc064d1892fd31564bd110e1a6b54ce7c3bfbec4717a7d5948248f96',\n '0x6f4393ec36f0b2fda158ce9357c413311e23e6edb46cf485ab5d58cd058b61fb',\n '0x91a67fc30c327c2b5ecd4459401c0ed30aab73ac2b89ca8ff5db2b413ce1802c',\n '0xa8566e1751c5994ecd7e7ecaa4ed40ffc4cd4f1517a61e049b202b6ef84f2e32',\n '0x05e50a9b9c5bd758def400b3b589426365a417339ca663e69c1630a9e2ed2f94',\n '0x73676e61c48e5d8248879f18ceaa9938d16317f735064e3fdfb7fdfe0c9a4630',\n '0xa128092de09511c0112c5f891557b095d1e44c056a79199e6059fb2461b73071',\n '0xe8ca4ca729c922f0b3ab32ba7b9a4d1a4eb7adde9a6aa4b2292bfbf17628440b',\n '0xda1ccf3748309a16cd1535d04623bf716bb65e80dcdfd56fd28f689ae212aa17',\n '0xc01e315a14726dd6fc3355f7a2d8dbcddc3683409f9e4a0d98128b37df1cdd04',\n '0x3788271ab0fe7934ece5638f7dd7d7d6f5412443f7ce26a363b880d910526eda',\n '0xa2a29cbda59df7a72fde8c0ea749c4e28bc9e57b409737cd4c5b12de91b3e08b',\n '0x9e5c861429b030dfbdd2b8b3398bf189e6f5e695396c042b26b64f0ad45d2b8f',\n '0x47448dd1a0a87ef3375a2a98750cd5a927a1e172f84df564550d2eebc859b522',\n '0x85a50f2aa054b93e21a2348f28a9cc746504a13f4a5c17ad92a33eb32a0b5ffe',\n '0x6b5a9d25024188b70b7887c7094bbe1fde7454b6c4d1728faf0ec504ee5cf03b',\n '0xb1e8495a4f7401a0d74da7361dc9eeb30e0b9c9551c2eba2da866e2ba12a462d',\n '0x434e75a93834476f5976951648f2f0c8abad4f96c013a7b5b22292eaf79dae69',\n '0x2d8a873828ab5fa4213eb0a01549e12ebd0801b607519de74ab23cae7a05df0b',\n '0xaa63079907135e1baa8e7a40a5662efb2e18cc049a6a0821780462bca207fdcd',\n '0x5a6c90a4ede56aedacdb30402bce3cf392e18cf81c3a67c7e10207da45927688',\n '0x5f600de11f2b77edfd336213ae0fd2aa9aa16ec558c7c058684348c729baf16e',\n '0x158baab56194274cbdebd359a8e112e551ea85368ab36fcd9cb347b85ee9dcf0',\n '0x634ae1325376703148dcb8160715935ecb3a3e38982cf278d764b923620e238e',\n '0x2ff923220294c926011cec40ee0f21524b5bc7a9e4d75b639471b84ba4e8abf9',\n '0x275a024de15165b3db95e57d510f7920a1340cb451eb6f0626a8e0203faac5a2',\n '0x4a920c4a24ae41aacb03f378ef9a39284996d2fd56537234bcb4d69949b89871',\n '0xc367d6b82c5c6fb9198c8253f2cca532ef36cda02b691388d59999eefd4c4b82',\n '0x87de514d3827b0f61a25053ab411d37b5868e0e5ff7ee2d17679e2e96849a081',\n '0xd4084055eaa2fdf21401c1c7a7549b295a0546ebf86fabb30696f754b1e98acc',\n '0x22414d8b1a4f222623ed8be2fdbac1b8d211499f7a7e12aa9121264ac7bf4d8d',\n '0x5083bd5702f932c7c07ed07e8e0b57ae32cf0e10a34db4d3e09eeccfa74c151b',\n '0x245fbade16661e5f8b36a05d60f421537c64ed6a49acf9e8dcc71582c3f6c61c',\n '0x90c44eaa3214832f34573b1f212838bf2e1cda8296b89baaec017d453527cb74',\n '0x372ec076a8029839fb7aa3a2f05d1e288296d8e06841c940e200ebdaba93d218',\n '0x6126e1ce62e27ee2163290bd3d67f1921f5f0fa23b2c4a9619a0a971be0b6d99',\n '0xbd30976d67e0417fa56616ddf82de306b1427fc86f9f55e3b86e35cf109b2bfc',\n '0xeafcd26f530ba32b3150f5f23d096227b1121ce2c5bbbd77173dd9f0b0d3cf7b',\n '0x14a8160aa1fec8f8e6132dd543e13ec50f422199984965847881b825eac783a9',\n '0x5fd4e927bf4aac9ecd9a0c44c5ad445a8341a7c4f4347a36f8db7fefe1353749',\n '0x10cc841a8b20affb70a76c0a5216497274fa7b424671fba8d4f0f0967107f07e',\n '0x0e7fc40e5db8ecf0d5622264e4b616fe0272bfd45a32dfff87ecb4c0019543c9',\n '0x5248630214935a33f9da4bc585875ff49103e8fe8f84c1fe2d9eb2d48491a605',\n '0x4c8df042363a14c76b1f8c8bafb0a9cb416e895b06e4cde99fed188f0ed451e4',\n '0xd9ce80947bf628f214acceeea41f01a9830b8199d81ae78a5aea5a2e8d2b2c9f',\n '0x1f2d2018e4d2c774d50406da403a80db98e685d4b9ea6ae91062ffb127b34329',\n '0x8afd7cbfd05544548f24171efcd60863766c3d1a9943548c041a0b067c37d770',\n '0x0bf88b38a3d4b94a4bf606200b6b33cd98977c0cd534be640f9dd94c8b329db9',\n '0x426c05006485c8fd85cb0dc5089c164e2e005b4b419dcf22c8763d0fb5dae02e',\n '0xc30bd037df0365934159c4b68b456dd54a99865fb7141ebdb588997f767da6f5',\n '0x64a542488db9fd5ea3b2dd99c2d6211d80f853da0de3d1cc73398ff58404c85a',\n '0x7562084d4d3b9c8d4582a06712fe7d11b6faf104fd7f44fd90ff4dbf69c1672d',\n '0xfcb14c1bff53813e347f3d26ab70389408e116ebff917d858799094f7b561ee7',\n '0x5177afeded36dbb400c110ae477d9e3f14fe36fb8af0bbc400852fbc29ab1eaf',\n '0x343257c88c5f0cd0fea350f93db09f3a279b504ba985a9a5d3c5abfe1b5acf19',\n '0xfb14278d6979d2d4f6e154dcd452698b77eff73702209dc7570ed222e6f80393',\n '0x250c2d9567c19e955ea7c67ead79952beeb013bb6bfc8f4fc4e0014bbf122efa',\n '0x8ae912e14de3ceb370110616e0ab2fbc062f59308e56acf197aaf9d8741e69e4',\n '0xe833d7d90e6a98cfcd441a8cebff13a64a445f0caa63378e2ea0e6b2da4b9bd0',\n '0x7490a72ee08cb08f2373cc8fe0dab8090bf9baf3868b05b57b1adbaecd5932bf',\n '0x62bbb14e92718efa3dd56ba14b58ec79126c938fbe2845777ad1d3e79e7915c1',\n '0x0dae3fd68df5c6c7413a5017e44e53eac385ba2405c00e3e3748f928d2c67aab',\n '0x8bb74336159266fa5b8886367abc33a8daf329e5d753a04f40e2053bc208084e',\n '0xbea7e27116aba2d8408c23082c24f3c662f162a050004bd192166db084be26e6',\n '0xa81f41d10a07cd9f2fe11c277cac7c7751e326e9d147823f0775b76d7bcc89da',\n '0xd42444ecdfc499311039c2d81d46ecc8564ca5dc32c6ab25d15663a11e78c0f0',\n '0x42043b3f35f11fb47de1d8b6cfbb11e5f07ce87bc107ebf151dd8a174f73725a',\n '0xd2b60106c6b0fa9130e2d662e326b4a54830c829192f78efef42969a5249fab0',\n '0xfef03df148d094f2cf331039177da065310a102be49b4ca19ec9a1e68d53e6f0',\n '0x5d8ec1adae50369d37fc4124b5d7cd444a388e7e8a7b3947db804f8f77bff9b4',\n '0x9b3a4bcfc044cf9c080bb25ad1f7dc234acdc46a4df5080cb64ea3e7d66d7c24',\n '0xfaa5b940e0193b9cf6aac007e895edcd33e05c918e771e5514404bbdc863c704',\n '0x5c0c66263f5ca27dfd6b1febe117beeab4757258d4ac38dc04fa36ee7b1f71cc',\n '0x4f5805c71784d601dc019a2aaceed3d72a763916c0e72556e90f39f2684e9e9b',\n '0x4c4c5686f648b8c0c3dccccd1e803db27f40038047f04578aaeef97e30c15625',\n '0x476a26c32a8dd154a0f117b101af7eb411135dbb148056c7d969434f68fbc6ed',\n '0x38ad9228ab733418a84b06255573f89137c23cb9a6ba400c85931e17ea503414',\n '0x6ee172fd8c75725143fb0d0259b917fd838d209cc1f7bf0a30f40af590b7c099',\n '0xc8c00613991bc55aa4d1ddca1ac1ae317162822ad689952f1bdb62e3869588b3',\n '0x75ccc780b807afec6f84d4923c2faa5aafe4ca247987b552c8f7381d4b90a83b',\n '0xd063f89dff6fffc855fefc6cef53c200bcc018f9c9674c8abae29249bddbce71',\n '0x3058530c6d9a981e093208044caba3aad6a6d1e9bbb2ce02777bdb058eba0267',\n '0x63bd20e89dd9076314c97281fd47c90955e4802c52bcd3790524b27c99e20b0e',\n '0xe0050e91d33dd86ff727d8cd573ed87427e91bb0425366462871a019e4b21b20',\n '0x17873134f9be096948c8deef1b74934365979c92e26fa288eec26deefdafc3a1',\n '0x46b10ba22978340edcd78a2381bf17009274489abde6080da3f6358c56938864',\n '0xd86e13490e688062f69fdf191538c399641f1435fbf44fca791ed7b662ec0d5c',\n '0x30926f686c3c6776cdc7abeffa89cdc84a33781f4ca4a47c13738e193fca6a72',\n '0xedf0d3ad9a6bfac58de86d8c660eec7bc4a1075e4be9ad184cbaaac4f9800451',\n '0xccac603bc320293c77eb7177f114c2de4c1eb0bb4d3c67389f82d8cab8d0f5a6',\n '0x046d7a36721207d867230a8b3e1386d6553e0142911a90f2a2cdb3925d32d72d',\n '0x58464fcc0a522633907a0f08ac254d4bf742f9e59eac8629a85804fce86862f3',\n '0xeecbbf1d8ead7e281b7a614bcf18e45853a81b4f22d99c326b60affb738a00f2',\n '0xffc41d3caa2637a37414de3f2527a802e50092f266bc20a6d4f9377985a59e87',\n '0x4dfcc8ce6b5db653b8f5ec9a37b318b8f0646ad1eb15b19241e8439135cd46a5',\n '0x1f8b65bbffa0877dfcc0692178a48ae3918f11aa596b46813246e8df08a9b72b',\n '0x3d8458512576ed6e85d032b08d540e2486a534f1225e8a9f8815e0737d631b4b',\n '0x508f2477be06a5fd9bbd5caa92788265316ee2c77f9e7d43ba1a63653dd51bf3',\n '0x7814f5edc2f65d0ae52d198712f4499e1aa366cee2c56a44835377bacb1215f0',\n '0x9edc2cb6e58670390800d0b8e88a04ae1e3e39bee841f32c7b83c45c33a3ddea',\n '0x433a43d4f4cd5475427606230a5345554216628c12eb7c539e0f2e21d71005b9',\n '0x6b526e4aae1461b9c43252bbce29ff8f2ad7be4990ab3406a3a18f99cb92616f',\n '0x4bdc598ab91fdb61b726836b1592488c434b94011814718fb662e0ebeff5fdce',\n '0xb38dadd6c2a985cd2a0664d1a21c4ceabc1f8331550254e8215136217ca574be',\n '0xd3f56ed8980a9affbac4a423b411a391fb5045e25a8ea0a355dd06fe2c58ff34',\n '0x3a471ffa303fd75fc244cd7d0ebad98384672c1d9ccd371b7eba00bcf43acb15',\n '0xd91708b0324d4221a003a0bbe2b1ebbb3b54857de2af5ca2a1fac0a383342ee7',\n '0x80993433296e605b4038885d5fdc9654b459bd69e03856d70c7c0622f669bbf7',\n '0xb44616e2e0cb30d46216f21874b648bec9723b58b594233285a3d944bb8a7393',\n '0xbcdfb5d8cfd0cee0df04c14705d1c80352dbc074ac2cbdc9ca60201ba8351a14',\n '0x07d2d60989f0c791bd6627b64bbadaa9407af5c9c2335d8ee2b36ddd0699534a',\n '0xe19eabdc03246540504f89da03c42f1b57f77f10767c292ccf3cda1b671c2f5d',\n '0xdeac30341972a9aad70c7a16927bc52d1804bacba4ce49f6fd562d4054e574ed',\n '0x6419f5e18db5b1dadf89665d1b812c37f4ac322effb3cc18bf4d53ab8ffbd48c',\n '0xfd464a6a85ac99851c44b9e06cd8ba347f4c6c609343d0255fc8d5215edaf1a5',\n '0x88ed539777fdf6c749198bdbc410affdb9e39ead51a67db583ea066ee0530a57',\n '0x717eae74cd594630595e54882735163622ef5cd7867cd9691a5e9ce13907d829',\n '0x1e8860ac3c8708757d6d81b809159ac9d22b3fa60de9ac96866ebe1ef3249ef9',\n '0x58f7349c1fdd1baca40815cfef98e4631cb1e9076dacb6c51c2108d08ff6739f',\n '0x62f2d920e8cb88d68fa6549acf484ffe8d8e92452913eca4fbdec7d282b39dfb',\n '0x560899a3a7e9d3daf4e1ec779e98b2b65ce07770d2020cc32cb8da77a8ff383c',\n '0x527d087a91429782960feb9e92a41d8941f0ad3d55758893c86a9eb3bbc30c1f',\n '0xccefe1a372d5d6a71cb226321ffbaad1848df7a5c615e2bf344883b914aa7ce2',\n '0x66e72d2a21a5a2dcdc0ec0095f1c7791669b04b308a2679b5e733521ed4f514a',\n '0xd29a276da8309c5655143a32423db30440709d3e9df3a61c132167345651d137',\n '0x614135255bc987ee2def9430869db222f84a095517564257c001e24b46cfe252',\n '0x0f23cadbf61ac08513721d0eaae1078e95719dbf0f57eaa04a5f87c2a48d18c1',\n '0xfea00e82a33b0550d3d0831a6cb739225b2e14ef585b360cef308b6691c476c9',\n '0x196716a3c247324edd2d8a9b42ea075c27c3f4a94522a9c6172066c654c4564e',\n '0xa03c0e38011c43cd8577bda823dba15426256490d68c367a84051e9d7844db39',\n '0x7e03ef482851db6fd145428011bb5ea79d67913b8e66bcaff7cd1525c991e3e2',\n '0x856acc1458f67323a040b4f5f93af07baf535533edc659f738062ba6910c3ea2',\n '0x89af4e2c4a6f7dbfb0a8214bd00816aac85dc620ad5b33f8de4793ca431ebebb',\n '0x8eaf593c5ef88cde1adef27bd57a7e8d64ba03f44eb1fc591ff6fde3535c7b6f',\n '0x042f2c0b9e2438e9b67576c10ea62618f3a98ff678c430d5a176718370e381e3',\n '0x4d74f210c4527ca6b81ab5c0e633247c151aa13d9ef676d88575275cf7469736',\n '0x6b113d522e53bc3c1a9ee3c157e06ab2eee9244343f32cf537aa840989b01480',\n '0x12dccaa096058b065cc6f6a7b88a011cbf11431cd0898a5a79dd9eeecc6c7e0c',\n '0xdf19ba6a4c475043c8a3f46dbc0933144cd9e1efcedab7cfaffaed94ec72b69e',\n '0xfa047ce603838a3d3fe56ce51c8fca2cc5c6603e020f5111bdc6d154b9326748',\n '0x8dfeb9fd2ec81c5108d8b7353e09b3c4ec91e2e817003f6498bcdb762c976ed2',\n '0x8c30d75bf7abe08d2ef61b069488ba6528663d65bf20849f6ea40fbfefc0525b',\n '0x3c8eae2051838ae034e077942644d3e215f370217138b04551a6aa604c119402',\n '0xf05a01cd5d7cbf6af896eb745a30407f0c4f20db7440448c1f4bbd10782312ac',\n '0x962249629644979a9086f616a36592795d223af7ae929a02855494ecb720f47f',\n '0xf02aeb27219488d7b101f49bab75bcc70b9a26b53793648f6aead67fc9ab937e',\n '0xd981f92b9a20be78330748264abdc8ecce2574c0aa41a6def5106b112a10ac8c',\n '0xd4925729eee3d15b941f8e36e1aa7cb4009bbdc6c324f2278f0c3d414768415d',\n '0xce6deaa30ce60df391d355cd4be57867f97e88efda7c96cddca71a9e3202fa32',\n '0xccbcca4e54d8754a6fdf1a33f370f5230cbf3dd6618de116175d4a30465fce44',\n '0xd2700b068b8edf25e45415be1a39ff65f237d1fd031644eeca490b680df06306',\n '0xc077c06981f089af1111e84e4277b80dd293911a2878311f965a0ac8ad114cd5',\n '0x66f6a61cd8d4afecc760002a6e9a019ba0c459f2ea316dd9b2174074a1a845df',\n '0x9a2a97dcec3d124159f405d844bba7b471ea0e37b1ceb12fa4a69e304ed71fe8',\n '0xfd0b0e875378405fedc004e201780c851a80f7f7abb6cfd7a95829f728517abd',\n '0x4c9028bfe4a52c26257afc159aff13f88aaee9091c01f1861882da6b1bbbe00b',\n '0x32c3561fc04450330ca1fc342df2b02502fffd00003428dee29cbfb74b73b012',\n '0x2f48f4753a2aedd92bde144efa6d9c3420c2885d0791bf5aa6cbc9d2bc54f72c',\n '0x726e828675c98ad26720dc27c37ceaaf7fad5cfbb9c81d646e3dfcb28e3e2e90',\n '0x4c41db464a8b54e10933c87dfa7351deeff8a20efb3e5533f2bae43cc30e36ce',\n '0x61f823bd25c30ebc5559d0c4d9e4d3b7a1259e3742d4605d1f65880ebab19097',\n '0xb010886829a8245adea9b0c0f4cc655e948416ef9218cf20ac2c5ff18f980ac0',\n '0xdbf9781579164032edc12d4b6cb6998884f3e503a7babd4262f129379782f445',\n '0x8091ea7415645d585f1f7e8e210790ec63e9fd7af07973031cc49e33acc8add5',\n '0xe835314a7a112a5737ed28d4787f40f0aace78efc98a9ca7356dbafea3c9b32c',\n '0x09bbead33093101a973a81ff776986d551da006558d7c9efe47cd69b673047dd',\n '0x09684e5a398391b3e4a5d3b231b204460ae5f8e60a98a11b1c80962a705e3423',\n '0xe53791eb98d89f78e4009398e70db4ca23f4563a0c1bc010031ae0613d9970f3',\n '0xe7786439c9fa4f6cad195440ab7a28119e02eae81ee9803cddf4c1338d9bd258',\n '0x20cf0554c3faafb5d54a77a3ae03acf1266f88f965b6b516312ffc7bc7adc82b',\n '0xf330ccdad53d50f06a1399dad2a38ee0ca56beeb9580132de4b90a05c7470d04',\n '0x57b4ce423316ef58e0bf94ae45eb8f1e00b64468dfb783b0f3db7cd6d1503514',\n '0xe090573a8177062ac8c5bc51e5e8ffcf0d3b0bc74dfc1c3ff67f8b74790fe29f',\n '0x71c25a93dd702e26fedd4354875ea820916fc67e94462004552427015c34e2e5',\n '0xfe88a94b74fac09442063b5fb85771ff7b27b28918c5f11384425fde9313d225',\n '0x8c81e31b6a4e630ae2468d2b5addce332915495f9a3044db00669fe29ad0bfb0',\n '0xddd6e2be8750d6ee72ba17e818377dacaa32bed16fd7ad50e9e6e095cc87a2ee',\n '0x2f2f907eed0234c45073d49367761d7e6e122faa7cc0503d9b02f2ab2b00d9f5',\n '0x9f6187e95f4b5db1417eeb1abaa5e49584c2255c2e4c56eb7920ba12c3c4d794',\n '0xa7334991bd83c017450088d370a22f289da28c82614444b661924b7d1d12ec89',\n '0x4c0d2db0f95a86e895340446de8fc474d70f25f6d0025c06930967ef1a03e6e4',\n '0xedf62d0974d7fccadc82a29883e1ea16e56aad0e967a357354d05857a15aa6ef',\n '0xa9b7ced54bbc840cfed0041016569d05b750bf4f2c9e9dfc187e1a1a9aa245a0',\n '0x6ac6103247843aae730e8142a68318a63ce5bf4fa47aab1765224ec654276849',\n '0x1c0a0adc598141bdb2560e7d3634fd7586c49a0e492f2ebf327dab7c67373962',\n '0x297ce340f4af13c2cf8f830bbb8814ce3908bd81ea28426a18579baef185b7b8',\n '0xf903698907b886582d137488fe32cc78d0479407105ea9449eb59d2105797f50',\n '0xe33f6419651654f6235d8dbf1b50eabda59f65daa91ebdcbc71e52424b9f0793',\n '0x2703252b494ee3e6a344b02ec635c7eb306bcbe2a83dfeef258aa69767af2567',\n '0x7b5aedecad8632d10088b930b5a9eabf26605962267eddd86331859cba4a8346',\n '0xfb8884d0aeda803da24ba652c77629f4c1e97769a9fe41a113e6972d1402c9df',\n '0xed3f3aa4f06dac3d5a549e2a80c727d6584e2e234180eb9dfddb6888a0afcbb8',\n '0x829257ec0e6215ff9c605cc9dd998fe649923f3205ec23ee510a9e3add054f3a',\n '0x475d7797de3dabb680c82159fe5a788b17903cd9b0eaccee591602665532fe3b',\n '0x68bc424935b38c162ca051be5233affaeceb89ee1282c8ff30afcf9e0c1e524b',\n '0x06df92296b2f5c200b4d0830dfd8c5eb1328a7f9739de667e49078ddbdf717fc',\n '0xa04b134a81a293bf4cd33b403b6a6f06a26253d9f19c8059c5fa3ace3cdc09b3',\n '0xf0fdf3f8da695a2ab324ae523b14e1aa1fb526d0e14536510a7d85688c1bc282',\n '0x5e461459c42a70ed9d7f15a75ad18b3e871f60ce4d4a089b44b706ea6d068f58',\n '0xf1307f722727b541eb50b2c1dc00bcfb7db7873c98b37ebd2605441286891e57',\n '0x035fa1363e084db05ba6368ecc818ca689db1bf6fe86d15445fcea39f210a6c2',\n '0xaac09c559440134bd86d64a1ebf4a450f35343b558e7f1911dd181f809f9a25d',\n '0x594183aa0f899355a4a12fab2920ec78024e910c3e70f8a037932f3a6c0c7e1a',\n '0x8651cde8b7f81c2031efa365ed01f95b6a55afd066e0afb6af1b9327226533cd',\n '0x6823b9a249a13318810809fe055715c2824eaace594967539f41d8b4813d457f',\n '0x14d83812296b22f7f89e522f4d280949997f81993af75ccfc446e53aa49efbd1',\n '0xb2bcbf5af730e34f3735d182b4b4d04e6c68cf5507dce1b7c6092dc69bf84829',\n '0x48096c39e1b3156b5630e9513c7db166c1faa833297b602f228f8be01d43c454',\n '0xbd54b974f9ee802e904f1f3c11e97b0f811cb28c342c1c0cb592086e2738d4b4',\n '0x08f02df481cf93e1661bbce8d579bda62d380f510d4514444587323fc0339380',\n '0x2d5d8e24bfbb61e3173c6c87cb550283751276f8626ce7eb6fee8af70fd8655a',\n '0x2d3d6acf0de87cb9750f2eb631ee72e71f4cc9ba0f03ccb01fadaaac068f41c8',\n '0x21eb5f97845b28f4692be1f26acdb2af1e27b2a9d839081adcb455777799b364',\n '0xea475e9344ac4cd30a0b3ec57dfdf95e2e3ec0080b9fbcd056ab2bb9eca038b3',\n '0x31959ab1c65439f762a9670e4506f22d4c3ea8db25d61ea63b4b84fedf44c56f',\n '0xc3257efab3bec080145e1f0bd356c5538a070ddf7e877d119c131cb2f45f6d7d',\n '0x996d6454c0cda311ffc8f616c132ab73b0c02c358cb72fa235db41fb7430a3ab',\n '0xda5ceb35bfa5ed50e963cc133228da9e5e6d8b337c4ecfc1626526bf64e8eec5',\n '0xa1ec4558322acf7ee5c72a2425b4461b7e1f2a7172166ffe9ae0dc10b06724d0',\n '0x95943da7453aeffb2eb753e5d7c8abaae3556445892934ab4d10afc64c2cbc45',\n '0x00629e77f4a7b805e2d9772847aac861dbfa9805671bda2150024a4509315ed9',\n '0x83d73d6833c1169393462a7490655360d3f90a9fe29dc6e9a6b47839d598dd0c',\n '0xabce4bc31be834fe7613df5c124dbdac49532572c99212b042229801a9f5bbc9',\n '0x3fbeb0042dce817d31c841a212ed40b573f9be150923ee8ee557273f87962005',\n '0x8c5d239a7de851bb7b5a1a6735b67879ccd16ac4438c70416568d696061716c7',\n '0xd64fc670cf2df8f2fa8792c6639ff0e1c6cfbef09da9d487aa2bf94ee4b56abe',\n '0x0c6f45c71a65ecf312949469d890d464a25c253cb3c71ef705c41e90feed4c1e',\n '0x0b04935c6ba4aa6c58d86c7cbc0cb389d380b57b238065a5f6a7565391b86210',\n '0xe59ddf88b1e3da8eef2525970fb71328e45eb5d8854ef5154a9be983d2cd47cc',\n '0x5b37ce7712457278dec584ce6b4cc521aba5f5f651afafc7aa6167dd70dfedd4',\n '0xf4129202c897f55091a1998d231ad805d7013bd6c79d6499ab0aaef592c44766',\n '0x1d048c913a3b89f5a33b0e2d94af3397e7943037535c9376cd6fef6aab8c0bc5',\n '0xda35c4e6b532fa4ed5c671fda695ea23bea02cc5d80fa066e552144802636d9c',\n '0x78bb1039192657b64940eee59c4dc980abf43a8525706bacaaa93d030c090301',\n '0xb71354c01c2802f54ff77ca0132248496abb3b7e9d70615082f3b43edb7067e0',\n '0x4cea40ea0e077819daef3ee4f079e3e26876e3266f299d95fd5a4c4742dc6ecd',\n '0xfc02ad22f0c3d8cb6bd38f1ca18987d4b2e675c5c9de770a784fa855a14316c1',\n '0xfbd32ce3f61ce422a2d76958bc12e822746de0a1e23e4d37b514b72a838a44b4',\n '0x071f361aae847a89570bc4d7e22b947f8ab11ac2109425dacbd8201924ad8bee',\n '0x09e54cbe08571ae5d17b03b903d96208938d9167f4a129740824d6965b320b20',\n '0x43c9c27b35fde962c76b0099c18bca2683a65f9a173707e007eaf673ff888d9c',\n '0x2a3e26384a9cd628bd4c10f0d1f0e727695503b8327e3832d2034cd9037f3022',\n '0x30b1c2207f4a33765444df80aa6f027cf8138c3c3dcf93c2ebe57f1951462920',\n '0x8bd21b7c177c338d41115dfdbd6836e529fcf31d3586df96e71b212d85fb9c1c',\n '0x4a0f854c865feb9d4e9c55d56bb9202685d78e9870e4ef71045679b20815127b',\n '0x0b017b8b1f158ac3c0d879f78f195d5e587e17a69fdb3f00d075a05289fbfb8a',\n '0x280f3c76d96aa390d6326162368ff6b6361dc383560fa879b292a4c517ffd3f9',\n '0x88255b8292adf84b9e83f142c9dd758184f1addbc5590e12d4e9de7720f135a8',\n '0xfb72b982072892100b0402cc35795c4687c52a63b8eccb739ef005847856223c',\n '0x51c2854ada3c89ae4b246b9aea14a93dfb44bb0b3203cd34d5986c5569f84243',\n '0x67c8fad63cbbf22a2df7c3a403a937f84e5a386c936db0f9d7ae746b8b5940a0',\n '0xc93aafbffdcf5b4f25755105e42f35fff9a155306b13c56aa31be355798a3711',\n '0x62e990339363c690d82e938f987fa9a81b138600d474fa51eab8ab35e72942c0',\n '0xe393ca57a1825d10f6372e191e54da486ad8eec812727669f827519c06b1df9d',\n '0xaad2b0d1966ea74e016c1026e23e8881e22bd0e02f0a5073da7c7f7a4c41ded9',\n '0xd2683a5d4bb0b367b963f41f15e13b2a6f04a6230512218f8ec10b9341a4eff1',\n '0x47f781062a7c7b945f3538eb0af09abf1ddf31bce93ca36a39f2a01337ef4c88',\n '0xf69e4a0db1c6b1a8c846c02ca337d63818ab4f30d590ab25b0f4aa504b8f4e17',\n '0xc9ff661d1abc7eb382d3de68d3210e7ab5f8d5a1ef63ecddb37ab43615171209',\n '0xf6f68a737efc3b0180db80775dfdca21358c6890a8dc2b810f55e0f2c168b224',\n '0x16f6319630605be293f49a398e9fd4f4b17c1160346e313293e83de9e37931f1',\n '0x94d1b7aa5132c9c186dfb2821cfef2cccbcf2feb1d6f8425c65aef4ae0298648',\n '0x4f6adccb66adaff205f0dde7cfe92565aeb23d6d1f261ae157b32149fcadb5eb',\n '0x8f278dc3d569efd2377d1b1fe41bf4ac3710bc0d28ebd248c1d34c5d376ba9f4',\n '0x2c46632ef6bb8073aca6d008a2ab67c8b815f4f74c2ed144dbf3a33c2f106dc7',\n '0x192b32d67b99aac7a7b44d75bf22c35d1acc5494c81c21046bc53caeeed63a5c',\n '0x03033c845181a54d9a937c353eff8cc54f7b33714e1a10c8e04d275ab143227b',\n '0x873786fb5e2ad9b455c109f4ab91be18d481cf5e0ce363dc0b943b16a272ed97',\n '0x9eb2c49b3d7df7a1b92a8a03e9297e33faa35e584c341f4d1124fbba414650bf',\n '0x9133e920a0a38fc6770818241657bcc3139044207a3f2d30314d4578f6e9a7f3',\n '0xaa793edf7477045fb9feecf4ccc03e29f867fc9d44f4979490d378af5c07cd4e',\n '0x225d520ad0208b19ebc06346b2007844304b01d156b0307922d56bd75b297c44',\n '0x27788f13752168bafc73a281c0887655cb2ff1a0f74565de420e27da2e5ee8e8',\n '0x53d8244c22c2380207affa848c2a5f232c53a638a115690c5caf9c630b80f6cd',\n '0xfcb9426fb1f73780fa9e15941d9c10d59ecd2e55467ba074ea6790977903389d',\n '0xcd8193b5b6696cd847173f5f5c7b91872b3c84a14d482b02006c70971da2502b',\n '0xf56de7756614881c9c3dddf00cace3cd79d5ef709c1c87809b016c23ed6cf72d',\n '0xb9cf08d94db1790b8cf0ad304ba07e6525dc0b272c04a375997f5c039f07f287',\n '0x63fde19cf5a86335a323f827ddcfa438372e6e053895b56a5562e290205992cf',\n '0xff0ed31c19f60b78fbcece56ed866b4f78265fe5aa2fb1e549f87453ac6b227e',\n '0x84164daea2e2466bc8a115920408e06c023487f997b78632f43099f49e901465',\n '0xaed268a8f84d0d350ac327b913eae33ea58bd876a74d734846b921f0b185b61e',\n '0x4692cba8049ec3a84ca5f91e033b66ac66b13dcce6a7d94b974451a75b6d5749',\n '0x0efaa44570047a138eb5cdd01abe3140bf432ee4d4665249d5e2a7ab7949bb8d',\n '0xdc0674c27bc6b41fb71ccfbdcc237ab0d8298ebf31a9ff620b6b6bd90b3c6e1c',\n '0xcafa9f40733304205a53ffe6ceff6664893735c37c77b9c73e725a00201a4d8e',\n '0x63e5fc4c7169cf0bfa3ee45e3eb257b79dea100ebc97829a6f09b2746eddb20e',\n '0x1888ffe0afa6cf2f44aa999ed6cbc3d13550891d5c3010e94fce89af39ef9026',\n '0x35bfe5062f06821a83d2efedf1a7ffb9c742a685ee8431514b12ce3ccc9f5584',\n '0x573a3da949d739a9d1a0b5c74fa0f30d7f9a521b84f00269a5a94f6649ab77a3',\n '0x7976525db15d5b966085c76bc244b96d28ddc8e74c8c7c7b06f264ef59b46125',\n '0xf7302ed57ef1a681a47ecaad1373057cb49f76637b71814e2663f0d854b1a71e',\n '0x89b1e9addb66c8600ed9d81da4651e044419349fef223d6c8e48255b3b785db8',\n '0x0aa2b6f1803d241eeb60a00b2d78e3f2f9d067022a5c317afff5c8cf4c26a4c9',\n '0xa664384beb8befd7fb036710a720487a5c3599abb6f4814e6bdb36b3b25a664e',\n '0x0acc486b6921d477def8d8fb506df9a602f97d79d97d564e9c48de4d6c919fdf',\n '0x83a3b7020bee4dc4ce5195227aaa8dc96ca109aaae1349c36b6cf4db671297ed',\n '0xdef8bb8fd274ee1496a5a7d60499f41150d32e042f2843080fcc9d1247106549',\n '0x88d8ec17e1a390d6ea942b81037bca9e90144f9a17018ac227fc9b8db3944053',\n '0x924c1f3b3dd824a43d8d0fd11098790abd89aee70204e9ac4b8516e64874100e',\n '0x5cea45aa26443e1d8b7e3f32ecbf9574861c6200422e87e269cd9a2ae34c3eb3',\n '0x807d996af08d0702ab0787771c483213d3f7a4206d4fdab809cdb225dc947a31',\n '0xb3b50343738940d832846bf5897cb3606c660514e18b688f0970c30b9988858d',\n '0x582214b243ba21887053251c0c312827387a2eff8df1fca9cd029923c7f90381',\n '0xa9a8f459fac530759754222929796cf09200f6e4425ca4e427824b4a554dc097',\n '0xc96ab0c3991a8b7bb5cf3a0382d455ebbf0d4144412e6ba18d3356898b089107',\n '0x184a45659c393e26d9360ddd9b21428e0bd107889c056c7bb2a8f25ce781caf3',\n '0xa0c6b2c86177b494beb503fac7d4086dcf5f208f7b6d61d3aaac2710356d38fc',\n '0x230bc9fb8a8780c5810d1b47703eb612fba5fe2afc4bfbecf20aa8dee5e0e2c7',\n '0xfd1fc133e1f09e7a40f0a6de609220c16f8c462ee4f9d9dfd19ba810ea103ad2',\n '0xce220dbe59b0595395eba75204f6b7f3f07f88aca8d8a5e491b8a3f4dbe652ea',\n '0xf5ed14e12e49f5091ca81e26782ba8c265fbe33c33ff25c6bc047ed470648ba5',\n '0x97779cf1cba1872d072b6223bc89f6b192f76b1b8197cd0f14d527baadddc65c',\n '0xca3fe595f8e0163a7d80cdf62be0469c2370c37b248073571d54b095204dd946',\n '0xaec6b44d0bdc03e172c50536a7913fafaebe4b3985fa892daf056bb68ff23929',\n '0xb46cb59914ce60b90aba5bbdc5abfdbe0a599b1ff89506ae58de2b488a5bdeee',\n '0x624956470b3e9fbb6e029bf4980d91cd112446d81cf75e6a235a579d703296f5',\n '0x49100d6f7689bfa560ae7f052a5b05acb5045cd4dd5f3d8cc1f998e0493aa592',\n '0x4114ddf9fb7162bed20c6dd935e3106eb4471b1f53e735ea47cd8f3aff8c4948',\n '0x0a7c79b0748d1ca0d71df80486747f70539bccdf20f7012ea37a5705c3eedeed',\n '0x467d6fdc7ab5f51d71dc00679add2e82dd234010289cdc71770c28a77412f8de',\n '0x60dfe00a5ec909e3c681c3133d1866da87dc0a6e7908575268567e66673a1706',\n '0xc0bdbc238ead92593f29ecdf1926754015c53d26b6351905c771c6ade2971496',\n '0x18bdb9b16fda43420cd8b98ee2c489a13029405b78f8b0bcf8c6aaeafea2b3df',\n '0x561c3367ccd4446d0d00e3b222e5bc0e6852b045f9cbebb92b970bf0ea3d4e97',\n '0x6ae44a0d011fdf2534025a036ed9af9f46b79fc9890cfe577d67185577547182',\n '0xe48b1503de252238e9db321c39fe1230807b1325339268721a49960fb213665f',\n '0xbb9b3f760936e1de372dd16a375ef50d5095e98cb5eb916f4e58b141e194f52c',\n '0x608d43ecc45c72c1d60df1fce041b995d132e0e4611d03a3bda61cf7056817ff',\n '0x751d953144939792e5298fcf137115b4e6e13d27bdae62b456d7bbb7ddb6e5d0',\n '0x545995f8e0456e680b752010942bd26d8c806462134601899b4abe40c8f940ed',\n '0xdc91e321fe6044117582f0d496f93ecb4ecbd5fdf7091892b7efb4d95c361269',\n '0x19f1f4dc6289f5bec3f077496188fdc8d6f3ec8e080ce84495f4397443863a11',\n '0xa1989ccef8d3288ab1351711d0dc2ecbbe09df818c71ac8fea87399ce921a18b',\n '0x01fd7908e47340fb531d6be37320397924ba30d4125d7ddec0287c240913d120',\n '0xa3a5336fed6d173ceae7d2ca9835a046f7eac2bd498ce79c4d5bffabef40089a',\n '0xb90fd2dfa2e61821cf59026724a3ec389ced7455f5970dcadbd592931b40cca0',\n '0x51654f2d43493d43aafbd768cfe24936c8ba7d2df147d07739d3eb66ea971197',\n '0x3db21cecb2eb3816828dc6b74597f042df090ec06c3a3d3cdd1043e2457fbc27',\n '0xd81c752a4e183626dfbec2222d1e6187d13bb1382856d814ba9570597dadab21',\n '0x87d4ca50cea5f8721750209d3a5a246067528b4951f10060af5b2a4f1b57adcf',\n '0x7345239fa4be995f56dc8c0221c1029e38701363cfeb56fc73e9b1c1d0944396',\n '0x546b4e806036ea8dd83756df55aea7137ba75dbf54b81147e49dde878bd061ba',\n '0x59b012bc1f159a9ffa3dbf145a760c96c9909fb57a6219188cb438e57496f255',\n '0xf7e017252338c2044ec7f01a2137b373d5c659a7b565026c2cb94b0b631f744f',\n '0x09ee6a205db36d4575145d846fe509964c2d5b3d9b62d389647f8f42a7290457',\n '0x92173b9baff7c7f6786edd06abe93b7b0c40fb294efc3b3302830abbe2e245f1',\n '0xf8ffa45a25bf29da6ad547a33c6dea5134b3262bcc873773f105a0b314ee7872',\n '0x6c9f01b6c060cbb9cac6d3fdc2491d7e54eb2a0c3901e87d5471f47971a97992',\n '0x396da19ff5868d4703d1db8f21bc9e20f2701fdc32bc7d3233640897f68cb0e3',\n '0x95fc92426e8df9ac3e087bb522ce82962e5cf4a5f48ecc881398b62c5a9d4102',\n '0x9aa82c003a646a212ec73eb187fc28252158e53719593d3d969ecea14a04ff48',\n '0x9007dfca8b38b48bab5ab90665ea997b234f162459d0fc693af0f1e6c0352739',\n '0xcfc19a7f46d65f00318aa7857cc1c90b38bf966074be173e462d4017bd34ee65',\n '0x64a58da16c2da0316aa3b9e42a74f4de25a6992e218376573dca760c5c169e91',\n '0x5c4b16b4afd16209025f32e0ebc54fcbcbf95eb28fc6d749653ef82f4d42cb44',\n '0x52b6e13ce0608af2250316b268658a7e454e8738ff27ae04e5b3635876829566',\n '0xd13f5c1de63e63ce65c88cc358485e4ded2e3c5fd5e2a83b66c0fa09f6e5b483',\n '0x9ce5d113a9a98d04b58ca7c0ddcd6b9d5d6f49840cdb3baec20ace059dafdb8a',\n '0x44ee64759eb7cd564d9c4babbcce5c71e659f355aae8412fdb9fbf4c781410a1',\n '0xf55dabfa3a1ab5750a9e353680965cfd1ea9175951a0e7e550a7b61bc993e1a6',\n '0xb3a8e4dc5df0f6919dbaeecfef41917a28d6701b1cfca505003b3ead4d25c62d',\n '0xd4dd84b7aac77998fe8bb339e097cef990a0aed0afddd0a752cdf6a6f0b31517',\n '0xa81f41d10a07cd9f2fe11c277cac7c7751e326e9d147823f0775b76d7bcc89da',\n '0x363f3211f507ab6924e1b2aab37a15dbb2109bde62dbc2c9815d0390d6534740',\n '0x6ddab293623f16cb00ec9cfd6255b9c6409c89a54f6458e02568f265d8ea6070',\n '0x8f1275c519a04b5fe399ef9532bea6f3be03306aac4b1b96ee3cf45774eed7a1',\n '0x8b180dba95d09ec6d0f895699b05322994c2e916a2bfc5193d598d58c6e74890',\n '0x631561459e02a1c95104a085f51886d96f2e7b94c3839b11a59bec3a3ea12dea',\n '0x3bed0c7fd7c4d023276c7672881643baf6ab3bdf287a14e664de24e8f004679c',\n '0x019402dd8e708235f9854756103a956f7331cef6981a064bd1dacaa27fa45529',\n '0x698a28d98fee4dac7468f1e5f2959d3008be381fdb750d65ed3389ed8f5d94e5',\n '0x3033e71c0c9d314ef6d78b5e72c1d546a96e555e4312d5f0d289563b1a5b2a20',\n '0x4a1adb9e6bc60612194f2b4c908c4990bf013ad25d8b28adcbfb71ed5da32d14',\n '0x515985acf01fc772756274175329bfb4e940f2211702a19f326e6a8d3439102c',\n '0xb60e3da9172efa9bc1e89b7fa068749143408296bb46994ca1ac4a7f8842f378',\n '0xcacea65576e665401ec04e8c2ca13aa427fe2abfea55eee42158fe9fe99bdbaf',\n '0x9ebe8bfa0f90c4ea58b09e3121a2e4d1b401a62d42f71b1a04681743208b34ed',\n '0x18a23650f35c5de06459bc56e8198ca111389e6ce8af308d6637c639ff94a217',\n '0xc1e053dbfaadba047699c19b24ce34eac556eae35c5c2ef5cff4b2c006ddbf99',\n '0xa03c0e38011c43cd8577bda823dba15426256490d68c367a84051e9d7844db39',\n '0x93b44dc3900a03d875707d53859124431dd69a616810c8d58c2b7e1a86b3b347',\n '0x2a3e62d51a5f6ace046692111e47a949a4749ce433cb5b8dd989acb2e50987d8',\n '0xdc58b37051edd78f73a16e6f21a13d7246179f085c3969b6643653110ac1b7aa',\n '0x1f2d2018e4d2c774d50406da403a80db98e685d4b9ea6ae91062ffb127b34329',\n '0x8c30d75bf7abe08d2ef61b069488ba6528663d65bf20849f6ea40fbfefc0525b',\n '0xa3edda44bae3f51a68a062ecab244ed0b842aa1ab25a0b79a08776c66a3f9e88',\n '0x053ad6b3ff6a611193231159ccc341c4509547e86f25f7f6e10308d8fcc0abf8',\n '0x1338059ecbaee7ff6e52a352629580b83a801a308e34750a3aed8e928b98fde2',\n '0x975b70340e74e8dc3f394543fe427fdd6ba50c9cfbd7a3c36aeb6332138d8830',\n '0x0146a6ef2ace223acb771bd1d129de50c091bd4cfb3d4dafc40fa1bd07e0eca2',\n '0x68492ef1950e66a2ebd74260ee6ec898bbd25094aba496af12db0570fbe231ff',\n '0x6e78fff2605fe0d9854e37387331b662a20d4a4c0342980d80e4bdef9ef8f430',\n '0xb15e5139668a602a7bb54d7f9adf96d18b4e75e845076711807a9a5a3977b776',\n '0xf5e2352674182568997aee6455c6ff47abe434b916f9b3c653abeda10441f3ce',\n '0xaa63079907135e1baa8e7a40a5662efb2e18cc049a6a0821780462bca207fdcd',\n '0x8d851d5e9cd961dfc74c6508fbd3331dcc7e7dbdaf4f000da454f0ce6feadc01',\n '0x67797cd628e9509864cd61c74985a2f3a0cf0f533ef81d3cdd1002d9db15b67b',\n '0x157e0161884acc97e948b49a27ebfff84e36575c10d21b3ab5fcd1f9348a7d74',\n '0xe934ecc12bd42b8b90eef7a3b19bb894af801624c7c40d72cf01786564b315b5',\n '0x3653fe3a02180436e6298cd7116e68ef2ba3d595432df0d6a8570c65e47d057f',\n '0x2aa3d12e5b871230a4676f3aba1b6d9358b9141ec33cc3afe1f4607efa43dece',\n '0x3d26628a5216328558e38a3b54398c8d9cf1158ab8bffcb3a8f2a0289cb4b6f1',\n '0x887d202ff37a9f50aaded1dddf72471ba43ad7075fa8f6c9d1f5cd7547b8225a',\n '0x366f6f4f8840c44efb8cf90560d6a0d70c8d34f4966273239a508954bad691cf',\n '0xf90e7774ab1fc65e6c066e63ff65a0248823a20c3bd078eae8d437a28765e96f',\n '0xd16091292f3712ff21428123b489a427bd63bb3ce2a71e32322ce6c3ce278c9f',\n '0xc1f0cfdcc9cbdbfe66a3a46e2737482189a4782f70fde3f445dfdd4c25e6a969',\n '0x3221c4189debc688e743ab69253d6c407e90925c749ff5ec9728fd752db57673',\n '0x40ff4932c5feb0e6ad7db16fc00f7e7c6b36c83e963b9f61e18c0a076b86a39d',\n '0x1e827321a57d4c183d9008f6bafc52506deee36a3f147f73e9d93eb4b9210990',\n '0x037a4e6686ed754f6986cabf9e73c65ba4d4226fefb75e13cc01a8c8daac7b32',\n '0xa79febb0630bde53827462bb61dd48498c8266f26ef6906d504d50fd79383616',\n '0xb6a43c55f8595f60427a66278f8b753a322e536c0a00b0f9116fec1a1097eb93',\n '0x119f8976dd0c1d839d9dfc205c746cdacdeb7d7d5035e560b4e5b6065ddbdea6',\n '0xc236acb8871f8a7b6170125870d0a3069f1480af23a7c9ae09c68d1d4eded5be',\n '0x0c14a0890c1dca090cb1c6affac44066b77fef39638ef87be63e9f478692e506',\n '0x95480d1309155fa5a61b8a4f5bcc6acae1ef230b12d4c46d6f653146fa040f70',\n '0xad823254d9451ba358e90101f7833cf58dd1069b82cf5f5fd5bd8fb98b3f3d6b',\n '0x301e3674147434dd591adc9d80652fc7f5d9935ee01ca8eda21d9ae971af432a',\n '0x344060c566478fef208559c68d44a726ba112fe15081b53c5fbcf4cf28722218',\n '0xe09b53f2d40da84f5fff2c5426be1695a8d1a1beac5241fa6f5d90a85fd599c1',\n '0x1bcef40bb9031bf017e510cdcc22dd31b5445579a8ff42fc2c86228519f1ae3c',\n '0xfa3263805c1942c8cbc86f0d5f54774f7aea9cab7834d240cc4daff47f08f04e',\n '0x02aeff99c85b3a2675c391116af9674844ccfa98442d635d71a80b4ece715631',\n '0x4c2c2f6dc997ce19ca92f2fc3a9e56f3c191bf875b31cdd97bb77443c6466fde',\n '0x7270c91d95bdb1fbc1029c1632604e04d1a9de33f05383795b5b8f187ccb0bb8',\n '0x14395bbfc5f4a86ce7d408cf6380f5e79f5cd3568c0405259a6ee0c65a2f26ca',\n '0x3c1371713f61776ea88541e7543f11a87cdfd68206d9385dc643ccb9233cf7b5',\n '0xa23f29cbefa166bef8cf42e17b5620b5dfd2fa14d2ddccc370ebee44527d785b',\n '0x05038d3709b037ed2b75a326b00107ae81017a20cad57bae45b7c004e261ee64',\n '0xc4981101c4d53c4d77cab342cdda3e74fa0c5b594ad13ae0bc772a1b470d7555',\n '0x2edb8aa6862f1b7d1f6211518ae95219084e100d88e8605f6c37c5c55ec203de',\n '0x9fa5dc05a09d7c8fca33642b1a6c51b35ccddf134857625fa0ed26513fce9721',\n '0x66b9bb2f7e1dc8b3fd771a92a0263ae2476ee454d4c8c77e51daab32618127ce',\n '0x39bc79fdeb4dde72e1e5c347798d05ed1fb2e5785b5c3a9466c674d643e66079',\n '0x9ba9991cae6c5bed80212218e3dba91055e2dc9eaffdb1f5c5c7cc2ddba0facc',\n '0x7e03ef482851db6fd145428011bb5ea79d67913b8e66bcaff7cd1525c991e3e2',\n '0x1ab0108f2e04f93f4dc093b1431241d413d3c74fbd6cd7894ebee184c9df169e',\n '0x27fcc6ff668942174346999eb08a119071988896c67bf4bd1b486cf8c6706640',\n '0xdd14d4752ca4d378905154459ef1a16b36d7dd639c1bc28de69d077b9c99be87',\n '0xd202ed3ee642b0b5afe22feca8b1f276d5262fce5c1c46fc9aafe0c35fc1e3a1',\n '0xa040a247de59ca990bc1a500f0fa863764eac2060b8ec6135521bbf366508a75',\n '0x6bf67607961aadf0bf4040af0339130402553a189eba8000aa8cd14c58bed158',\n '0x6de71b5a0717aed1dc3ebb37b87419305a1dcb29b25418ce816f300351d480cc',\n '0xcf260055acef6cb767f6a295521cbfbc017f750a5964b24e311b44802db8b07a',\n '0x6b113d522e53bc3c1a9ee3c157e06ab2eee9244343f32cf537aa840989b01480',\n '0x73f8ca5b7e725f8b3aea4d6eb847afe9c58114589f620b46aa7401b337fb956d',\n '0x8809391f53fd9ebed4004e9d54ac7c06c7202dc3991e1a29235b93788c2cf8aa',\n '0x7f87c992d089126f39b494250d01358dc989d2bcd0a5ffe2453b830ca8aa4bb6',\n '0xf3a62502f9ad6231607777d43f01e78dcec428bbe72fd7aa3d7ab41904ef15aa',\n '0xcc8499f994aaf00c38bd090855f672965ba7229f9427f61875cbce3ec96bf5c3',\n '0xbe30e5a77db39478241a3a7761181dc973fb4b54472db763f7b7fd1ac57ccc41',\n '0x14e68c57183c705795ec8da4bc6cec081b9a207a87d68715b1f2c3d64b922138',\n '0x7e1d4099c0a9f65a4327644a98b1f9bdc351148e48519e826acbab18b544c8f4',\n '0x692510f0499eadf0d22ea18fc3a3de28e3b73a62ab4efd54e1df5189ce3b7a86',\n '0x34dbb2a239c1c8a021a4e64def959f2ed0ae055918cc8a466532727039d56b88',\n '0xc380c8905027db6af3cadf20cd717a8cbe7682483d553ae38a7afc4866797db6',\n '0x8eaf593c5ef88cde1adef27bd57a7e8d64ba03f44eb1fc591ff6fde3535c7b6f',\n '0x4c9d5354fb547a90a005d960b1e2b7500b0325e0e8cd2983b196e988a027d060',\n '0x141c4d6c51f48ecc8e99799958abf6c8ebde923a424138f878ff4e205172e549',\n '0x164b25d0b5cf6e3cd7b613fbaf2861531902c0dbf113fefed261589b4994214c',\n '0xe361d2ca457d0e7a51d651133705cb50569064d0fda71dde8cb40d034dfd0a93',\n '0x562662f8f42cb2dc53c98a43e24100012bb8d53a5b587dc28e49a560f3fb59ce',\n '0x001af63ccde7946fff1209a612f3218a0f72cd7d2e6fe1dcbda2e4598c24a57e',\n '0xe6101bdcee6a075612520baee1cadcd45e47d82b79e79bb5a9a4649fc1336e65',\n '0xd84379b3ee75b90f9b37a22cb240b09b948f9ca5ddc66d28003408ea28ce88ed',\n '0x9b3a4bcfc044cf9c080bb25ad1f7dc234acdc46a4df5080cb64ea3e7d66d7c24',\n '0xe0e9f6f9426c78d2f145488788d8258636061ca93493ddf6399fd7495d3607bb',\n '0xf4e9f2638f6a945f0d3210e122b9b953fcfd46f615de715b7d149bf9a6d3d846',\n '0x4f962e59777270ea52caf2aaa85383ae1a89c8f0d972b335f1b6ce1b6d72bfa1',\n '0x251971e2af79640033e780ccd2e3a399d5cbb88164fa06195e0a8722baa5a6a6',\n '0xa1473fb4b3cd0b22e27753515aff753c3bf3681e433c1031850bd54f02dffa3a',\n '0xfbc3c9abd3c5246bc90629b9212bcd7b46f45b2b04350b711bd08184d8797780',\n '0xde07a9c1c7cd00b0d41c8fc26af98227caea01491ab18bf8726b196a8740019e',\n '0x75c5f1d095edd3270c867f448d4942f66e7ecc5717d47d09d0700c373be3d6b9',\n '0x12cf189b189a15ad6f0719b802c2c25a504f314a60851a90a4d67605017015bb',\n '0x906431d19844a9a9e2d25d18370d78ed080325127f21a8669bf8ec9984e9afc5',\n '0x4362c1ad4694d2e2a4f7fea507dd212b421a5ee581db623ca591bb5533595a15',\n '0xc11fe140a017cebac486bb85ff773755c6d2be539d1ef291fa7e778c482e2994',\n '0x6936ff604b17b12e6c7e6a95bade0ac064c5dd4ef5828f3fb15f46ae54620ba2',\n '0xfe67fd184017ff1416c19cf2aeb4770309f708deb15304a7478b490e05bedd42',\n '0xb1807cea95115de9ffed6c3217416b9073e5b44f3362ea10aea8d43da0d58ee5',\n '0x6cb4c98f9eeb859e6303fbf18d1e06925eace60e3edd253b5e1c8a6cb9ec0a10',\n '0x01e34c7e2097b5f19480bae9e8cd7f3dd0cc34a4915b7bbfe3b22d433d9c2549',\n '0xfa047ce603838a3d3fe56ce51c8fca2cc5c6603e020f5111bdc6d154b9326748',\n '0x7a3b65ddd313eead26215479669da50351104abcd32205bed6763dd2af7a42ea',\n '0xc264c0282822edb36a4bbb886418d528835174c6bf123b2ab75518cbe985f900',\n '0x58f8560d34608f82d5ef890cd7f3d11040894f4f9d133187dc2e8be844d1ae70',\n '0x1d28efad1f49332ca07cc95a2193063d3680d241864cf74d53645cb93f2ce1e5',\n '0xf79f0e9dbcdba1c88023a11e37753181907d88be68a01e248cbceccafdf369c4',\n '0xe5949077b663aff3c3d8abe8ddc13b1ee16d8167f47de4f6905b08e733f5fee6',\n '0x1385af83ae29739684ff348e60fb29384e6fda7aa5be7fc26c7399010f8d75a4',\n '0xd26955002abc59da986a7a715a5f2b058751515cc73d7907488264c292310ea4',\n '0x445a8a326bc5c8ace5448f8084c4f130a66f650830d08c4e79c95212d7d7fe03',\n '0x60d8a84d9b841f69f7cc14820f5ebd81fc115158b8c232c067d33a63fb849e6d',\n '0xa5e68387dd0ebcc027cd66912e114f42aa5a697cf5c54dd468217597219a3853',\n '0x4453a99b91716c08f70b5ca8c54a9b611011ca3908c434f34373ef0fb5a70774',\n '0x2eb577795e3b1402b320c0d6cb22e175f73a33328135671cfd17b5e58ca79adb',\n '0x4c6dd1f54c067983299ec7ae8ade91744db06f12de3b8bce15480ecbbf4b019d',\n '0xe6f0dc2f9e75b7c1a5586e6b75629e62528f2a3807ea88a861ef058ecb362cfc',\n '0x8a075fb812e30983ec5bb28fba393dceaa5303faea98b864bf2d6a457b60e786',\n '0x691ffdd95df0d6929ad9f0d5c829d8cafe677b534a466f1b7a912cc5679fc624',\n '0x6cf5260f9683bd6d6801b8016b3f67685f22a1a966e1c9bdc4e05c4c4b87d953',\n '0x49e14923b71a44ed682d9955b77576c3a1cd52fd08869f5939dff6985f6ca5b3',\n '0xcd66a61481ca7a5fa2b09b2f5e63268d31d96e1748b3798053ea54b4404fb704',\n '0x42bd114244190f500d6ed98e59e7441a05a66051f1b731ed29bca4b86a079b10',\n '0x4a66b1d1e530347f66771a2e15e29a8ceb6cd3e2fff1c4768924679675a2fb48',\n '0x90e7d968c79a5dc7574e9cb06b1a3a9fa9e32e68aef3e3c2f63651e24a4a6b7a',\n '0x282e640cca7690adc6fad0b50aafc47577d4323c158c54b4d8b4fe9d86f4b72b',\n '0xaba77bcb24ae7e43e01fc58e9749af1202f07d160cf0a6a66a4480354fe4c8f4',\n '0xb781271b076024f96e31f547a240929c75d4ffba5b20bb319a30a8136a7a67a3',\n '0xb9ad9fa163617322f756f846b827c07e5c34e25d19cf842bcd18ae8459848a02',\n '0x207e2315cd2d7bd42098874fc3b54069f86e9b98f966804674b554178b928fb4',\n '0x961229457b800a3b3b6a8c6b5335b53ce128e786ad131f527c4a7e00d5c2b85f',\n '0x2d44ad09cbf1ba4ecbd3289aaaea246e7bd983bc8565fc3446d6dd9b33df9dec',\n '0x69b70f95b90770a599a8e037c3b2151917f68117dd92681ef4ca686c161cc59a',\n '0xa2e7ffc9c88705083f55b485a9d6338c506a52b1e6f3a7c903b09552e5f46d96',\n '0x180c5726e8c2e7a417264ba0aefd51740f29f8eb451cb05a292f567746ef6cf3',\n '0x0f1b22a93859fa026d323fd6e9d59c92105227740e23d1ae85b7995599407ec8',\n '0x5824901c19c62fb4af413a51932d697acf8387a9189b557197918b7ecd48bc15',\n '0xfe451383ec1aebc98785d4484f012f4310de1d51c12006de188bc8caa1f09675',\n '0x836f3e1d64d905ae0c85ca2c905376a000f24480ca50f5654653e25329c97afc',\n '0xadcffbded8188315514dce031e8ab1a30770dd9ed7421fe046ef4447c3a38b29',\n '0x19e6de99c718cfeb60e488903603f723769e217ae2077348385b9a6c73242425',\n '0x6c1ff5e034b98afde080fc62c10ddf4b62763c5bd2c709f519d46e046bc474d8',\n '0xf0f0091b2a73fb27d166902ea3487515f050b022533840d64cef4ad2a83664c6',\n '0xdf50303b85ba4baaf7526859e4b3fc5c209deb4742a7c44108dfcc4868bdd668',\n '0xf380b45a6aad98911127787c262afddfca6291e66e5ccc20346aa01623c48ca6',\n '0x6d8b65bf66e8e5e40cacade28c19a57388e214d693947d38a129ba0c3d45fad1',\n '0x8d89a973a55a10ce748c290ef673a2431b9615bc50ad4613865ecf96262af79d',\n '0xe3cc21ba77f5a496cdec5f088dfb8e0506c35042e2e460e997fa0c0b6891e4cc',\n '0x3b77c0a847e1d60bd35d65025a8447b4b61a86e1f74d0984bd4b3d014d064221',\n '0xe7ff7003d8a7931cd555f65f519e9ab19917f092e38cd82011dc429b82de12c0',\n '0x4de9f124b35350a56bbcc4c595f9f47764845b586be1e9d4e2aea114e3e7f3a6',\n '0xc513b59ed66970b1179ab0721acf786dc4012589b8a971ffcf2175875ec19933',\n '0xded99d7db2ccfbd6a344dc2c93d80ebcf4782a505b332f99b786d4aaae4df2fc',\n '0x5a208fd012262a05cf861874526f7a802a97cb32a1a224e6c6cd3daf30cd6a1d',\n '0xc88e0b0babcc59a1dc4fb378de585d2360b0fbb8cff7d5a22f8d6fb6f7ae5686',\n '0x410d113a9ff4ec9501695f5acbb74deae95bf38cb2be901fc7778fa9d9f7e950',\n '0x09fee9254b88f486025e2430856315bc4333cf9e76679317255c0238c5c83de3',\n '0x5df7dd6986f3c82f1acbe964555f5d44e1ec172f73f91bf82564aa86a7722b39',\n '0x19a5b76a249208ce3071b557392f60907158ccdc41412cba9532391b19129cd5',\n '0x0cc5e52346c672d61164d642c147c9b011daa1baaf876e5fc367c552aa4243f1',\n '0xa6d99619d5995b4e2408c4f0924608a93cf4547369308a58bd2d8b3761b1d611',\n '0x83c697a8cfc36e3d1b59c22338b56c8618b407e5269475342f508ccd08b36ee6',\n '0x197a3677d6cce163bbfa96265b31f4788685fef160ee6eed9027446a41dddebc',\n '0xa9616f1648fbf3ca61e841ebbe7f1fac0ee74e3d63de712c46eed20fbbfe078b',\n '0x3bbe9296c79b6b861276aeedee7a121ba54bbb34a16c13ac9680cc4c4db85113',\n '0x941052dcfac5710dda227800884949b74bc8c66bbd0c7b0564317c00d8eb7c34',\n '0x2f7d69d91b651ed14f130a09a0bc2613d86d247758f3146b503ac1112e257888',\n '0x368471f5f2cec6175e43b4bc26966b59acb964506e8c56ca32a975a87eecb8fb',\n '0x10cd3b0d6a15fa1c0fd3e22718cf8dd16c4307272a811bc342f6a74b441fed5a',\n '0x165f5e6fce50c08f67b585989c91f073e86e384f73c2ed9df688d1edc8ef259f',\n '0x03cb4a3820e030b1c6d663b6a2dede617f05f00237bbd83ae0c227e123dd9730',\n '0xb6eb77ff57c809f0f6459b3af0efbb6a4535b2f75eab08cd56c9e03476031399',\n '0x1ebe333b13a71acd695b18ea4d6c4f48f6bd5ea2a8bd874dd98e46e992d6b720',\n '0x984c42d30365b0ea74f490f07efd1a5de512e6cbed623852f4b985a288b43073',\n '0x69ac4b0744b703e578c03cdce6bfb27cff670fb03602109ce6b6f549bd261a97',\n '0xf2bdfc446395a1e7301c37c2e3b9ad6911034cdb60cc34069352b2b9574bb11f',\n '0x01b987aec1c875462448fab9d458251a317a86bd01b8a4a5aaac0187dcbc0cd4',\n '0xc3fd52c5d89764195007e901c454add7d60c3dde6dcacf67f22978f098ee9d62',\n '0x12077b480969bcab12fe989c06f734a675e6266e9a9f0970765db6398bbdabdb',\n '0x026be76bbc3209c3630a66a430afa69fc5771c1af811e37a4afde23eb1077e0c',\n '0xbea32e75e55ac7ce7efd95ad419053fbdc0ad24843bc50222bbb1bb7f9527be1',\n '0x17eb26d97882680c37a14818b077e038946f390046fe2a9ce9c0f362654a3c23',\n '0xd7dfc1b30b094d7e585c8428a13c6e2c85b790131944be038dc3e316df4f3ec5',\n '0xc29f0240a337f3e308ffa4222b1d4373596f5c3fdfe900637785d2b80c1996bd',\n '0x5caf9e2086990d1f7900b4369a86449bb0a2caaa9f8ea1955b83461963f3e52d',\n '0x4127066dddd3385bed4b706a6bb3195e5bb0bf268fa0b1f6e7b8e728ce680ecd',\n '0xf3277c397a5655bfeca9aae5fb04663a4ed7f44f8f62e33a9ceabbe38c3b3fe6',\n '0x8844429a0b158cbf5ec98fefd82f99de5536107394ed6b5e65d2037242c70ea0',\n '0xbd20ad15161904dedd3fb5438cbb1cc6e74b9dbd7164983a4cffe8a864a8820e',\n '0x75eaf7944d74bfff0e1d589d75ae735fe47e24b924467e5e7e71df67eba46f16',\n '0x2b9b4c4c70fe57e8557d6682652a968bbc65afdfc1a48116f01e0d5f9eadce2e',\n '0x3e8abf752a3d4f9803d339f0ab205ca3b8bf42a3e0945b9b4b728667dda01a1a',\n '0x0524af1f05bd84dbef1707eeeffe7260b0d9acd5d1dbfdf7a0067a25331b2b1f',\n '0x41cb08feb7b8b955ecc8945fa43a95de1b1a5f37934ab21a8b7d0bad3dff572d',\n '0xe838e19df2f96f2ed119d16beedc1f1b8f7acf57793b3b449fcf5cdd2201eca2',\n '0x2afbd305ec43127425882fb815afccee02d13aa55825e7f87512d72b7ce01384',\n '0x2a59fb832d9837c18f7d959920f87a235f51a510683e85d4bbb542d7e05a1097',\n '0x0b61217964a90e872cc756fc175f32c8792b1cedea329bb3eef884451da48693',\n '0x17ca02c7f90e0174a2bb747f508024f3ee8651073c06533c80a4700c42be73f3',\n '0xb9b5ad7a97fad11076d4a93cb77a3978e159939012a54154b2b3ee0ab5f54cdc',\n '0x7516d2fc35020e1c33a4031c284d1e922b5eda4700c26325245661c5ab6996ee',\n '0xa211a80017dca870b47b8f04e4011d69d64b597eda6e98b6cdb667879a43d1e4',\n '0xc5a91c0a9124f25bb182d6201dcb2583e463a8a615024b809c270310989dfea9',\n '0x2966df6bbabf0880a7180e42cea49750b1766e4d32a4e1bc8d8a69b00a840bf1',\n '0xcad7f6e2a6036771fabe657895d3d084712d61a58b73db8fd41500e2836e7b3a',\n '0xf557f0268828de290dbee736744c237a0365711fe9bb71d640bf6491cba1cb11',\n '0x16f997085d4954ba8bcbd8a739b93dea6257dafdc3b4c5f1f4fd68d4a1f7c3bf',\n '0x8affdbc2453c0c6e47af8ba119e9691f8320d563db5401fc79295e0d76f16e01',\n '0x61ce88e1a265209bf386dcd73dab4b1a8f7ca4e8bfb62a823898013192790aa2',\n '0xaa3b0fb337ec944f0bcb9608af637c4fc73b7f82fd1f5d4a2f50dfc5e3b5e6a8',\n '0x36f66c3cb95c638e36ac419246f5391cd055b776692d24c9c2c818caeeb863d6',\n '0xd2a433dd758b29659ba4af33ef8615e7c7f43460733c9f6074f2c609c61a4bcc',\n '0xd3191fbaf99ba1da4502980105c9ef84bbfb309bd3ef88de81c4e4bdaffe9d64',\n '0x765821d33bb7cf91bf09a0932ee90953fb961ca911d4cc758fef1376b5be428d',\n '0x9844bdbcdd81a6db4625fb8ad1d1546453ffd931270b3f9ab562f8de7d1127bf',\n '0xc62e5f9907de5575b015a18e7412f49f6a3d73ce1245a450e2e09dbd3193e26e',\n '0x719b66806b7daad5ff91afbce551de50454d6d30e92a79566e309275669a80c9',\n '0x88c3282c1daea1f05e71467f49e568c0569789b8363af2a9bb642f2dbf4021b0',\n '0xcefdadd7ed8ca65757ab7a0d7cd4029b4bfdd3dd49b730e42e9620588ee3420c',\n '0x5b9a48c41db1cfcaf866f6a4911f72055ac42c4149e01930f9e7f9ede63099ed',\n '0xc1388951f9783dd896bca5634a98c020a51f59d79065f1dd6aabddba90c7a7af',\n '0xee3eaaf50a980a0b5dfa3b89d0a1408f43e3bb5188cafd7955112e530b882926',\n '0xd56e9cae4d5d6cabf2e8aa8da7b966fa0a1440ab5d9af192057bb8e14b6bc0da',\n '0xb72a1b54c5ac3d165f8ea4bbb8e2e997b98e7a655f269f67411fe48be8357c8a',\n '0x52579eb6073dd96f2dc424a5f077b17e0495ef6db320d94e14788df367c77012',\n '0x581e0989f5c44d922685d8832a6136197b783728399d5845e793c33b4f7e0130',\n '0xd96515c22e73275b79a81b1d45161eed1cbea9b85c830600a339a7d0e6554c10',\n '0xf8aba46eb22c0137213d9256cf36db732a01a5a2da969df81650e588b0c83259',\n '0x66847f82032afdfc8fda42c7e9e15aff6d41c2256488091090a9a2b7147aafc3',\n '0x3b9a3361226e2ed10640a78a34db49061393f05ae74ae177e6ec51eacdb4c2dc',\n '0xd810ff0620d5a777351fed97a86db0c55cbfb64d31d70c50ddabd68f9fe7f4b1',\n '0x342e2aaea92b39b66dc4b78943123845875b330447aa82b8bc5b30d743425f55',\n '0xa2038c3e00a667cac88c382b8add1d2e9edf90f34d3a2171fcc205fe3d343080',\n '0xe7e7a3dc0a544a2ffd4c5bcea3a218eaebc8ca418c513a2bad1509286164bf28',\n '0x94f7593911032045ad8e441e230237b555bd39aca5d5c53302d8155e8cf50f4d',\n '0x616095856266c3efc5ef398cbf540ee6cb31d62ac2b015494a1cd1bdadd2a5aa',\n '0x645d44d9eeafcfb7baca67e89ce3353c4dfdc7f145b487c2ccf992dca4cdbccb',\n '0xcfec16cad312abd47ea35904c1a362a676747fe489d57a5fff7d4f252317c5a0',\n '0x8fd326923e9f5ae4f434f0cafbb9d5df892539cf6ee9928aa3d3fa18d961fda6',\n '0xc92706a528b14d17fb92b997b8a9b6d7950c83ec5ab94f765b94f2d4154afbed',\n '0x6cb05a14a657ec21d7fd195e2e58832e5e8b58684240f5737466276d3bcecbab',\n '0x3dbe6262dd2d81019421271164a1ee470259ff5051dbf697b0f736c6898cd0f1',\n '0x49766b099f821560391ae554472b408ee22a2c8086f9029479f24452a0e4a652',\n '0x3f688b5b2932481882a5b15343c0355cc858ecd287486c974e7f391aae950633',\n '0x8a60949f51d4db84835774e61f93b9e7728ca3cfa1b82c679d1b7b3c18a8057b',\n '0xd4dc37ae956b51008f9253815c91ee47d4c0bdafa8bdc836541b93ca3e8b6d67',\n '0x6d8986f29a911611e23c3417c54c2b15976c99fb4486cff8cad3a3d65c69255c',\n '0x48dd0a1a2c6db46e2fbf3cc435988f3fb7bc41dd570910ca5c25c643ca584c96',\n '0x4c8d3ee82fc1867276b6bf890fe6a9035569579f3594ce08bcf3781291ff8b17',\n '0x3da72acea86730bf8e94001a53088e9ed7d9e6dbf7d9ff1f6ec40ee8711b3933',\n '0xa3a5f74a80e6099c0af75dbcf94206864d142a21b254c370ad1e126a793aae8d',\n '0x43c358cc779963b762affbb07395ea6e09c4df395c7707c47643d03fc9854ba8',\n '0x194e43f1426460e3ce4810b20b4c1ca69a98ee1390337253b84eb41158a41877',\n '0x18558e5e5f28ae01ef5c5417f0c2ed51dfc865186a8151296b9f12288dda6373',\n '0x2597fa8187c3d6c24c83d73655ca520be199ee2b8f323605f890142b75a5066c',\n '0x63a5c6c64aafe7de3e4b7effec435d9c028c7a5719da6a2a68140ee1058384d3',\n '0xc731a7af9e4a7c2e51bbbf7f2ebacdcfc6e18570b8a2ac40de85304d461cec36',\n '0xe5460b97fcaa4e7ed066ff5f18b2b719610e977af42515be30437212e6fb33b2',\n '0x4e591edd8a83a5349e95b2886739e3f4189b3897f3774358ead85f6e9c93bb21',\n '0x8f346718a81bdcb10c2e6507b47e75349fc4bc677fa7f22660cc6c0c7f0d0718',\n '0x26b37468d62a8ece94a56faf2bbf755a8302a677809ab1aed7eb5d5e98716c05',\n '0xf6e44901f3fa1f51538210d827f7a42eba640b006f56d00da12e9442bdedbe63',\n '0x4fdf48f84a3b5b3a5840511b262974e5b4dc3b7919f5abfa8c3f8c61736a4d97',\n '0xaf7a80a79a8a60b6b9ba48215fdae54a9b8ff1d69406d8dc793b0036e35aaf1f',\n '0xef708b241b407424862d77cd167b3043a4a219c5e41a7a1b52ecba7146a2446f',\n '0x98065959c2095cf77d3ca133a2eee5b83f03f90c6c8648eb0486db4deab6639a',\n '0x393c9607c323e15e0da0c8b573f5b531f5b4b645524d4c16ccdcd8cff704ddda',\n '0xfd020cb1fdbd62d70f0ca3fa37c9237af84c70ca8bae66b12d61099c277cf917',\n '0xead886b7049edf75adc3bf45801450777b526d8bb9969311ae31956d88ee70a3',\n '0xfcd04259bdb9872f9732d7d7c6b78e54d11a183aa641176db7cced7a3078ef0d',\n '0x3de289bbcc47d74b7255618e94777a2c9a488dff67c19303f2681a087ce00a7b',\n '0x2f8d0f1403d8b6a18b701779b5097531f25281b2fb51593259aaa6bf79123a46',\n '0xd0e5075f7b07062e78e2ccc9144f28d3172717cf19ba3984b850ab8d7b2210e2',\n '0x42790f00ca68528e1db8d357b56f411fa2dc50b57b74fe195055f06e77849229',\n '0xde991a218cad10201e58360f9ba420257107ff7accf31ba8526c6eb83c254ff5',\n '0x0108f30a783141bec020aa415b131038133169241e782ab9da992ca0db4d7b84',\n '0x565c8d9d8c31e748534b35ef4442837d41dee1cda71aa784e64200f18981a0fb',\n '0x223924ac36af46d0aeb64c7fb073401049cc7a1c9092260a127d6f81d6e04803',\n '0x7e552e05d135465a93751ff2d4d7d565a1582b9c98608daa7b569eaa2375990a',\n '0x68547e436ab3b52023e4236900d53ddba894d62ff9f6e6ddc81b6b75300eaedd',\n '0xff787f4024225b9a1d2aad125b2aafd2ca1d430caad1d7e5cdf75690959e99dc',\n '0x35273a212141666434b161ab9ae7542308e38172f729ca3dca02d9b0b15cba5c',\n '0xa6c02fcd5db02ee0da9aa4b9e82b4942523cfc90af6d59d22ccc07ac421a72ee',\n '0xa32a04f09d6c3d3f7c64501aabe0f8d4211e5d91171aaa0627f9596379bb6694',\n '0x25bf5cf1b01d88c1b9fdebf09613e658d2980e04edb5e6a4242a725de434f11a',\n '0x8118adcb20a73c80edcb9df20c8c48011475c6ccca4a53d26715af96922f7c7d',\n '0x81cc018a5b9f96f5ce17b3cbe6abf03939fcc6384367a355017a05c776d0248b',\n '0x66ff44f57865ddfb309b4470e0d07437ffd41376360a766295e295b3efc99d27',\n '0x1071124875a4fd2cfb95969fbaf07840c4414541e3c45e7354f3ac38893d934a',\n '0x6463f5619a881165a1b404b8c3bfb1c6f92fb655d66fbaebdd698c11a7469b0e',\n '0x7d50ed9ab4239c30b33efe76646c5a2435baf7747514163dea3f26a0d6a8e43f',\n '0xaa608167834a955383abb0bd0c9af8b9a4a2063efb94aedcaf90d190bd2d6377',\n '0x6acdfaf17eb6d5185c348aca0db2735e6af191e30dae42672fcdc585a984aade',\n '0x233c256b0da347a6942973ec256abae3b1dd0a9030ca1bbe02d753cefa5b5ec4',\n '0x3867d7d75db50fb316428e932b57fea0b38b600cbec211402beb01e0856b3826',\n '0x05d66af0698e4057151c086ef5598cc2b6dcb1bcc26372232a4d5805a5297a49',\n '0x41443fd11b5c55ea72e310df61eb6f755631fa8b4fada6fb74be37a2cba89929',\n '0x61f913645cc8cb501f37c3180b9deb566f7a6dbb96cb63f374d30592713d0188',\n '0xe5f9d4a136aca4be3a337bffed8acc64569369affecfaa6bb2ab28a66bbda80a',\n '0x9dbd7776efd284cc7b8ce7032b4b4a2282c8e376b1341ba31155a5f4f0827753',\n '0x472cd0d918235e18197b5b05c14b1f279d69c309dbce11bfbccdb64c7f935ad3',\n '0xd2ddc011454c18eee0a3f752f38391f1b7e9cf8abfb68c7617225a8011ab437c',\n '0x90062810a3a80b9c177aa2749189bb52ed4de1b3d246e8c56df3a4ace338f36e',\n '0xede402f9773fb9b43ace6d855a40c84c1f84d7902b4edfc4c4e5d43162a90f7f',\n '0x005402d882d2a853bfce8d8ac2b07d70b930466430c81890f3f03f75d6d6be4c',\n '0x744ff68f05bc6ca9b46d9e9f222832c4ffb78cfe3c11eb72dcbce59dbfd16e9c',\n '0x8314c02d60105b1f6880f824ef0ab5bb0aef4dd9ff20a121b0dd1ee5799baa24',\n '0x1ebab19137d3de0a6513087a2de271fb3f731ad139f1702450668b5800a8a6ab',\n '0xf34c726cbfb3e50228459d9fded378eef58da6e68a22075942dc7402a4aedde5',\n '0xd7fe7c3cbb4aebdaa0fbe66fda698f86806ee86005d46d34c0b51b6402e64915',\n '0x416e734053b3d631b3ade5e897e5a99b483d02dd9c2a57b38f04cb26fec5479c',\n '0xdec8474f2647825ff5bc196b6ac0d0c5eeb72fabbe94c5a9940c7d4c741a9a14',\n '0x61b845a8dd67a9d182430bce15dbd8a84e41f55e52c5eb615647e2084213d34d',\n '0x92f2bb6f43b4ea3a4dc8471129e2d8cf8b1ee8db3cabcc8de1f7413cb1ac9596',\n '0x16b224dbfd77841f47aff8ba8a3940681c147bc6dae91a21b008e847ade790fb',\n '0xf619fc6431e78efcb2365c9107650a8887fda06e0389f0a5173e91794b26e4a6',\n '0xbc3ddcf1da421bbf59e69c5892ef0fd807bba411108101ac633ad7c85eae9e7b',\n '0x9efd2fbe6d89cc53dc66d77e191b153c26a697d83f891be95ff7317617953f9c',\n '0x90d44435a20daa15d7bebaf3f5d9b142ed00f1d091055b910750676e93f113ab',\n '0x1a7d50ba7f8553c6f52a4d1c68902d1aa7760356cff548e9d1ae3c88725233f5',\n '0x58b8d815135981fe93ab26c5913948bed5935dbf3c9eb37e5eef09d9ae3b3f66',\n '0x0bbf091ce7e67a75aec04926820275feb10c6592a589e158cb8d69861a8faaf4',\n '0x3916d5f434db8d4484ae1eac9e41b52fa7c7533455c981de7fc5c1a71eb8f724',\n '0xbf41db3b3f68f8f63eeaebd5bc1ce2415d040b7b94500f7282c089f53419d2db',\n '0x34b93b01752e33a163b5a7df9d4e617b1890735018f0587c79882446f1d26c23',\n '0xa577f1737d0cfa5086e1f08361f3b6862073a8b3e46f1c0bdec250868496cfc1',\n '0x6225bab88e36f6dab56d68746628df81ce9928c6e4bf850834b3119e3ee39a54',\n '0x24384e8256a5020dc0812203941ee3309a7826f55578bf968aa840fd816ef272',\n '0x5042b8012bc4509d58c3a74de1e4f743ed9a77cd01c937d70d4df6b453ca1514',\n '0xad2ff5d291987d56635a2bbe71b3443238f023496a0de43995090cc422451bc7',\n '0x776bdf8e95719b87d556ed4f57368bb7f532bf9a75eb0bc84ddab73e0502a4d5',\n '0x1f880e338264fc4f52e8dc943cbce87eb444b9f785731217e8052d3eb5a3e720',\n '0xb4fddb24061260b3bbc9096678fe3c4c590c085b35ce127be453998d7773ab17',\n '0xe17c40451bb94283c6deec2bf4c1952f779c19a248924ec193e9df1f25fbf6b3',\n '0xb0451623cfa97aa6fb25929409d2f0ec3ba40c28507db206ea960919cbeba81c',\n '0xf39b158290c97c6df0c9e3370f7c0f6f385141f5db121b7c5c633db1ee2bba6f',\n '0xee77fa0fd0faa35bc045e7992710498b509a9e574d8c2ddbf14f391ce99e2acc',\n '0x8533c43a65eee30897d534ac754be370da202ae747b3250be3cf03d35c67f05e',\n '0x7cd8e10cfa247b21bf007ef8e46ade3b0fafc99c673a0fd3122e20a6d8ea897e',\n '0xbfff1a8408d4d0bc0d1cd54d0337850196d10be88ce3428cf98e56691452cede',\n '0x16b442338667e68f2fa4c65e35335ef9df31338820f3d48bc2bc09b268333ef2',\n '0x6286b1809a3dedc625cda2ed8eb4136f60d90afdb27a53890cf4106daa4cfc9d',\n '0x8fec825b3726d94aa02fe61d66e9839f7595e19ba28e93ddbfa9c2213c4e8694',\n '0xb066dd2176df6e34d637e9e91c6928119dde9710c0861b49dbed52fecd69d6e5',\n '0x04ceaddd1c4a3a5139925aec1ba6c49e37ea3d981d61321ead805d34b6c39593',\n '0x59134606cbd11c68629c820f2252f1d0695037a3325be1b7548862d1c0595d12',\n '0xcb0ae0cd8c5824874a0c14726dd0448bba3d64e443756282d52b87a2b86d85ff',\n '0xdd9c6c417927984d38e9cf3c3f09a07e30d245d6ceccc5232376887608f892d9',\n '0xb7c81bf97b27c1fc9c444b78c69297080233ead5c9c251001efc35d9fb442f3a',\n '0xa215a0cba987bb0b865220fdb06ff1f97ee3f8ffdb15f8121cdfe472b4cccb35',\n '0x2bf1ceb64485d63d01fd60bbd889f1168a11e68a148c7365c3eba39d39bf3729',\n '0xa0cd6935872254a63e9289ddeb822fc540ec65f804098e9adcfe808c7f3780b9',\n '0xb6acf2618e3e482000c5bd19e0b20545fd2f9f44aa3a8984bd1ad94370382109',\n '0xb48fd08b1d3e0bcb13527fc60d8d07f1192d31f583111b092338ec26b974f141',\n '0x4f39409c5560810fabef19ecd5149d65b356eff444fba8d53f308f3c66918b1f',\n '0x04be8576dacfb31da83ef6a803defef1fad8ce1dae79e991fa2e7c29a29555e4',\n '0xf2bc272c87fccf593f1de5b2ddb9fb0181c8bd78592b2bcb47e493e47d0da26c',\n '0xcd177e97af23751a5cb2e9cc657532c9d0ab42a1fe7acf256ac1261a938e3ff8',\n '0x167412a9319d59490ed07f97aa7b529fedcb66db571cd83ba7aea8bc5979b3d7',\n '0x642e57d2c89db906ed876864ff25249d8edd29013b14ee02c5db66f87e85fae9',\n '0xf8ef81068322770dcbebba941f38abc23f60ef5196e4d6dac830b69591fec8f9',\n '0x6793117f70c7ca60a0c342d1992a971c27845bf24a4031c494ffe34cddcb433f',\n '0xe83378bd92ea696d41117746797f96ec263f6dcbe7e577e99bccb4004b4c7533',\n '0x6742966fd92709a95b662fee8d3f972a312583e03dc4ec1e2cbc731aab35a9ed',\n '0x394c2541148eb12603e733df6c52bc0a1eb6738e96ba0ba771b480e8beb802a8',\n '0xd51353e6a4515f1789662da44c6ffd9fcfe269b2b224dd1b32ca405394351806',\n '0x9f419c99adddfd0daa57a9499046850bd7495429b7f53bfe5393be9be084490d',\n '0x0aba47da83c3acde9bda4ba49e4b2d8720b06d03270a14c7e47beefff5cb6ddc',\n '0xa395e131536dd217424ff850a8d08844d04af160c46f0375c11643344907fce8',\n '0x5103b075bc1ce72142ddf8f7d8a9aca4a5af85e6160e27170d24a3a8cc544bf6',\n '0xd2d586a17bfefd7104e6d18e7770503eb7cf8314be1242da65a5a34c21dea0cc',\n '0x3f072c49f916d28a64aa6d5e3a421953c1f829fc1575f2b90aafa9f16f051990',\n '0x682eac7374b7bc5b07f89f1d368c968e6edad0e3222fd238dbf0bcec3c3a90fe',\n '0x00d4800306b1d9d1d314175fabfb3ccc0acecc2947b4c1326d943d8145a8d6dd',\n '0xbc47028d01cfe0e6c3b25feab9197e3f35cdec6757e2bc8190fdd5ecb5f0c53a',\n '0x4fcf31e40d7760ee651c868702d5b6918d54384be5d7fa8c47117c7497df22cf',\n '0xae3a7a76f00c1fdfe3f09b0981ea0689673ae130080a3bc456b9753dc74e141f',\n '0xc4da6d2d58cba3e58efe112c5b4f806641bd8e98b012381fd915de0359800913',\n '0xdf4b3d4aaacd3fa2bfe3da2a28b608bb6ad74f5595741ebd0f8b4c34459e0e5b',\n '0xecc60e1b9c3b21f7dece0d1da1da482762678745c4681128042748648656deb7',\n '0x825a21523deb08ffe967047d9ae76e6a03f24c13b8201f7cab37005fd08ed6f1',\n '0x88e5128d2c8ad94423b1060f3bbcde104f35ff7a49d2a9fc6dfb07e210a84236',\n '0x8045e771ecd3c409c4245a003887b90964e31b63717252cfe4cd13d86ceaa2c3',\n '0xbd494f677ec2361dda0fefe2ec9689f8d4c8ab585e5a39884290850e5a4e28df',\n];\n\nexport const DYNAMIC_COLLECTION_IDS = [\n '67aca668-31b0-4713-91cf-079d392b041a', // Kumo\n\t'b5d64823-54b5-43ff-b58f-8b8abf08d27b', // Hunting Snake Legends\n\t'5ea655c3-b8f9-4882-9090-3c59d1635d00', // Fever Maniac\n\t'f7ccba9d-04f8-49c4-8e1f-d264b122584d', // SuiFrens: Capys\n\t'a8c93237-922f-4d6c-825f-bdcbc4bf10fc', // Anima Genesis Avatars\n '6a5dda9e-aaa8-4f0e-be53-336ae2121c9c', // Capybara Money Bag Mystery\n 'fdf8a578-2914-47aa-a318-3a0a80b29025', // Phantom Froze Over\n '75381a59-abde-4e4b-aac9-b1c5ba10b4da', // Claynosaurz: Phantom Purr-ize Patch\n];\n\nexport const XOCIETY_FRONTIER_COLLECTION_ID = '9a0fcf4f-c77c-42d8-acad-5054e025eb53';\n\nexport type CustomTransferRuleConfig = {\n\tmoduleName: string;\n\tpackageId: string;\n\tparams: Record<string, string>;\n};\n\nexport const CUSTOM_TRANSFER_RULES_BY_COLLECTION: Record<string, CustomTransferRuleConfig[]> = {\n\t'fb51fc70-8263-42a3-8999-6430a7c76fe6': [ // Pawtato Land\n\t\t{\n\t\t\tmoduleName: 'table_allowlist_rule',\n\t\t\tpackageId: '0x7c369055372dc2ca64563911d51fc7e5ff8e162a8a6c5be3301b3831d21917ca',\n\t\t\tparams: {\n\t\t\t\tregistryId: '0xafd3fdce255b81f0a4d2221d42dd50fddb933496137248efeca8d3853da78ba9',\n\t\t\t},\n\t\t},\n\t],\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchNftById = gql`\n\tquery fetchNftById($nftId: uuid!) {\n\t\tnfts(where: { id: { _eq: $nftId } }) {\n\t\t\tid\n\t\t\ttoken_id\n\t\t\tcollection_id\n\t\t\tproperties\n\t\t\tchain_state\n\t\t\tlisted\n\t\t\towner\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tlistings(where: { listed: { _eq: true } }) {\n\t\t\t\tprice\n\t\t\t\tnonce\n\t\t\t\tmarket_name\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const fetchNftsById = gql`\n\tquery fetchNftsById($nftIds: [uuid!]) {\n\t\tnfts(where: { id: { _in: $nftIds } }) {\n\t\t\tid\n\t\t\ttoken_id\n\t\t\tcollection_id\n\t\t\tproperties\n\t\t\tchain_state\n\t\t\tlisted\n\t\t\towner\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const fetchNftsWithListingsById = gql`\n\tquery fetchNftsWithListingsById($nftIds: [uuid!]) {\n\t\tnfts(where: { id: { _in: $nftIds } }) {\n\t\t\tid\n\t\t\ttoken_id\n\t\t\tcollection_id\n\t\t\tproperties\n\t\t\tchain_state\n\t\t\tlisted\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tlistings {\n\t\t\t\tlisted\n\t\t\t\tmarket_name\n\t\t\t\tprice\n\t\t\t\tnonce\n\t\t\t\tseller\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n","interface CollectionChainState {\n\tnft_type: string;\n}\n\ninterface NFT {\n\tproperties?: {\n\t\tnft_type?: string;\n\t};\n\tcontract?: {\n\t\tproperties?: {\n\t\t\tnft_type?: string;\n\t\t};\n\t};\n}\n\nexport const getNftType = ({\n\tcollectionId,\n\tcollectionChainState,\n\tnft,\n}: {\n\tcollectionId: string;\n\tcollectionChainState?: CollectionChainState;\n\tnft?: NFT;\n}): string => {\n\tif (collectionId === 'a6fabb11-4713-4203-bce8-a3c4f673b5a7') {\n\t\t// dungeon move, each nft has different type based off it's identity, so use nft.properties.nft_type\n\t\treturn nft?.properties?.nft_type;\n\t}\n\n\tif (collectionChainState?.nft_type) return collectionChainState.nft_type;\n\n\tlet nftType = nft?.properties?.nft_type;\n\tif (!nftType || nftType?.split('::')?.length <= 1) {\n\t\tnftType = nft?.contract?.properties?.nft_type;\n\t}\n\n\treturn nftType ?? '';\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchSharedObjectsByType = gql`\n\tquery fetchSharedObjectsByType($type: String!) {\n\t\tsharedObjects: shared_objects_by_type(type: $type) {\n\t\t\tid\n\t\t\tmodule\n\t\t\tpkg\n\t\t\ttype\n\t\t}\n\t}\n`;\n","export const addLeadingZerosAfter0x = (str: string): string =>\n\t`0x${str?.replace('0x', '').padStart(64, '0')}`;\n","import {\n\tCRYPTOPEDIA_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tFUDDIES_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tGNOMES_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tNOVAGEN_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tSACABAM_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tSTORKS_ORIGIN_BYTE_ALLOW_LIST,\n\tSUISHI_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n\tSUI_ECOSYSTEM_ORIGIN_BYTE_ALLOW_LIST_OBJECT,\n} from '../constants';\nimport { gqlChainRequest } from '../graphql/gqlChainRequest';\nimport { fetchSharedObjectsByType } from '../graphql/queries/fetchSharedObjectsByType';\nimport { addLeadingZerosAfter0x } from '../utils/addLeadingZerosAfter0x';\n\nexport type SuiSharedObjects = {\n\torderbook: string;\n\tcollection: string;\n\troyaltyStrategy: string;\n\tkeepsakeRoyaltyStrategy: string;\n\ttransferPolicy: string;\n\tmarketplace: string;\n\tallowList: string;\n};\n\nexport const getSharedObjects = async (nftType: string): Promise<SuiSharedObjects> => {\n\tconst nftTypeSplit = nftType?.split('::');\n\tif (nftTypeSplit?.[0]) nftTypeSplit[0] = addLeadingZerosAfter0x(nftTypeSplit[0]);\n\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchSharedObjectsByType,\n\t\tvariables: { type: nftTypeSplit?.join('::') },\n\t});\n\n\tlet allowList = res?.sharedObjects?.filter((object: any) => object?.module === 'allowlist')?.[0]\n\t\t?.id;\n\tif (!allowList) allowList = ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\tif (\n\t\tnftType === '0x5f1fa51a6d5c52df7dfe0ff7efaab7cc769d81e51cf208a424e455575aa1ed7a::stork::Stork'\n\t) {\n\t\tallowList = STORKS_ORIGIN_BYTE_ALLOW_LIST;\n\t}\n\n\tif (\n\t\tnftType === '0xf1681f601a1c021a0b4c8c8859d50917308fcbebfd19364c4e856ac670bb8496::suishi::Suishi'\n\t) {\n\t\tallowList = SUISHI_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tif (\n\t\tnftType?.includes(\n\t\t\t'ac176715abe5bcdaae627c5048958bbe320a8474f524674f3278e31af3c8b86b::fuddies::Fuddies',\n\t\t)\n\t) {\n\t\tallowList = FUDDIES_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tif (\n\t\tnftType ===\n\t\t'0x71bd3651e47a7590e607b976a332338e2230e995fa96de430703af537086b643::cryptopedia::Cryptopedia'\n\t) {\n\t\tallowList = CRYPTOPEDIA_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tif (\n\t\tnftType === '0xe81341eba87d19f8d53ee237b3666cff6a74c9fd7a960cf5753af69bc7c6a221::gnomes::Gnome'\n\t) {\n\t\tallowList = GNOMES_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tif (\n\t\tnftType ===\n\t\t'0x7f481ffff2b72f3f1d9b70d5ad999d8b514a6281aa29aedbb6c537bd4b0d04ad::sacabam::Sacabam'\n\t) {\n\t\tallowList = SACABAM_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tif (\n\t\tnftType ===\n\t\t'0x5fe8e884960f6977f813d871a3d43049d72d19d4ad07819b979c06434f60af4d::mint::SuiEcosystemNFT'\n\t) {\n\t\tallowList = SUI_ECOSYSTEM_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tif (\n\t\tnftType ===\n\t\t'0xf417417b1914266b634b3dc90050be9f28fb755e9d29f36d1892012e0ad6f816::novagen::Novagen'\n\t) {\n\t\tallowList = NOVAGEN_ORIGIN_BYTE_ALLOW_LIST_OBJECT;\n\t}\n\n\tconst transferPolicy = res?.sharedObjects?.filter(\n\t\t(object: any) => object?.module === 'transfer_policy',\n\t)?.[0]?.id;\n\n\tlet orderbook = res?.sharedObjects?.filter((object: any) => object?.module === 'orderbook')?.[0]\n\t\t?.id;\n\n\tif (nftTypeSplit?.join('::')?.includes('keepsake_nft::KEEPSAKE')) {\n\t\torderbook = null;\n\t}\n\n\treturn {\n\t\torderbook,\n\t\tcollection: res?.sharedObjects?.filter((object: any) => object?.module === 'collection')?.[0]\n\t\t\t?.id,\n\t\tmarketplace: res?.sharedObjects?.filter((object: any) => object?.module === 'marketplace')?.[0]\n\t\t\t?.id,\n\t\troyaltyStrategy: res?.sharedObjects?.filter(\n\t\t\t(object: any) => object?.module === 'royalty_strategy_bps',\n\t\t)?.[0]?.id,\n\t\tkeepsakeRoyaltyStrategy: res?.sharedObjects?.filter(\n\t\t\t(object: any) => object?.module === 'keepsake_royalties',\n\t\t)?.[0]?.id,\n\t\ttransferPolicy,\n\t\tallowList,\n\t};\n};\n","import { type TransactionObjectInput } from '@mysten/sui/dist/cjs/transactions';\nimport { normalizeSuiObjectId } from '@mysten/sui/utils';\nimport {\n\tBLUEMOVE_CREATOR_CONFIG_OBJECT,\n\tBLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT,\n\tBLUEMOVE_KIOSK_OFFER_COLLECTION_BIDDER_BAG,\n\tBLUEMOVE_KIOSK_OFFER_COLLECTION_DATA_OBJECT,\n\tBLUEMOVE_MARKET_CONFIG_OBJECT,\n\tBLUEMOVE_OFFER_COLLECTION_DATA_OBJECT,\n\tBLUEMOVE_ROYALTY_COLLECTION_OBJECT,\n\tTOCEN_MARKETPLACE_OBJECT,\n\tTRADEPORT_BIDDING_STORE,\n} from '../../constants';\nimport { getRoyaltyRuleModule } from '../../helpers/getRoyaltyRuleModule';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { hasPersonalKioskRule } from '../../helpers/hasPersonalKioskRule';\nimport { hasNativeKioskTransferPolicyRules } from '../../helpers/hasTransferPolicyRules';\nimport { isSingleBid } from '../../helpers/isSIngleBid';\nimport { assertNftInSharedKiosk } from '../../helpers/kiosk/assertNftInSharedKiosk';\nimport { getRulePackageId } from '../../helpers/kiosk/getRulePackageId';\nimport { isBluemoveKioskBid } from '../../helpers/kiosk/isBluemoveKioskBid';\nimport { isTradePortKioskBid } from '../../helpers/kiosk/isTradePortKioskBid';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { takeAndBorrowNftFromKiosk } from '../../helpers/kiosk/takeAndBorrowNftFromKiosk';\nimport { confirmOBTranfer } from '../../helpers/originByte/confirmOBTranfer';\nimport { depositItemIntoOBKiosk } from '../../helpers/originByte/depositNftIntoOBKiosk';\nimport { getOrCreateOBKiosk } from '../../helpers/originByte/getOrCreateOBKiosk';\nimport { isOriginByteBid } from '../../helpers/originByte/isOriginByteBid';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { shareOriginByteKiosk } from '../../helpers/originByte/shareOriginByteKiosk';\nimport { getObjectType } from '../../helpers/rpc/getObjectType';\nimport {\n\taddSingleBidAcceptNftBidTx,\n\taddTradeportKioskAcceptNftBidTx,\n} from '../acceptNftBids/addAcceptNftBidTxs';\nimport { addOriginByteUnlistTx } from '../unlistListings/addUnlistListingTxs';\nimport { type AcceptCollectionBidTx } from './acceptCollectionBid';\n\nexport function addTradeportAcceptCollectionBidTx({\n\ttx,\n\tsharedObjects,\n\tnftTokenId,\n\tnftType,\n\titemTakenOutOfNativeKiosk,\n\tbidNonce,\n}: AcceptCollectionBidTx) {\n\tconst { collection, royaltyStrategy } = sharedObjects ?? {};\n\n\tif (collection && royaltyStrategy) {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::ob_accept_bid',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_BIDDING_STORE),\n\t\t\t\ttx.pure.address(bidNonce),\n\t\t\t\titemTakenOutOfNativeKiosk ? tx.object(itemTakenOutOfNativeKiosk) : tx.object(nftTokenId),\n\t\t\t\ttx.object(collection),\n\t\t\t\ttx.object(royaltyStrategy),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t} else {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::accept_bid',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_BIDDING_STORE),\n\t\t\t\ttx.pure.address(bidNonce),\n\t\t\t\titemTakenOutOfNativeKiosk ? tx.object(itemTakenOutOfNativeKiosk) : tx.object(nftTokenId),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t}\n}\n\nexport const addTradeportKioskAcceptCollectionBidTx = async (txData: AcceptCollectionBidTx) => {\n\tawait addTradeportKioskAcceptNftBidTx(txData);\n};\n\nexport async function addOriginByteAcceptCollectionBidTx(txData: AcceptCollectionBidTx) {\n\tconst {\n\t\ttx,\n\t\tsharedObjects,\n\t\tsellerKiosk,\n\t\titemOwner,\n\t\tnftTokenId,\n\t\tnftType,\n\t\tbidAmount,\n\t\tbidNonce,\n\t\tlistingPrice,\n\t} = txData;\n\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: sellerKiosk,\n\t\twalletAddress: itemOwner,\n\t});\n\n\tif (listingPrice && listingPrice > 0) {\n\t\taddOriginByteUnlistTx({\n\t\t\t...txData,\n\t\t\tsharedObjects,\n\t\t\tprice: txData?.listingPrice,\n\t\t});\n\t}\n\n\tconst { kiosk, isNewKiosk } = await getOrCreateOBKiosk({\n\t\ttx,\n\t\taddress: itemOwner,\n\t\tkioskToUseIfExists: sellerKiosk,\n\t});\n\n\tif (isNewKiosk) {\n\t\tdepositItemIntoOBKiosk({\n\t\t\ttx,\n\t\t\tkiosk,\n\t\t\tnftTokenId,\n\t\t\tnftType,\n\t\t});\n\t}\n\n\tconst { orderbook } = sharedObjects;\n\n\tconst [tradeInfo] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::market_sell',\n\t\targuments: [\n\t\t\ttx.object(orderbook),\n\t\t\ttx.object(kiosk),\n\t\t\ttx.pure.u64(bidAmount),\n\t\t\ttx.object(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\tconst [id] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0xa0bab69d913e5a0ce8b448235a08bcf4c42da45c50622743dc9cab2dc0dff30f::orderbook::trade_id',\n\t\targuments: [tx.object(tradeInfo)],\n\t\ttypeArguments: [],\n\t});\n\n\tconst transferRequest = tx.moveCall({\n\t\ttarget:\n\t\t\t'0xa0bab69d913e5a0ce8b448235a08bcf4c42da45c50622743dc9cab2dc0dff30f::orderbook::finish_trade',\n\t\targuments: [tx.object(orderbook), tx.object(id), tx.object(kiosk), tx.object(bidNonce)],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\tconfirmOBTranfer({ tx, sharedObjects, transferRequest, nftType });\n\n\tif (isNewKiosk) {\n\t\tshareOriginByteKiosk({ tx, kiosk });\n\t}\n}\n\nexport function addBluemoveAcceptCollectionBidTx({\n\ttx,\n\tnftTokenId,\n\tnftType,\n\tbidNonce,\n\tlistingPrice,\n\titemTakenOutOfNativeKiosk,\n}: AcceptCollectionBidTx) {\n\tlet unlistedItem: TransactionObjectInput;\n\tif (listingPrice && listingPrice > 0) {\n\t\tunlistedItem = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::marketplace::delist',\n\t\t\targuments: [tx.object(BLUEMOVE_MARKET_CONFIG_OBJECT), tx.pure.address(nftTokenId)],\n\t\t\ttypeArguments: [nftType, nftType],\n\t\t});\n\t}\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::offer_collection::accept_offer_collection',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_MARKET_CONFIG_OBJECT),\n\t\t\ttx.object(BLUEMOVE_ROYALTY_COLLECTION_OBJECT),\n\t\t\ttx.object(BLUEMOVE_CREATOR_CONFIG_OBJECT),\n\t\t\ttx.object(BLUEMOVE_OFFER_COLLECTION_DATA_OBJECT),\n\t\t\ttx.pure.u64(bidNonce),\n\t\t\titemTakenOutOfNativeKiosk\n\t\t\t\t? tx.object(itemTakenOutOfNativeKiosk)\n\t\t\t\t: unlistedItem\n\t\t\t\t\t? tx.object(unlistedItem)\n\t\t\t\t\t: tx.object(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addBluemoveKioskAcceptCollectionBidTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n\tbidNonce,\n}: AcceptCollectionBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xcc97b74ed95c8e8a3ed88050a898727dee37896da579fc400d482b64db6149ff::kiosk_offer_collection_v2::accept_offer_collection_v2',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT),\n\t\t\ttx.object(BLUEMOVE_KIOSK_OFFER_COLLECTION_DATA_OBJECT),\n\t\t\ttx.object(BLUEMOVE_KIOSK_OFFER_COLLECTION_BIDDER_BAG),\n\t\t\ttx.pure.u64(bidNonce),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addTocenAcceptCollectionBidTx({\n\ttx,\n\tnftTokenId,\n\tnftType,\n\tbidAmount,\n\tbidder,\n}: AcceptCollectionBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x3605d91c559e80cf8fdeabae9abaccb0bc38f96eac0b32bf47e95a9159a5277f::tocen_marketplace::accept_offer_list',\n\t\targuments: [\n\t\t\ttx.object(TOCEN_MARKETPLACE_OBJECT),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.address(bidder),\n\t\t\ttx.pure.u64(bidAmount),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addTradePortAcceptCollectionBidTxHandler(txData: AcceptCollectionBidTx) {\n\tconst bidType = await getObjectType({\n\t\tsuiClient: txData?.suiClient,\n\t\tobjectId: normalizeSuiObjectId(txData?.bidNonce),\n\t});\n\n\tif (isSingleBid(bidType)) {\n\t\tawait addSingleBidAcceptNftBidTx(txData);\n\t\treturn;\n\t}\n\n\tif (isOriginByteBid(bidType)) {\n\t\tif (isOriginByteCollection(txData?.transferPolicies)) {\n\t\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\t\tawait addOriginByteAcceptCollectionBidTx({ ...txData, sharedObjects });\n\n\t\t\treturn;\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`You cannot accept an Origin Byte bid with a NFT outside of an Origin Byte kiosk. Nft Token Id: ${txData?.nftTokenId}`,\n\t\t);\n\t}\n\n\t// If nft has no transfer policy rules but is inside a kiosk, take it out of the kiosk\n\tif (!hasNativeKioskTransferPolicyRules(txData?.transferPolicies) && txData?.sellerKiosk) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tconst borrowedItem = await takeAndBorrowNftFromKiosk({\n\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\t\tkioskTx,\n\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\tnftTokenId: txData?.nftTokenId,\n\t\t\t\t\tnftType: txData?.nftType,\n\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\tkioskOwner: txData?.seller,\n\t\t\t\t});\n\n\t\t\t\taddTradeportAcceptCollectionBidTx({ ...txData, itemTakenOutOfNativeKiosk: borrowedItem });\n\t\t\t},\n\t\t});\n\t}\n\n\tif (isTradePortKioskBid(bidType)) {\n\t\tconst royaltyRuleModule = getRoyaltyRuleModule(txData?.nftType);\n\t\tconst royaltyRulePackageId = await getRulePackageId({\n\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\tsuiClient: txData?.suiClient,\n\t\t\tnftType: txData?.nftType,\n\t\t\truleType: 'royalty_rule',\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t});\n\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldConvertToPersonalKiosk: Boolean(hasPersonalKioskRule(txData?.transferPolicies)),\n\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\tfailIfNoKiosk: Boolean(txData?.sellerKiosk),\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tif (hasNativeKioskTransferPolicyRules(txData?.transferPolicies) && !txData?.sellerKiosk) {\n\t\t\t\t\tkioskTx.place({\n\t\t\t\t\t\titem: txData?.nftTokenId,\n\t\t\t\t\t\titemType: txData?.nftType,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tawait addTradeportKioskAcceptCollectionBidTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t\troyaltyRulePackageId,\n\t\t\t\t\troyaltyRuleModule,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\taddTradeportAcceptCollectionBidTx({ ...txData, sharedObjects });\n}\n\nexport async function addBluemoveAcceptCollectionBidTxHandler(txData: AcceptCollectionBidTx) {\n\tconst bidType = await getObjectType({ suiClient: txData?.suiClient, objectId: txData?.bidNonce });\n\n\tif (isOriginByteBid(bidType)) {\n\t\tif (isOriginByteCollection(txData?.transferPolicies)) {\n\t\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\t\tawait addOriginByteAcceptCollectionBidTx({ ...txData, sharedObjects });\n\n\t\t\treturn;\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`You cannot accept an Origin Byte bid with a NFT outside of an Origin Byte kiosk. Nft Token Id: ${txData?.nftTokenId}`,\n\t\t);\n\t}\n\n\tif (isBluemoveKioskBid(txData?.bidNonce)) {\n\t\tif (txData?.sellerKiosk) {\n\t\t\treturn kioskTxWrapper({\n\t\t\t\ttx: txData?.tx,\n\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tawait addBluemoveKioskAcceptCollectionBidTx({\n\t\t\t\t\t\t...txData,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`You cannot accept an Native Kiosk Bid with a NFT outside of a native kiosk. Nft Token Id: ${txData?.nftTokenId}`,\n\t\t);\n\t}\n\n\tif (!isBluemoveKioskBid(txData?.bidNonce)) {\n\t\tif (txData?.sellerKiosk) {\n\t\t\treturn kioskTxWrapper({\n\t\t\t\ttx: txData?.tx,\n\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tconst borrowedItem = await takeAndBorrowNftFromKiosk({\n\t\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\t\tnftTokenId: txData?.nftTokenId,\n\t\t\t\t\t\tnftType: txData?.nftType,\n\t\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\t\t\t});\n\n\t\t\t\t\taddBluemoveAcceptCollectionBidTx({ ...txData, itemTakenOutOfNativeKiosk: borrowedItem });\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\taddBluemoveAcceptCollectionBidTx(txData);\n\t}\n}\n\nexport function addTocenAcceptCollectionBidTxHandler(txData: AcceptCollectionBidTx) {\n\taddTocenAcceptCollectionBidTx(txData);\n}\n","import { addLeadingZerosAfter0x } from './addLeadingZerosAfter0x';\n\nexport const normalizedNftType = (nftType: string): string => {\n\tconst nftTypeSplit = nftType?.split('::');\n\tif (nftTypeSplit?.[0]) nftTypeSplit[0] = addLeadingZerosAfter0x(nftTypeSplit[0]);\n\treturn nftTypeSplit?.join('::');\n};\n","import { normalizedNftType } from '../utils/normalizeNftType';\n\nexport const getRoyaltyRuleModule = (nftType: string) =>\n\tnormalizedNftType(nftType) ===\n\t'0xe7e651e4974fe367aa2837712d68081efb299c470242a15e2b9c26ea326159ec::card::SudoCard'\n\t\t? 'kiosk_royalty_rule'\n\t\t: 'royalty_rule';\n","export const getNativeKioskTransferPolicies = (transferPolicies: any) => {\n\tlet nativeKioskTransferPolicies = transferPolicies?.filter(\n\t\t(policy: any) =>\n\t\t\t!policy?.is_origin_byte &&\n\t\t\t!policy?.is_disabled &&\n\t\t\tpolicy?.rules?.filter(\n\t\t\t\t(rule: any) =>\n\t\t\t\t\trule?.type?.includes('royalty_rule') ||\n\t\t\t\t\trule?.type?.includes('kiosk_lock_rule') ||\n\t\t\t\t\trule?.type?.includes('personal_kiosk_rule') ||\n\t\t\t\t\trule?.type?.includes('floor_price_rule'),\n\t\t\t)?.length > 0,\n\t);\n\n\tif (nativeKioskTransferPolicies?.length === 0 && transferPolicies?.length > 0) {\n\t\tnativeKioskTransferPolicies = transferPolicies?.filter(\n\t\t\t(policy: any) => !policy?.is_origin_byte && !policy?.is_disabled,\n\t\t);\n\t}\n\n\treturn nativeKioskTransferPolicies;\n};\n\nexport const knownTransferPolicyRules = [\n\t'royalty_rule',\n\t'kiosk_lock_rule',\n\t'personal_kiosk_rule',\n\t'floor_price_rule',\n];\n","import { getNativeKioskTransferPolicies } from './kiosk/getNativeKioskTransferPolicies';\n\nexport const hasPersonalKioskRule = (transferPolicies: any): boolean =>\n\tgetNativeKioskTransferPolicies(transferPolicies)?.some(\n\t\t(policy: any) =>\n\t\t\tpolicy?.rules?.filter((rule: any) => rule?.type?.includes('personal_kiosk_rule'))?.length > 0,\n\t);\n","import { getNativeKioskTransferPolicies } from './kiosk/getNativeKioskTransferPolicies';\n\nexport const hasNativeKioskTransferPolicyRules = (transferPolicies: any): boolean => {\n\tconst nativeKioskTransferPolicies = getNativeKioskTransferPolicies(transferPolicies);\n\treturn nativeKioskTransferPolicies?.some((policy: any) => policy?.rules?.length > 0);\n};\n","import { TRADEPORT_MULTI_BID_PACKAGE_ORIGINAL } from '../constants';\n\nexport const isSingleBid = (bidType: string): boolean => {\n\tif (!bidType) {\n\t\treturn false;\n\t}\n\n\tif (!bidType.startsWith('0x')) {\n\t\tbidType = `0x${bidType}`;\n\t}\n\n\treturn bidType === `${TRADEPORT_MULTI_BID_PACKAGE_ORIGINAL}::tradeport_biddings::SingleBid`;\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchKiosksByOwner = gql`\n\tquery fetchKiosksByOwner($ownerAddress: String!) {\n\t\tkiosks: kiosks_by_owner_address(owner_address: $ownerAddress) {\n\t\t\tid\n\t\t\tis_origin_byte\n\t\t\tis_personal\n\t\t\towner_address\n\t\t\tprofits\n\t\t\tis_shared\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchKiosksByOwner } from '../../graphql/queries/fetchKiosksByOwner';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { type SharedKioskState } from './sharedKioskState.type';\n\nexport const assertNftInSharedKiosk = async ({\n\tkioskId,\n\twalletAddress,\n\tsharedKioskState,\n}: {\n\tkioskId: string;\n\twalletAddress: string;\n\tsharedKioskState?: SharedKioskState;\n}): Promise<void> => {\n\tif (!sharedKioskState?.ownerKiosks) {\n\t\tconst res = await gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchKiosksByOwner,\n\t\t\tvariables: { ownerAddress: addLeadingZerosAfter0x(walletAddress) },\n\t\t});\n\t\tif (sharedKioskState) {\n\t\t\tsharedKioskState.ownerKiosks = res?.kiosks;\n\t\t}\n\t}\n\n\tconst nftKiosk = sharedKioskState?.ownerKiosks?.find((k: any) => k.id === kioskId);\n\n\tif (nftKiosk && !nftKiosk?.is_shared) {\n\t\tthrow new Error('NFT is inside a kiosk that is not shared');\n\t}\n};\n","import { getNormalizedRuleType, type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { addHexPrefix } from '../../utils/addHexPrefix';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { getTransferPolicyRuleNamesFromSuiObject } from '../getTransferPolicyRuleNamesFromSuiObject';\nimport { getNativeKioskTransferPolicies } from './getNativeKioskTransferPolicies';\n\ntype RuleType = 'kiosk_royalty_rule' | 'royalty_rule' | 'personal_kiosk_rule' | 'kiosk_lock_rule';\n\nexport const getRulePackageId = async ({\n\ttransferPolicies,\n\tnftType,\n\truleType,\n\tkioskClient,\n\tsuiClient,\n}: {\n\ttransferPolicies: any[];\n\tsuiClient: SuiClient;\n\tnftType: string;\n\truleType: RuleType;\n\tkioskClient: KioskClient;\n}) => {\n\tlet rule: string | undefined;\n\n\tif (transferPolicies.length > 0) {\n\t\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\t\tconst ruleNames = await getTransferPolicyRuleNamesFromSuiObject({\n\t\t\tsuiClient,\n\t\t\ttransferPolicyId,\n\t\t});\n\n\t\trule = ruleNames.filter((ruleName) => ruleName?.split('::')?.[1] === ruleType)?.[0];\n\t} else {\n\t\tconst transferPoliciesFromMystenSdk = await kioskClient.getTransferPolicies({\n\t\t\ttype: normalizedNftType(nftType),\n\t\t});\n\n\t\tif (transferPoliciesFromMystenSdk.length > 0) {\n\t\t\trule = transferPoliciesFromMystenSdk\n\t\t\t\t.flatMap((policy) => policy.rules)\n\t\t\t\t.filter((rule) => rule?.split('::')?.[1] === ruleType)?.[0];\n\t\t} else {\n\t\t\tthrow new Error(`No transfer policy found for ${nftType}`);\n\t\t}\n\t}\n\n\tconst ruleDefinition = kioskClient.rules.find(\n\t\t(x) => getNormalizedRuleType(x.rule) === getNormalizedRuleType(rule),\n\t);\n\n\tlet rulePackageId = ruleDefinition?.packageId;\n\tif (!rulePackageId) {\n\t\trulePackageId = rule?.split('::')?.[0];\n\t}\n\n\treturn addHexPrefix(rulePackageId);\n};\n","export function addHexPrefix(input: string): string {\n\tif (input.startsWith('0x')) {\n\t\treturn input;\n\t}\n\n\treturn '0x' + input;\n}\n","import { type SuiClient } from '@mysten/sui/client';\nimport { normalizeStructTag, normalizeSuiObjectId } from '@mysten/sui/utils';\n\nexport const getTransferPolicyRuleNamesFromSuiObject = async ({\n\tsuiClient,\n\ttransferPolicyId,\n}: {\n\tsuiClient: SuiClient;\n\ttransferPolicyId: string;\n}) => {\n\tconst { data, error } = await suiClient.getObject({\n\t\tid: normalizeSuiObjectId(transferPolicyId),\n\t\toptions: {\n\t\t\tshowContent: true,\n\t\t},\n\t});\n\n\tif (error) {\n\t\tthrow new Error(`Error on getting SUI object ${transferPolicyId}: ${error.code}`);\n\t}\n\n\tconst content = data.content as unknown as {\n\t\tfields: {\n\t\t\trules: {\n\t\t\t\tfields: {\n\t\t\t\t\tcontents: Array<{ fields: { name: string } }>;\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t};\n\tconst ruleNames = content.fields.rules.fields.contents.map((rule) =>\n\t\tnormalizeStructTag(rule.fields.name),\n\t);\n\n\treturn ruleNames;\n};\n","export const isBluemoveKioskBid = (bidNonce: string): boolean => bidNonce?.startsWith('10000');\n","import { TRADEPORT_KIOSK_BID_NONCE_TYPE } from '../../constants';\n\nexport const isTradePortKioskBid = (bidType: string): boolean =>\n\tbidType === TRADEPORT_KIOSK_BID_NONCE_TYPE;\n","import { type KioskClient, KioskTransaction } from '@mysten/kiosk';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchKiosksByOwner } from '../../graphql/queries/fetchKiosksByOwner';\nimport { fetchOwnerCapByKiosk } from '../../graphql/queries/fetchOwnerCapByKiosk';\nimport { fetchPersonalCapByKiosk } from '../../graphql/queries/fetchPersonalCapByKiosk';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { assertNftInSharedKiosk } from './assertNftInSharedKiosk';\nimport { type SharedKioskState } from './sharedKioskState.type';\n\ntype Args = {\n\ttx: Transaction;\n\tkioskClient: KioskClient;\n\tkioskOwner: string;\n\tkiosk?: any;\n\trunCommands: (kioskTx: KioskTransaction) => Promise<void>;\n\tshouldConvertToPersonalKiosk?: boolean;\n\tshouldAssertNftInSharedKiosk?: boolean;\n\tshouldAllowNftUnsharedKiosk?: boolean;\n\tkioskStrategy?: 'include' | 'exclude';\n\tfailIfNoKiosk?: boolean;\n\tsharedKioskState?: SharedKioskState;\n\tshouldUseSharedKioskTx?: boolean;\n};\n\nexport const kioskTxWrapper = async ({\n\ttx,\n\tkioskClient,\n\tkioskOwner,\n\tkiosk,\n\trunCommands,\n\tshouldConvertToPersonalKiosk,\n\tshouldAssertNftInSharedKiosk,\n\tshouldAllowNftUnsharedKiosk,\n\tkioskStrategy,\n\tfailIfNoKiosk,\n\tsharedKioskState,\n\tshouldUseSharedKioskTx = true,\n}: Args) => {\n\tif (shouldUseSharedKioskTx && sharedKioskState?.kioskTx) {\n\t\tawait runCommands(sharedKioskState.kioskTx);\n\t\treturn;\n\t}\n\n\tif (!kioskOwner) {\n\t\tthrow new Error('No kiosk owner provided');\n\t}\n\n\tlet kioskTx: KioskTransaction;\n\n\tlet kiosks =\n\t\tsharedKioskState?.ownerKiosks ??\n\t\t(((\n\t\t\tawait gqlChainRequest({\n\t\t\t\tchain: 'sui',\n\t\t\t\tquery: fetchKiosksByOwner,\n\t\t\t\tvariables: { ownerAddress: addLeadingZerosAfter0x(kioskOwner) },\n\t\t\t})\n\t\t).kiosks ?? []) as Array<{\n\t\t\tid: string;\n\t\t\tis_personal: boolean;\n\t\t\tis_origin_byte: boolean;\n\t\t\tis_shared: boolean;\n\t\t}>);\n\n\tif (sharedKioskState) {\n\t\tsharedKioskState.ownerKiosks = kiosks;\n\t}\n\n\tif (shouldAssertNftInSharedKiosk) {\n\t\tawait assertNftInSharedKiosk({ kioskId: kiosk, walletAddress: kioskOwner, sharedKioskState });\n\t}\n\n\tkiosks = kiosks?.filter((k) => !k.is_origin_byte && (shouldAllowNftUnsharedKiosk || k.is_shared));\n\n\tif (kiosk) {\n\t\tlet filteredKiosks = [];\n\t\tswitch (kioskStrategy ?? 'include') {\n\t\t\tcase 'include':\n\t\t\t\tfilteredKiosks = kiosks.filter((k) => k?.id === kiosk);\n\t\t\t\tbreak;\n\t\t\tcase 'exclude':\n\t\t\t\tfilteredKiosks = kiosks.filter((k) => k?.id !== kiosk);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unsupported kiosk strategy ${kioskStrategy}`);\n\t\t}\n\n\t\tif (filteredKiosks.length > 0) {\n\t\t\tkiosks = filteredKiosks;\n\t\t} else if (failIfNoKiosk ?? false) {\n\t\t\tthrow new Error(`Kiosk ${kiosk} not found for account ${kioskOwner}`);\n\t\t}\n\t}\n\n\tconst personalKiosk = kiosks.find((k) => k.is_personal);\n\n\tif (personalKiosk) {\n\t\t// using existing personal kiosk\n\t\tconst personalKioskCapId = (\n\t\t\tawait gqlChainRequest({\n\t\t\t\tchain: 'sui',\n\t\t\t\tquery: fetchPersonalCapByKiosk,\n\t\t\t\tvariables: { kioskId: personalKiosk.id },\n\t\t\t})\n\t\t).personalCap.id;\n\t\tkioskTx = new KioskTransaction({\n\t\t\ttransactionBlock: tx as any,\n\t\t\tkioskClient,\n\t\t\tcap: {\n\t\t\t\tisPersonal: true,\n\t\t\t\tobjectId: personalKioskCapId,\n\t\t\t\tkioskId: personalKiosk.id,\n\t\t\t\tdigest: '',\n\t\t\t\tversion: '',\n\t\t\t},\n\t\t});\n\t} else if (kiosks.length > 0 && !shouldConvertToPersonalKiosk) {\n\t\tconst kioskCapId = (\n\t\t\tawait gqlChainRequest({\n\t\t\t\tchain: 'sui',\n\t\t\t\tquery: fetchOwnerCapByKiosk,\n\t\t\t\tvariables: { kioskId: kiosks[0].id },\n\t\t\t})\n\t\t).ownerCap?.id;\n\t\tkioskTx = new KioskTransaction({\n\t\t\ttransactionBlock: tx as any,\n\t\t\tkioskClient,\n\t\t\tcap: {\n\t\t\t\tisPersonal: false,\n\t\t\t\tobjectId: kioskCapId,\n\t\t\t\tkioskId: kiosks[0].id,\n\t\t\t\tdigest: '',\n\t\t\t\tversion: '',\n\t\t\t},\n\t\t});\n\t} else {\n\t\t// creating new personal kiosk\n\t\tkioskTx = new KioskTransaction({ transactionBlock: tx as any, kioskClient });\n\t\tkioskTx.createPersonal(true);\n\t}\n\n\tif (shouldUseSharedKioskTx && sharedKioskState) {\n\t\tsharedKioskState.kioskTx = kioskTx;\n\t}\n\n\tawait runCommands(kioskTx);\n\n\tif (!sharedKioskState?.kioskTx) {\n\t\tkioskTx.finalize();\n\t}\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchOwnerCapByKiosk = gql`\n\tquery fetchOwnerCapByKiosk($kioskId: String!) {\n\t\townerCap: kiosk_owner_cap_by_kiosk(kiosk_id: $kioskId) {\n\t\t\tid\n\t\t\tkiosk_id\n\t\t}\n\t}\n`;\n","import { gql } from 'graphql-request';\n\nexport const fetchPersonalCapByKiosk = gql`\n\tquery fetchPersonalCapByKiosk($kioskId: String!) {\n\t\tpersonalCap: personal_kiosk_cap_by_kiosk(kiosk_id: $kioskId) {\n\t\t\tid\n\t\t\tkiosk_id\n\t\t}\n\t}\n`;\n","import { type KioskTransaction } from '@mysten/kiosk';\nimport { type Transaction } from '@mysten/sui/transactions';\n\nexport const getKioskIdFromKioskTx = ({\n\tkioskTx,\n\ttx,\n}: {\n\tkioskTx: KioskTransaction;\n\ttx: Transaction;\n}): string => {\n\tconst kioskId =\n\t\t'value' in kioskTx.kiosk\n\t\t\t? kioskTx.kiosk.value\n\t\t\t: 'Input' in kioskTx.kiosk\n\t\t\t\t? tx.blockData.inputs[(kioskTx.kiosk as { Input: number }).Input].value\n\t\t\t\t: (() => {\n\t\t\t\t\t\tthrow new Error('Invalid kiosk transaction structure');\n\t\t\t\t\t})();\n\n\treturn kioskId;\n};\n","import { getNormalizedRuleType, type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { getTransferPolicyRuleNamesFromSuiObject } from '../getTransferPolicyRuleNamesFromSuiObject';\nimport {\n\tgetNativeKioskTransferPolicies,\n\tknownTransferPolicyRules,\n} from './getNativeKioskTransferPolicies';\n\ninterface RuleData {\n\trule: string;\n\trulePackageId?: string;\n\tmoduleName?: string;\n}\n\nexport type Policy = {\n\tid: string;\n\ttype?: string;\n\tisCustom: boolean;\n\trules: RuleData[];\n};\n\ntype Props = {\n\ttransferPolicies: any[];\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tnftType: string;\n\tcustomTransferPolicies?: any;\n};\n\nconst originByteRuleModules = ['royalty_strategy_bps', 'transfer_allowlist'];\n\nexport const getTransferPoliciesToResolve = async ({\n\ttransferPolicies,\n\tsuiClient,\n\tkioskClient,\n\tnftType,\n\tcustomTransferPolicies,\n}: Props): Promise<Policy[]> => {\n\tlet policies: Policy[] = [];\n\n\tif (transferPolicies.length > 0) {\n\t\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\t\tif (transferPolicyId) {\n\t\t\tconst ruleNames = await getTransferPolicyRuleNamesFromSuiObject({\n\t\t\t\tsuiClient,\n\t\t\t\ttransferPolicyId,\n\t\t\t});\n\n\t\t\tpolicies = [\n\t\t\t\t{\n\t\t\t\t\tid: transferPolicyId,\n\t\t\t\t\trules: ruleNames?.map((rule) => ({\n\t\t\t\t\t\trule,\n\t\t\t\t\t})),\n\t\t\t\t\tisCustom: false,\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\t} else {\n\t\tconst transferPoliciesFromMystenSdk = await kioskClient.getTransferPolicies({\n\t\t\ttype: normalizedNftType(nftType),\n\t\t});\n\n\t\tif (transferPoliciesFromMystenSdk.length > 0) {\n\t\t\tconst policy =\n\t\t\t\ttransferPoliciesFromMystenSdk.find((policy) =>\n\t\t\t\t\tpolicy?.rules?.some((rule) =>\n\t\t\t\t\t\tknownTransferPolicyRules.some((ruleType) => rule?.includes(ruleType)),\n\t\t\t\t\t),\n\t\t\t\t) ?? transferPoliciesFromMystenSdk[0];\n\n\t\t\tpolicies = [\n\t\t\t\t{\n\t\t\t\t\tid: policy.id,\n\t\t\t\t\trules: policy.rules?.map((rule) => ({\n\t\t\t\t\t\trule,\n\t\t\t\t\t})),\n\t\t\t\t\tisCustom: false,\n\t\t\t\t},\n\t\t\t];\n\t\t} else {\n\t\t\tthrow new Error(\n\t\t\t\t`Missing transfer policy of ${nftType}. No way to resolve the transfer request.`,\n\t\t\t);\n\t\t}\n\t}\n\n\tif (customTransferPolicies) {\n\t\tfor (const customTransferPolicy of customTransferPolicies) {\n\t\t\tconst customPolicy = await kioskClient.getTransferPolicies({\n\t\t\t\ttype: normalizedNftType(customTransferPolicy?.type),\n\t\t\t});\n\t\t\tpolicies = [\n\t\t\t\t...policies,\n\t\t\t\t{\n\t\t\t\t\tid: customPolicy[0].id,\n\t\t\t\t\trules: customPolicy[0].rules?.map((rule) => ({\n\t\t\t\t\t\trule,\n\t\t\t\t\t})),\n\t\t\t\t\tisCustom: true,\n\t\t\t\t\ttype: customTransferPolicy?.type,\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\t}\n\n\treturn policies.map((policy) => {\n\t\tconst kioskLockRule = policy?.rules.find((rule: RuleData) =>\n\t\t\trule?.rule?.includes('kiosk_lock_rule'),\n\t\t);\n\n\t\tconst personalKioskRule = policy?.rules.find((rule: RuleData) =>\n\t\t\trule.rule.includes('personal_kiosk_rule'),\n\t\t);\n\n\t\tconst otherRules = policy?.rules.filter(\n\t\t\t(rule: RuleData) =>\n\t\t\t\t!rule?.rule?.includes('kiosk_lock_rule') && !rule?.rule?.includes('personal_kiosk_rule'),\n\t\t);\n\n\t\treturn {\n\t\t\t...policy,\n\t\t\trules: [kioskLockRule, personalKioskRule, ...otherRules].filter(Boolean)?.map((ruleData) => {\n\t\t\t\tconst ruleDefinition = kioskClient.rules.find(\n\t\t\t\t\t(x: any) => getNormalizedRuleType(x.rule) === getNormalizedRuleType(ruleData.rule),\n\t\t\t\t);\n\n\t\t\t\tlet rulePackageId = ruleDefinition?.packageId;\n\t\t\t\tif (!rulePackageId) {\n\t\t\t\t\trulePackageId = ruleData?.rule?.split('::')?.[0];\n\t\t\t\t}\n\n\t\t\t\tconst moduleName = ruleData?.rule?.split('::')?.[1];\n\n\t\t\t\tif (originByteRuleModules.includes(moduleName)) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Using Origin Byte rule ${ruleData.rule} inside the native kiosk transaction`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\t...ruleData,\n\t\t\t\t\trulePackageId,\n\t\t\t\t\tmoduleName,\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t});\n};\n","import {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tpackageId: string;\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tpolicyId: TransactionObjectInput;\n};\n\nexport function resolveFloorPriceRule({ tx, packageId, nftType, policyId, transferRequest }: Args) {\n\ttx.moveCall({\n\t\ttarget: `${packageId}::floor_price_rule::prove`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [tx.object(policyId), transferRequest],\n\t});\n}\n","import {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tpolicyId: TransactionObjectInput;\n\tpackageId: string;\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tkiosk: TransactionObjectInput;\n\tkioskCap: TransactionObjectInput;\n\tkioskItem?: TransactionObjectInput;\n\tshouldSkipLocking?: boolean;\n};\n\nexport function resolveKioskLockRule({\n\ttx,\n\tpackageId,\n\tpolicyId,\n\ttransferRequest,\n\tnftType,\n\tkiosk,\n\tkioskCap,\n\tkioskItem,\n\tshouldSkipLocking,\n}: Args) {\n\tif (!kiosk || !kioskCap) throw new Error('Missing Owned Kiosk or Owned Kiosk Cap');\n\n\tif (!shouldSkipLocking) {\n\t\tif (!kioskItem) throw new Error('Missing Kiosk Item');\n\n\t\ttx.moveCall({\n\t\t\ttarget: '0x2::kiosk::lock',\n\t\t\ttypeArguments: [nftType],\n\t\t\targuments: [tx.object(kiosk), tx.object(kioskCap), tx.object(policyId), tx.object(kioskItem)],\n\t\t});\n\t}\n\n\ttx.moveCall({\n\t\ttarget: `${packageId}::kiosk_lock_rule::prove`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [transferRequest, tx.object(kiosk)],\n\t});\n}\n","import {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tpackageId: string;\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tkiosk: TransactionObjectInput;\n};\n\nexport function resolvePersonalKioskRule({ tx, packageId, nftType, kiosk, transferRequest }: Args) {\n\tif (!kiosk) throw new Error('Missing owned Kiosk.');\n\n\ttx.moveCall({\n\t\ttarget: `${packageId}::personal_kiosk_rule::prove`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [tx.object(kiosk), transferRequest],\n\t});\n}\n","import { bcs } from '@mysten/sui/bcs';\nimport { type SuiClient } from '@mysten/sui/client';\nimport {\n\tTransaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\n\ninterface Args {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\twalletAddress: string;\n\troyaltyRulePackageId: string;\n\troyaltyRuleModule: string;\n\ttransferPolicyId: string | TransactionObjectInput;\n\tprice: number | string;\n\tnftType: string;\n}\n\nexport async function getKioskCollectionRoyaltyFeeAmount({\n\ttx,\n\tsuiClient,\n\twalletAddress,\n\troyaltyRulePackageId,\n\troyaltyRuleModule,\n\ttransferPolicyId,\n\tprice,\n\tnftType,\n}: Args): Promise<TransactionArgument | bigint | undefined> {\n\tif (!royaltyRulePackageId || !royaltyRuleModule || !transferPolicyId || !nftType) {\n\t\tconsole.warn('Missing required parameters for royalty fee calculation');\n\t\treturn undefined;\n\t}\n\n\tif (!price) {\n\t\tconsole.warn('Price is undefined or 0');\n\t\treturn undefined;\n\t}\n\n\tconst feeTx = new Transaction();\n\tfeeTx.moveCall({\n\t\ttarget: `${royaltyRulePackageId}::${royaltyRuleModule}::fee_amount`,\n\t\targuments: [feeTx.object(transferPolicyId), feeTx.pure.u64(price)],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tconst res = await suiClient.devInspectTransactionBlock({\n\t\tsender: addLeadingZerosAfter0x(walletAddress),\n\t\ttransactionBlock: feeTx,\n\t});\n\n\tlet feeAmount: TransactionArgument | bigint | undefined;\n\tif (res?.results?.[0]?.returnValues?.[0]?.[0]) {\n\t\tconst returnedAmount = res?.results?.[0]?.returnValues?.[0]?.[0];\n\t\tif (returnedAmount) {\n\t\t\tfeeAmount = BigInt(bcs.U64.parse(new Uint8Array(returnedAmount)));\n\t\t}\n\t}\n\n\t// We were not able to calculate the amount outside of the transaction, so fall back to resolving it within the PTB\n\tif (!feeAmount && feeAmount !== 0n) {\n\t\t[feeAmount] = tx.moveCall({\n\t\t\ttarget: `${royaltyRulePackageId}::${royaltyRuleModule}::fee_amount`,\n\t\t\ttypeArguments: [nftType],\n\t\t\targuments: [tx.object(transferPolicyId), tx.pure.u64(price)],\n\t\t});\n\t}\n\n\treturn feeAmount;\n}\n","import { type SuiClient } from '@mysten/sui/client';\nimport {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\nimport { getKioskCollectionRoyaltyFeeAmount } from './getKioskCollectionRoyaltyFeeAmount';\n\ntype Args = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\twalletAddress: string;\n\tpolicyId: TransactionObjectInput;\n\tmoduleName: string;\n\tpackageId: string;\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tprice: string;\n\tcoinToSplit?: any;\n\troyaltyFeeAmount?: bigint;\n};\n\nexport async function resolveRoyaltyRule({\n\ttx,\n\tsuiClient,\n\twalletAddress,\n\tpackageId,\n\tmoduleName,\n\tpolicyId,\n\ttransferRequest,\n\tnftType,\n\tprice,\n\tcoinToSplit,\n\troyaltyFeeAmount,\n}: Args) {\n\tlet feeAmount: bigint | TransactionArgument | undefined = royaltyFeeAmount;\n\tif (!feeAmount) {\n\t\tfeeAmount = await getKioskCollectionRoyaltyFeeAmount({\n\t\t\ttx,\n\t\t\tsuiClient,\n\t\t\twalletAddress,\n\t\t\troyaltyRulePackageId: packageId,\n\t\t\troyaltyRuleModule: moduleName,\n\t\t\ttransferPolicyId: policyId,\n\t\t\tprice,\n\t\t\tnftType,\n\t\t});\n\t}\n\n\tconst feeCoin = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [feeAmount]);\n\n\ttx.moveCall({\n\t\ttarget: `${packageId}::${moduleName}::pay`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [tx.object(policyId), transferRequest, feeCoin],\n\t});\n}\n","import {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tpackageId: string;\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tpolicyId: TransactionObjectInput;\n\tparams: Record<string, string>;\n};\n\nexport function resolveTableAllowlistRule({\n\ttx,\n\tpackageId,\n\tnftType,\n\tpolicyId,\n\ttransferRequest,\n\tparams,\n}: Args) {\n\tconst { registryId } = params;\n\tif (!registryId) {\n\t\tthrow new Error(`Missing registryId in params for table_allowlist_rule (package ${packageId})`);\n\t}\n\n\ttx.moveCall({\n\t\ttarget: `${packageId}::table_allowlist_rule::resolve`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [tx.object(policyId), transferRequest, tx.object(registryId)],\n\t});\n}\n","import {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\nimport { CUSTOM_TRANSFER_RULES_BY_COLLECTION } from '../../constants';\nimport { resolveTableAllowlistRule } from './resolveTableAllowlistRule';\n\ntype ResolverArgs = {\n\ttx: Transaction;\n\tpackageId: string;\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tpolicyId: TransactionObjectInput;\n\tparams: Record<string, string>;\n};\n\ntype CustomRuleResolver = (args: ResolverArgs) => void;\n\nconst customRuleResolvers: Record<string, CustomRuleResolver> = {\n\ttable_allowlist_rule: resolveTableAllowlistRule,\n};\n\nexport const customTransferPolicyRuleNames = Object.keys(customRuleResolvers);\n\ntype RuleData = {\n\trule: string;\n\trulePackageId?: string;\n\tmoduleName?: string;\n\tparams?: Record<string, string>;\n};\n\nfunction findParamsFromConfig(moduleName: string, packageId: string): Record<string, string> {\n\tfor (const configs of Object.values(CUSTOM_TRANSFER_RULES_BY_COLLECTION)) {\n\t\tconst match = configs.find((c) => c.moduleName === moduleName && c.packageId === packageId);\n\t\tif (match) return match.params;\n\t}\n\n\tthrow new Error(`No custom rule config found for ${moduleName} at package ${packageId}`);\n}\n\nexport function resolveCustomTransferPolicyRules({\n\ttx,\n\trules,\n\ttransferRequest,\n\tnftType,\n\tpolicyId,\n}: {\n\ttx: Transaction;\n\trules: RuleData[];\n\ttransferRequest: TransactionArgument;\n\tnftType: string;\n\tpolicyId: TransactionObjectInput;\n}): boolean {\n\tlet resolved = false;\n\tfor (const rule of rules) {\n\t\tconst moduleName = rule.moduleName ?? rule.rule?.split('::')?.[1];\n\t\tconst resolver = moduleName ? customRuleResolvers[moduleName] : undefined;\n\t\tif (resolver) {\n\t\t\tconst packageId = rule.rulePackageId ?? rule.rule?.split('::')?.[0];\n\t\t\tconst params = rule.params ?? findParamsFromConfig(moduleName, packageId);\n\t\t\tresolver({\n\t\t\t\ttx,\n\t\t\t\tpackageId,\n\t\t\t\ttransferRequest,\n\t\t\t\tnftType,\n\t\t\t\tpolicyId,\n\t\t\t\tparams,\n\t\t\t});\n\t\t\tresolved = true;\n\t\t}\n\t}\n\n\treturn resolved;\n}\n","import { type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\nimport { getTransferPoliciesToResolve } from './getTransferPoliciesToResolve';\nimport { resolveFloorPriceRule } from './resolveFloorPriceRule';\nimport { resolveKioskLockRule } from './resolveKioskLockRule';\nimport { resolvePersonalKioskRule } from './resolvePersonalKioskRule';\nimport { resolveRoyaltyRule } from './resolveRoyaltyRule';\nimport { resolveCustomTransferPolicyRules } from './resolveCustomTransferPolicyRules';\n\nexport type Policy = {\n\tdata: any;\n\ttransferRequest: TransactionArgument;\n\tisCustom: boolean;\n\ttype?: string;\n};\n\ntype Props = {\n\ttx: Transaction;\n\ttransferPolicies: any[];\n\tsuiClient: SuiClient;\n\twalletAddress: string;\n\tkioskClient: KioskClient;\n\tkioskTx: any;\n\tnftType: string;\n\tkioskToLockRuleProve?: TransactionObjectInput;\n\tkioskItem?: TransactionObjectInput;\n\ttransferRequest: TransactionArgument;\n\tcustomTransferPolicies?: any;\n\tprice: string;\n\tshouldSkipKioskLocking?: boolean;\n\tshouldSkipResolvingRoyaltyRule?: boolean;\n\tcoinToSplit?: any;\n\tbeforeResolveKioskTransferRequest?: (transferRequest: any) => void | Promise<void>;\n\ttransferPoliciesToResolve?: any[];\n\troyaltyFeeAmount?: bigint;\n};\n\nexport const resolveTransferPolicies = async ({\n\ttx,\n\ttransferPolicies,\n\tsuiClient,\n\twalletAddress,\n\tkioskClient,\n\tkioskTx,\n\tnftType,\n\tkioskToLockRuleProve,\n\tkioskItem,\n\ttransferRequest,\n\tcustomTransferPolicies,\n\tprice,\n\tshouldSkipKioskLocking,\n\tshouldSkipResolvingRoyaltyRule,\n\tcoinToSplit,\n\tbeforeResolveKioskTransferRequest,\n\ttransferPoliciesToResolve,\n\troyaltyFeeAmount,\n}: Props) => {\n\tconst policies =\n\t\ttransferPoliciesToResolve ??\n\t\t(await getTransferPoliciesToResolve({\n\t\t\ttransferPolicies,\n\t\t\tsuiClient,\n\t\t\tkioskClient,\n\t\t\tnftType,\n\t\t\tcustomTransferPolicies,\n\t\t}));\n\n\tlet hasLockRule = false;\n\tfor (const policy of policies) {\n\t\tfor (const rule of policy.rules) {\n\t\t\tswitch (rule.moduleName) {\n\t\t\t\tcase 'kiosk_lock_rule':\n\t\t\t\t\thasLockRule = true;\n\t\t\t\t\tresolveKioskLockRule({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tpackageId: rule.rulePackageId,\n\t\t\t\t\t\tpolicyId: policy.id,\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\tnftType: policy.isCustom && policy.type ? policy.type : nftType,\n\t\t\t\t\t\tkiosk: kioskToLockRuleProve ? kioskToLockRuleProve : kioskTx.kiosk,\n\t\t\t\t\t\tkioskCap: kioskTx.kioskCap,\n\t\t\t\t\t\tkioskItem,\n\t\t\t\t\t\tshouldSkipLocking: shouldSkipKioskLocking,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'personal_kiosk_rule':\n\t\t\t\t\tresolvePersonalKioskRule({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tpackageId: rule.rulePackageId,\n\t\t\t\t\t\tnftType: policy.isCustom && policy.type ? policy.type : nftType,\n\t\t\t\t\t\tkiosk: kioskTx.kiosk,\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'royalty_rule':\n\t\t\t\tcase 'kiosk_royalty_rule':\n\t\t\t\t\tif (shouldSkipResolvingRoyaltyRule) break;\n\t\t\t\t\tawait resolveRoyaltyRule({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tsuiClient,\n\t\t\t\t\t\twalletAddress,\n\t\t\t\t\t\tpackageId: rule.rulePackageId,\n\t\t\t\t\t\tmoduleName: rule.moduleName,\n\t\t\t\t\t\tpolicyId: policy.id,\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\tnftType: policy.isCustom && policy.type ? policy.type : nftType,\n\t\t\t\t\t\tprice,\n\t\t\t\t\t\tcoinToSplit,\n\t\t\t\t\t\troyaltyFeeAmount,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'floor_price_rule':\n\t\t\t\t\tresolveFloorPriceRule({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tpackageId: rule.rulePackageId,\n\t\t\t\t\t\tnftType: policy.isCustom && policy.type ? policy.type : nftType,\n\t\t\t\t\t\tpolicyId: policy.id,\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: {\n\t\t\t\t\tconst nftTypeForRule = policy.isCustom && policy.type ? policy.type : nftType;\n\t\t\t\t\tconst wasResolved = resolveCustomTransferPolicyRules({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\trules: [rule],\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\tnftType: nftTypeForRule,\n\t\t\t\t\t\tpolicyId: policy.id,\n\t\t\t\t\t});\n\t\t\t\t\tif (!wasResolved) {\n\t\t\t\t\t\tthrow new Error(`No resolver for the following rule: ${rule.rule}.`);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!hasLockRule && kioskItem) {\n\t\tkioskTx.place({ itemType: nftType, item: kioskItem });\n\t}\n\n\tawait beforeResolveKioskTransferRequest?.(transferRequest);\n\n\tfor (const policy of policies) {\n\t\ttx.moveCall({\n\t\t\ttarget: '0x2::transfer_policy::confirm_request',\n\t\t\targuments: [tx.object(policy.id), transferRequest],\n\t\t\ttypeArguments: [policy.isCustom && policy.type ? policy.type : nftType],\n\t\t});\n\t}\n};\n","import { type KioskClient, type KioskTransaction, type TransferPolicy } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { getNativeKioskTransferPolicies } from './getNativeKioskTransferPolicies';\nimport { resolveTransferPolicies } from './resolveTransferPolicies';\n\ninterface TakeLockedNftFromKioskProps {\n\ttx: Transaction;\n\ttransferPolicies: TransferPolicy[];\n\tsuiClient: SuiClient;\n\tkioskTx: KioskTransaction;\n\tkioskClient: KioskClient;\n\tnftTokenId: string;\n\tnftType: string;\n\tkioskOwner: string;\n}\n\nexport const takeLockedNftFromKiosk = async ({\n\ttx,\n\ttransferPolicies,\n\tsuiClient,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\tkioskOwner,\n}: TakeLockedNftFromKioskProps) => {\n\tconst transferPolicy = getNativeKioskTransferPolicies(transferPolicies)?.at(0);\n\tconst hasFloorPriceRule = transferPolicy?.rules?.some(\n\t\t(rule: any) => rule.type === 'floor_price_rule',\n\t);\n\tif (hasFloorPriceRule) {\n\t\tthrow new Error('Cannot take locked NFT from kiosk with a minimum floor price rule');\n\t}\n\n\tconst [purchase_cap] = tx.moveCall({\n\t\ttarget: '0x2::kiosk::list_with_purchase_cap',\n\t\targuments: [\n\t\t\ttx.object('value' in kioskTx.kiosk ? kioskTx.kiosk.value : kioskTx.kiosk),\n\t\t\ttx.object('value' in kioskTx.kioskCap ? kioskTx.kioskCap.value : kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.u64(0),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tconst [zeroCoin] = tx.moveCall({\n\t\ttarget: '0x2::coin::zero',\n\t\targuments: [],\n\t\ttypeArguments: ['0x2::sui::SUI'],\n\t});\n\n\tconst [nft, transferRequest] = tx.moveCall({\n\t\ttarget: '0x2::kiosk::purchase_with_cap',\n\t\targuments: [\n\t\t\ttx.object('value' in kioskTx.kiosk ? kioskTx.kiosk.value : kioskTx.kiosk),\n\t\t\tpurchase_cap,\n\t\t\tzeroCoin,\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: kioskOwner,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: '0',\n\t\ttransferRequest,\n\t\tshouldSkipKioskLocking: true,\n\t});\n\n\treturn nft;\n};\n","import { type KioskClient, type KioskTransaction, type TransferPolicy } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { getKioskIdFromKioskTx } from './getKioskIdFromKioskTx';\nimport { takeLockedNftFromKiosk } from './takeLockedNftFromKiosk';\n\nexport const takeAndBorrowNftFromKiosk = async ({\n\ttx,\n\ttransferPolicies,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\tsuiClient,\n\tkioskOwner,\n}: {\n\ttx: Transaction;\n\ttransferPolicies: TransferPolicy[];\n\tkioskTx: KioskTransaction;\n\tkioskClient: KioskClient;\n\tnftTokenId: string;\n\tnftType: string;\n\tsuiClient: SuiClient;\n\tkioskOwner: string;\n}) => {\n\tconst kioskId = getKioskIdFromKioskTx({ kioskTx, tx });\n\tconst res = await kioskClient.getKiosk({ id: kioskId });\n\tconst nftInKiosk = res.items.find((i) => i.objectId === nftTokenId);\n\n\tlet borrowedNft = null;\n\tif (nftInKiosk?.isLocked) {\n\t\tborrowedNft = await takeLockedNftFromKiosk({\n\t\t\ttx,\n\t\t\ttransferPolicies,\n\t\t\tkioskTx,\n\t\t\tnftTokenId,\n\t\t\tnftType,\n\t\t\tsuiClient,\n\t\t\tkioskClient,\n\t\t\tkioskOwner,\n\t\t});\n\t} else {\n\t\tborrowedNft = kioskTx.take({\n\t\t\titemId: nftTokenId,\n\t\t\titemType: nftType,\n\t\t}) as any;\n\t}\n\n\treturn borrowedNft;\n};\n","import { type Transaction } from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tsharedObjects: any;\n\ttransferRequest: any;\n\tnftType: string;\n};\n\nexport const confirmOBTranfer = ({ tx, sharedObjects, transferRequest, nftType }: Args) => {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x6f42ec2355fcda5ebeee2399d901ae9f71cb214e640a45a0007f1f1cdf9f7b5e::transfer_allowlist::confirm_transfer',\n\t\targuments: [tx.object(sharedObjects?.allowList), tx.object(transferRequest)],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tif (sharedObjects?.royaltyStrategy) {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x6f42ec2355fcda5ebeee2399d901ae9f71cb214e640a45a0007f1f1cdf9f7b5e::royalty_strategy_bps::confirm_transfer',\n\t\t\targuments: [tx.object(sharedObjects?.royaltyStrategy), tx.object(transferRequest)],\n\t\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t\t});\n\t}\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xadf32ebafc587cc86e1e56e59f7b17c7e8cbeb3315193be63c6f73157d4e88b9::transfer_request::confirm',\n\t\targuments: [tx.object(transferRequest), tx.object(sharedObjects?.transferPolicy)],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n};\n","import { type Transaction } from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tkiosk: string;\n\tnftTokenId: string;\n\tnftType: string;\n};\n\nexport const depositItemIntoOBKiosk = ({ tx, kiosk, nftTokenId, nftType }: Args) => {\n\ttx.moveCall({\n\t\ttarget: '0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::deposit',\n\t\targuments: [tx.object(kiosk), tx.object(nftTokenId)],\n\t\ttypeArguments: [nftType],\n\t});\n};\n","type Args = {\n\ttx: any;\n\tcreateMethod?: string;\n};\n\nexport const createOBKiosk = async ({ tx, createMethod = 'new' }: Args) => {\n\tconst [kiosk] = tx.moveCall({\n\t\ttarget: `0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::${createMethod}`,\n\t\targuments: [],\n\t\ttypeArguments: [],\n\t});\n\n\treturn [kiosk];\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchWalletKiosks = gql`\n\tquery fetchWalletKiosks($wallet: String!) {\n\t\tkiosks: kiosks_by_owner_address(owner_address: $wallet) {\n\t\t\tid\n\t\t\tis_origin_byte\n\t\t\tis_personal\n\t\t\towner_address\n\t\t\tprofits\n\t\t\tis_shared\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchWalletKiosks } from '../../graphql/queries/fetchWalletKiosks';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { type SharedKioskState } from '../kiosk/sharedKioskState.type';\n\nexport const getOBKiosk = async ({\n\twallet,\n\tsharedKioskState,\n}: {\n\twallet: string;\n\tsharedKioskState?: SharedKioskState;\n}): Promise<any> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchWalletKiosks,\n\t\tvariables: { wallet: addLeadingZerosAfter0x(wallet) },\n\t});\n\n\tif (sharedKioskState && !sharedKioskState?.ownerKiosks) {\n\t\tsharedKioskState.ownerKiosks = res?.kiosks;\n\t}\n\n\treturn res?.kiosks?.filter((kiosk: any) => kiosk?.is_origin_byte && kiosk?.is_shared)?.[0]?.id;\n};\n","import { type SharedKioskState } from '../kiosk/sharedKioskState.type';\nimport { createOBKiosk } from './createOBKiosk';\nimport { getOBKiosk } from './getOBKiosk';\n\ntype Args = {\n\ttx: any;\n\taddress: string;\n\tkioskToUseIfExists?: string;\n\tcreateMethod?: string;\n\tsharedKioskState?: SharedKioskState;\n};\n\nexport const getOrCreateOBKiosk = async ({\n\ttx,\n\taddress,\n\tkioskToUseIfExists,\n\tcreateMethod,\n\tsharedKioskState,\n}: Args) => {\n\tif (kioskToUseIfExists) {\n\t\treturn {\n\t\t\tkiosk: kioskToUseIfExists,\n\t\t\tisNewKiosk: false,\n\t\t};\n\t}\n\n\tif (!sharedKioskState?.ownerKiosks) {\n\t\tconst existingKiosk = await getOBKiosk({ wallet: address, sharedKioskState });\n\t\tif (existingKiosk) {\n\t\t\treturn {\n\t\t\t\tkiosk: existingKiosk,\n\t\t\t\tisNewKiosk: false,\n\t\t\t};\n\t\t}\n\t}\n\n\tconst [newKiosk] = await createOBKiosk({ tx, createMethod });\n\treturn {\n\t\tkiosk: newKiosk,\n\t\tisNewKiosk: true,\n\t};\n};\n","import { ORIGIN_BYTE_BID_NONCE_TYPE } from '../../constants';\n\nexport const isOriginByteBid = (bidType: string): boolean =>\n\tbidType === ORIGIN_BYTE_BID_NONCE_TYPE ||\n\tbidType === '0x2::Kiosk::Kiosk' ||\n\tbidType === '0x2::kiosk::Kiosk';\n","export const isOriginByteCollection = (transferPolicies: any): boolean => {\n\tconst hasOriginBytePolicies =\n\t\ttransferPolicies?.filter((policy: any) => policy?.is_origin_byte && !policy?.is_disabled)\n\t\t\t?.length > 0;\n\n\tconst hasNonOriginBytePoliciesWithRules = transferPolicies\n\t\t?.filter((policy: any) => !policy?.is_origin_byte && !policy?.is_disabled)\n\t\t?.some((policy: any) => policy?.rules?.length > 0);\n\n\treturn Boolean(hasOriginBytePolicies && !hasNonOriginBytePoliciesWithRules);\n};\n","import { type Transaction } from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tkiosk: string;\n};\n\nexport const shareOriginByteKiosk = ({ tx, kiosk }: Args) => {\n\ttx.moveCall({\n\t\ttarget: '0x2::transfer::public_share_object',\n\t\targuments: [tx.object(kiosk)],\n\t\ttypeArguments: ['0x2::kiosk::Kiosk'],\n\t});\n};\n","import { type SuiClient } from '@mysten/sui/client';\nimport { isValidSuiObjectId } from '@mysten/sui/utils';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\n\nexport const getObjectType = async ({\n\tsuiClient,\n\tobjectId,\n}: {\n\tsuiClient: SuiClient;\n\tobjectId: string;\n}): Promise<string> => {\n\tconst normalizedObjectId = objectId.startsWith('0x')\n\t\t? addLeadingZerosAfter0x(objectId)\n\t\t: objectId;\n\tif (isValidSuiObjectId(normalizedObjectId)) {\n\t\tconst res = await suiClient.getObject({ id: normalizedObjectId, options: { showType: true } });\n\t\treturn res.data.type;\n\t}\n\n\treturn '';\n};\n","import { type TransactionArgument } from '@mysten/sui/transactions';\nimport { normalizeSuiObjectId, SUI_CLOCK_OBJECT_ID } from '@mysten/sui/utils';\nimport {\n\tBLUEMOVE_CREATOR_CONFIG_OBJECT,\n\tBLUEMOVE_MARKET_CONFIG_OBJECT,\n\tBLUEMOVE_OFFER_DATA_OBJECT,\n\tBLUEMOVE_ROYALTY_COLLECTION_OBJECT,\n\tTRADEPORT_BIDDING_STORE,\n\tTRADEPORT_KIOSK_BIDDING_STORE,\n\tTRADEPORT_MULTI_BID_PACKAGE,\n\tTRADEPORT_MULTI_BID_STORE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchMultibidChainIdById } from '../../graphql/queries/fetchMultibidById';\nimport { getRoyaltyRuleModule } from '../../helpers/getRoyaltyRuleModule';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { getTransferPolicyRuleNamesFromSuiObject } from '../../helpers/getTransferPolicyRuleNamesFromSuiObject';\nimport { hasPersonalKioskRule } from '../../helpers/hasPersonalKioskRule';\nimport { hasNativeKioskTransferPolicyRules } from '../../helpers/hasTransferPolicyRules';\nimport { isSingleBid } from '../../helpers/isSIngleBid';\nimport { assertNftInSharedKiosk } from '../../helpers/kiosk/assertNftInSharedKiosk';\nimport {\n\tgetNativeKioskTransferPolicies,\n\tknownTransferPolicyRules,\n} from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { getRulePackageId } from '../../helpers/kiosk/getRulePackageId';\nimport { isTradePortKioskBid } from '../../helpers/kiosk/isTradePortKioskBid';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { lockNftInsideKioskIfNotLocked } from '../../helpers/kiosk/lockNftInsideKioskIfNotLocked';\nimport {\n\tresolveCustomTransferPolicyRules,\n\tcustomTransferPolicyRuleNames,\n} from '../../helpers/kiosk/resolveCustomTransferPolicyRules';\nimport { resolveTransferPolicies } from '../../helpers/kiosk/resolveTransferPolicies';\nimport { confirmOBTranfer } from '../../helpers/originByte/confirmOBTranfer';\nimport { getOBBidderKiosk } from '../../helpers/originByte/getOBBidderKiosk';\nimport { isOriginByteBid } from '../../helpers/originByte/isOriginByteBid';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { getObjectType } from '../../helpers/rpc/getObjectType';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { type AcceptNftBidTx } from './acceptNftBids';\n\nexport function addTradeportAcceptNftBidTx({\n\ttx,\n\tsharedObjects,\n\tbidNonce,\n\tnftTokenId,\n\tnftType,\n}: AcceptNftBidTx) {\n\tconst { collection, royaltyStrategy } = sharedObjects;\n\n\tif (collection && royaltyStrategy) {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::ob_accept_bid',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_BIDDING_STORE),\n\t\t\t\ttx.pure.address(bidNonce),\n\t\t\t\ttx.object(nftTokenId),\n\t\t\t\ttx.object(collection),\n\t\t\t\ttx.object(royaltyStrategy),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t} else {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::accept_bid',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_BIDDING_STORE),\n\t\t\t\ttx.pure.address(bidNonce),\n\t\t\t\ttx.object(nftTokenId),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t}\n}\n\nexport async function addTradeportKioskAcceptNftBidTx({\n\ttx,\n\tsuiClient,\n\tkioskClient,\n\ttransferPolicies,\n\tseller,\n\tkioskTx,\n\tbidNonce,\n\tnftTokenId,\n\tnftType,\n\troyaltyRulePackageId,\n\troyaltyRuleModule,\n\tbidAmount,\n\tshouldSplitRoyaltyFromUserGasCoins,\n\tbeforeResolveKioskTransferRequest,\n}: AcceptNftBidTx) {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tawait lockNftInsideKioskIfNotLocked({\n\t\ttx,\n\t\tkioskClient,\n\t\tkioskTx,\n\t\tnftTokenId,\n\t\tnftType,\n\t\ttransferPolicyId,\n\t});\n\n\tif (beforeResolveKioskTransferRequest) {\n\t\tconst [feeCoin, transferRequest] = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::accept_bid_with_price_lock',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_KIOSK_BIDDING_STORE),\n\t\t\t\ttx.pure.address(bidNonce),\n\t\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\t\ttx.pure.address(nftTokenId),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\n\t\tawait beforeResolveKioskTransferRequest?.(feeCoin, transferRequest);\n\n\t\tawait resolveTransferPolicies({\n\t\t\ttx,\n\t\t\ttransferPolicies,\n\t\t\tsuiClient,\n\t\t\twalletAddress: seller,\n\t\t\tkioskTx,\n\t\t\tkioskClient,\n\t\t\tnftType,\n\t\t\tprice: bidAmount?.toString(),\n\t\t\ttransferRequest,\n\t\t\tcoinToSplit: feeCoin,\n\t\t\tshouldSkipKioskLocking: true,\n\t\t});\n\n\t\ttx.transferObjects([tx.object(feeCoin)], tx.pure.address(addLeadingZerosAfter0x(seller)));\n\t} else {\n\t\tconst [feeCoin, transferRequest] = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::accept_bid_with_purchase_cap',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_KIOSK_BIDDING_STORE),\n\t\t\t\ttx.pure.address(bidNonce),\n\t\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\t\ttx.pure.address(nftTokenId),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\n\t\tif (!shouldSplitRoyaltyFromUserGasCoins) {\n\t\t\ttx.moveCall({\n\t\t\t\ttarget: `${royaltyRulePackageId}::${royaltyRuleModule}::pay`,\n\t\t\t\ttypeArguments: [nftType],\n\t\t\t\targuments: [tx.object(transferPolicyId), transferRequest, feeCoin],\n\t\t\t});\n\t\t}\n\n\t\tawait resolveTransferPolicies({\n\t\t\ttx,\n\t\t\ttransferPolicies,\n\t\t\tsuiClient,\n\t\t\twalletAddress: seller,\n\t\t\tkioskTx,\n\t\t\tkioskClient,\n\t\t\tnftType,\n\t\t\tprice: shouldSplitRoyaltyFromUserGasCoins ? bidAmount?.toString() : '0',\n\t\t\ttransferRequest,\n\t\t\tshouldSkipKioskLocking: true,\n\t\t\tshouldSkipResolvingRoyaltyRule: !shouldSplitRoyaltyFromUserGasCoins,\n\t\t});\n\n\t\tif (shouldSplitRoyaltyFromUserGasCoins) {\n\t\t\ttx.transferObjects([tx.object(feeCoin)], tx.pure.address(addLeadingZerosAfter0x(seller)));\n\t\t}\n\t}\n}\n\nexport async function addOriginByteAcceptNftBidTx({\n\ttx,\n\tsuiClient,\n\tsharedObjects,\n\tsellerKiosk,\n\tbidNonce,\n\tnftTokenId,\n\tnftType,\n\titemOwner,\n}: AcceptNftBidTx) {\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: sellerKiosk,\n\t\twalletAddress: itemOwner,\n\t});\n\n\tconst receiverKiosk = await getOBBidderKiosk({ suiClient, bidNonce });\n\n\tlet transferRequest: TransactionArgument;\n\tif (sellerKiosk) {\n\t\ttransferRequest = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::bidding::sell_nft_from_kiosk',\n\t\t\targuments: [\n\t\t\t\ttx.object(bidNonce),\n\t\t\t\ttx.object(sellerKiosk),\n\t\t\t\ttx.object(receiverKiosk),\n\t\t\t\ttx.pure.address(nftTokenId),\n\t\t\t],\n\t\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t\t});\n\t} else {\n\t\ttransferRequest = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::bidding::sell_nft',\n\t\t\targuments: [tx.object(bidNonce), tx.object(receiverKiosk), tx.object(nftTokenId)],\n\t\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t\t});\n\t}\n\n\tconfirmOBTranfer({ tx, sharedObjects, transferRequest, nftType });\n}\n\nexport function addBluemoveAcceptNftBidTx({\n\ttx,\n\tnftTokenId,\n\tnftType,\n\tbidNonce,\n\tisListedOnBluemove,\n}: AcceptNftBidTx) {\n\tif (isListedOnBluemove) {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::marketplace::delist',\n\t\t\targuments: [tx.object(BLUEMOVE_MARKET_CONFIG_OBJECT), tx.pure.address(nftTokenId)],\n\t\t\ttypeArguments: [nftType, nftType],\n\t\t});\n\t}\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::offer_item::accept_offer_nft',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_MARKET_CONFIG_OBJECT),\n\t\t\ttx.object(BLUEMOVE_ROYALTY_COLLECTION_OBJECT),\n\t\t\ttx.object(BLUEMOVE_CREATOR_CONFIG_OBJECT),\n\t\t\ttx.object(BLUEMOVE_OFFER_DATA_OBJECT),\n\t\t\ttx.pure.u64(bidNonce),\n\t\t\tisListedOnBluemove\n\t\t\t\t? ({\n\t\t\t\t\t\tkind: 'Result',\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t} as any)\n\t\t\t\t: tx.object(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addSingleBidAcceptNftBidTx(txData: AcceptNftBidTx) {\n\tconst { nftType, tx, bidNonce, multiBidId, nftTokenId, suiClient, sharedKioskState } = txData;\n\tconst transferPolicies = getNativeKioskTransferPolicies(txData?.transferPolicies);\n\tconst transferPolicy = transferPolicies?.find(\n\t\t(policy: { rules: any[] }) => policy?.rules?.length > 0,\n\t);\n\tconst { chain_id: multiBidChainId, cancelled_at } = multiBidId\n\t\t? ((\n\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\tchain: 'sui',\n\t\t\t\t\tquery: fetchMultibidChainIdById,\n\t\t\t\t\tvariables: { multiBidId },\n\t\t\t\t})\n\t\t\t)?.multi_bids?.[0] ?? {})\n\t\t: {};\n\n\tif (multiBidChainId && cancelled_at) {\n\t\tthrow new Error(`MultiBid ${multiBidId} already cancelled`);\n\t}\n\n\tif (transferPolicy) {\n\t\tconst allRules = await getTransferPolicyRuleNamesFromSuiObject({\n\t\t\tsuiClient,\n\t\t\ttransferPolicyId: transferPolicy.id,\n\t\t});\n\n\t\tconst unsupportedRule = allRules.find((r) => {\n\t\t\tconst moduleName = r.split('::').at(1);\n\t\t\treturn (\n\t\t\t\t!knownTransferPolicyRules.includes(moduleName) &&\n\t\t\t\t!customTransferPolicyRuleNames.includes(moduleName)\n\t\t\t);\n\t\t});\n\t\tif (unsupportedRule) {\n\t\t\tthrow new Error(\n\t\t\t\t`Found unsupported transfer policy rule ${unsupportedRule} for ${transferPolicy.id} of ${nftType}`,\n\t\t\t);\n\t\t}\n\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tsharedKioskState,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tif (!txData?.sellerKiosk) {\n\t\t\t\t\tkioskTx.place({\n\t\t\t\t\t\titem: txData?.nftTokenId,\n\t\t\t\t\t\titemType: txData?.nftType,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst [transferRequest] = tx.moveCall({\n\t\t\t\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::accept_bid_with_transfer_policy`,\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(SUI_CLOCK_OBJECT_ID),\n\t\t\t\t\t\ttx.object(TRADEPORT_MULTI_BID_STORE),\n\t\t\t\t\t\ttx.pure.id(normalizeSuiObjectId(bidNonce)),\n\t\t\t\t\t\ttx.pure.option('id', multiBidChainId),\n\t\t\t\t\t\ttx.object(kioskTx.getKiosk() as any),\n\t\t\t\t\t\ttx.object(kioskTx.getKioskCap() as any),\n\t\t\t\t\t\ttx.pure.id(nftTokenId),\n\t\t\t\t\t\ttx.object(transferPolicy.id),\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\t// The contract resolves itself to the standard transfer policy rules\n\t\t\t\t// Resolve custom transfer policy rules (e.g. table_allowlist_rule)\n\t\t\t\tconst customRules = allRules\n\t\t\t\t\t.filter((r) => customTransferPolicyRuleNames.includes(r.split('::').at(1)))\n\t\t\t\t\t.map((rule) => ({\n\t\t\t\t\t\trule,\n\t\t\t\t\t\trulePackageId: rule.split('::')[0],\n\t\t\t\t\t\tmoduleName: rule.split('::')[1],\n\t\t\t\t\t}));\n\t\t\t\tif (customRules.length > 0) {\n\t\t\t\t\tresolveCustomTransferPolicyRules({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\trules: customRules,\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\tnftType,\n\t\t\t\t\t\tpolicyId: transferPolicy.id,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget: '0x2::transfer_policy::confirm_request',\n\t\t\t\t\targuments: [tx.object(transferPolicy.id), transferRequest],\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\tif (txData.sellerKiosk) {\n\t\tthrow new Error(`Can't use NFT in kiosk without transfer policy`);\n\t}\n\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::accept_bid_without_transfer_policy`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [\n\t\t\ttx.object(SUI_CLOCK_OBJECT_ID),\n\t\t\ttx.object(TRADEPORT_MULTI_BID_STORE),\n\t\t\ttx.pure.id(bidNonce),\n\t\t\ttx.pure.option('id', multiBidChainId),\n\t\t\ttx.object(nftTokenId),\n\t\t],\n\t});\n}\n\nexport async function addTradePortAcceptNftBidTxHandler(txData: AcceptNftBidTx) {\n\tconst bidType = await getObjectType({\n\t\tsuiClient: txData?.suiClient,\n\t\tobjectId: normalizeSuiObjectId(txData?.bidNonce),\n\t});\n\n\tif (isSingleBid(bidType)) {\n\t\tawait addSingleBidAcceptNftBidTx(txData);\n\t\treturn;\n\t}\n\n\tif (isOriginByteBid(bidType)) {\n\t\tif (isOriginByteCollection(txData?.transferPolicies)) {\n\t\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\t\tawait addOriginByteAcceptNftBidTx({ ...txData, sharedObjects });\n\n\t\t\treturn;\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`You cannot accept an Origin Byte bid with a NFT outside of an Origin Byte kiosk. Nft Token Id: ${txData?.nftTokenId}`,\n\t\t);\n\t}\n\n\tif (isTradePortKioskBid(bidType)) {\n\t\tif (txData?.sellerKiosk) {\n\t\t\tconst royaltyRuleModule = getRoyaltyRuleModule(txData?.nftType);\n\t\t\tconst royaltyRulePackageId = await getRulePackageId({\n\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\tnftType: txData?.nftType,\n\t\t\t\truleType: 'royalty_rule',\n\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t});\n\n\t\t\treturn kioskTxWrapper({\n\t\t\t\ttx: txData?.tx,\n\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\tshouldConvertToPersonalKiosk: Boolean(hasPersonalKioskRule(txData?.transferPolicies)),\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\tfailIfNoKiosk: Boolean(txData?.sellerKiosk),\n\t\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tif (hasNativeKioskTransferPolicyRules(txData?.transferPolicies) && !txData?.sellerKiosk) {\n\t\t\t\t\t\tkioskTx.place({\n\t\t\t\t\t\t\titem: txData?.nftTokenId,\n\t\t\t\t\t\t\titemType: txData?.nftType,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tawait addTradeportKioskAcceptNftBidTx({\n\t\t\t\t\t\t...txData,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\troyaltyRulePackageId,\n\t\t\t\t\t\troyaltyRuleModule,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`You cannot accept an Native Kiosk Bid with a NFT outside of a native kiosk. Nft Token Id: ${txData?.nftTokenId}`,\n\t\t);\n\t}\n\n\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\taddTradeportAcceptNftBidTx({ ...txData, sharedObjects });\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchMultibidChainIdById = gql`\n\tquery fetchMultibidById($multiBidId: uuid!) {\n\t\tmulti_bids(where: { id: { _eq: $multiBidId } }) {\n\t\t\tchain_id\n\t\t\tcancelled_at\n\t\t}\n\t}\n`;\n\nexport const fetchMultibidChainIdAndSingleBidsById = gql`\n\tquery fetchMultibidChainIdAndSingleBidsById($multiBidId: uuid!) {\n\t\tmulti_bids(where: { id: { _eq: $multiBidId } }) {\n\t\t\tchain_id\n\t\t\tcancelled_at\n\t\t\tbids(where: { status: { _in: [\"active\", \"inactive\", \"expired\"] } }) {\n\t\t\t\tnonce\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const fetchMultibidChainIdAndExpiredSingleBidsById = gql`\n\tquery fetchMultibidChainIdAndExpiredSingleBidsById($multiBidId: uuid!, $expiredBidLimit: Int!) {\n\t\tmulti_bids(where: { id: { _eq: $multiBidId } }) {\n\t\t\tchain_id\n\t\t\tcancelled_at\n\t\t\tbids(where: { status: { _eq: \"expired\" } }, limit: $expiredBidLimit) {\n\t\t\t\tnonce\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { type KioskClient, type KioskTransaction } from '@mysten/kiosk';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { getKioskIdFromKioskTx } from './getKioskIdFromKioskTx';\n\nexport const lockNftInsideKioskIfNotLocked = async ({\n\ttx,\n\tkioskClient,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n\ttransferPolicyId,\n}: {\n\ttx: Transaction;\n\tkioskClient: KioskClient;\n\tkioskTx: KioskTransaction;\n\tnftTokenId: string;\n\tnftType: string;\n\ttransferPolicyId: string;\n}) => {\n\tif (\n\t\tlockNftInsideKioskIfKioskCreatedInThisTx({ tx, kioskTx, nftTokenId, nftType, transferPolicyId })\n\t) {\n\t\treturn;\n\t}\n\n\tconst kioskId = getKioskIdFromKioskTx({ kioskTx, tx });\n\tconst res = await kioskClient.getKiosk({ id: kioskId });\n\tconst nftInKiosk = res.items.find((i) => i.objectId === nftTokenId);\n\tlet takeFromKiosk = true;\n\n\tif (!nftInKiosk) {\n\t\tconst result = (await kioskClient.client.getObject({\n\t\t\tid: nftTokenId,\n\t\t\toptions: { showOwner: true },\n\t\t})) as { data: { owner: { AddressOwner?: string } } };\n\t\tif (result.data.owner.AddressOwner) {\n\t\t\t// NFT is owned by account\n\t\t\ttakeFromKiosk = false;\n\t\t} else {\n\t\t\tthrow new Error(`NFT ${nftTokenId} is not found in kiosk ${kioskId}`);\n\t\t}\n\t}\n\n\tif (!nftInKiosk?.isLocked) {\n\t\tlet takenNftId;\n\n\t\tif (takeFromKiosk) {\n\t\t\tconst takenNft = kioskTx.take({\n\t\t\t\titemId: nftTokenId,\n\t\t\t\titemType: nftType,\n\t\t\t});\n\n\t\t\ttakenNftId = 'value' in takenNft ? takenNft.value : takenNft;\n\t\t}\n\n\t\tkioskTx.lock({\n\t\t\titemId: takenNftId ?? nftTokenId,\n\t\t\titemType: nftType,\n\t\t\tpolicy: transferPolicyId,\n\t\t});\n\t}\n};\n\nfunction lockNftInsideKioskIfKioskCreatedInThisTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n\ttransferPolicyId,\n}: {\n\ttx: Transaction;\n\tkioskTx: any;\n\tnftTokenId: string;\n\tnftType: string;\n\ttransferPolicyId: string;\n}) {\n\tif (Array.isArray(kioskTx.kiosk.NestedResult)) {\n\t\tconst transaction = tx.blockData.transactions[kioskTx.kiosk.NestedResult[0]] as {\n\t\t\ttarget: string;\n\t\t};\n\t\tif (\n\t\t\ttransaction.target ===\n\t\t\t\t'0x0000000000000000000000000000000000000000000000000000000000000002::kiosk::new' ||\n\t\t\ttransaction.target ===\n\t\t\t\t'0x0000000000000000000000000000000000000000000000000000000000000002::personal_kiosk::new'\n\t\t) {\n\t\t\t// just created in this transaction block kiosk\n\t\t\tkioskTx.lock({\n\t\t\t\titemId: nftTokenId,\n\t\t\t\titemType: nftType,\n\t\t\t\tpolicy: transferPolicyId,\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\tthrow new Error(`Unsupported kiosk move call ${transaction.target}`);\n\t}\n\n\treturn false;\n}\n","import { type SuiClient } from '@mysten/sui/client';\n\nexport const getOBBidderKiosk = async ({\n\tsuiClient,\n\tbidNonce,\n}: {\n\tsuiClient: SuiClient;\n\tbidNonce: string;\n}) => {\n\tconst bidObject = (await suiClient.call('sui_getObject', [\n\t\tbidNonce,\n\t\t{ showContent: true },\n\t])) as any;\n\treturn bidObject.data?.content?.fields?.kiosk;\n};\n","import { type SuiClient } from '@mysten/sui/client';\nimport { NON_KIOSK_LISTING_NONCE_TYPE } from '../constants';\nimport { getObjectType } from './rpc/getObjectType';\n\nexport const isNonKioskListing = async ({\n\tsuiClient,\n\tlistingNonce,\n}: {\n\tsuiClient: SuiClient;\n\tlistingNonce: string;\n}): Promise<boolean> => {\n\tconst listingType = await getObjectType({ suiClient, objectId: listingNonce });\n\treturn listingType === NON_KIOSK_LISTING_NONCE_TYPE;\n};\n","import {\n\tBLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT,\n\tBLUEMOVE_MARKET_CONFIG_OBJECT,\n\tHYPERSPACE_MP_TRANSFER_POLICY_TYPE,\n\tKEEPSAKE_MARKETPLACE_KIOSK,\n\tKEEPSAKE_MARKETPLACE_OBJECT,\n\tORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK,\n\tSOUFFL3_VERSION_OBJECT,\n\tTOCEN_MARKETPLACE_OBJECT,\n\tTRADEPORT_KIOSK_LISTING_STORE,\n\tTRADEPORT_LISTING_STORE,\n\tTRADEPORT_LISTINGS_PACKAGE,\n\tTRADEPORT_LISTINGS_STORE,\n\tTRADEPORT_ORDERBOOK_STORE,\n\tXOCIETY_FRONTIER_COLLECTION_ID,\n} from '../../constants';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { hasNativeKioskTransferPolicyRules } from '../../helpers/hasTransferPolicyRules';\nimport { isNonKioskListing } from '../../helpers/isNonKioskListing';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { takeAndBorrowNftFromKiosk } from '../../helpers/kiosk/takeAndBorrowNftFromKiosk';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { type UnlistListingTx } from './unlistListings';\n\nexport function addLegacyTradePortUnlistTx({ tx, listingNonce, nftType }: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget: '0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::listings::unlist',\n\t\targuments: [tx.object(TRADEPORT_LISTING_STORE), tx.pure.address(listingNonce)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addLegacyTradePortKioskUnlistTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n}: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_listings::unlist',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_LISTING_STORE),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addTradePortUnlistTx({ tx, nftTokenId, nftType }: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::cancel_ob_listing_without_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addKioskTradePortUnlistTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n}: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::cancel_ob_listing_with_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addOriginByteUnlistTx({\n\ttx,\n\tsharedObjects,\n\tlistingNonce,\n\tprice,\n\tnftTokenId,\n\tnftType,\n}: UnlistListingTx) {\n\tconst { orderbook } = sharedObjects;\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::cancel_ask',\n\t\targuments: [\n\t\t\ttx.object(orderbook),\n\t\t\ttx.object(listingNonce),\n\t\t\ttx.pure.u64(price),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n}\n\nexport function addSouffl3UnlistTx({ tx, listingNonce, nftType }: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x30d90b5b67be77e6e06f02dae9f0f2fcdad16e38854316ae8a7b4f5b4971f5e0::Market::delist_generic',\n\t\targuments: [tx.object(SOUFFL3_VERSION_OBJECT), tx.object(listingNonce)],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n}\n\nexport function addBluemoveUnlistTx({ tx, nftTokenId, nftType }: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::marketplace::delist_and_take',\n\t\targuments: [tx.object(BLUEMOVE_MARKET_CONFIG_OBJECT), tx.pure.address(nftTokenId)],\n\t\ttypeArguments: [nftType, nftType],\n\t});\n}\n\nexport async function addBluemoveKioskUnlistTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n}: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xcc97b74ed95c8e8a3ed88050a898727dee37896da579fc400d482b64db6149ff::kiosk_trade::kiosk_delist',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addKeepsakeUnlistTx({ tx, nftTokenId, nftType }: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x2be8c4a1a3cea4d3255d870d367c87838a8cc2bfe4f216a6b67b153027087a7::keepsake_marketplace::delist_and_take',\n\t\targuments: [\n\t\t\ttx.object(KEEPSAKE_MARKETPLACE_OBJECT),\n\t\t\ttx.object(KEEPSAKE_MARKETPLACE_KIOSK),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addHyperspaceKioskUnlistTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n}: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x6ea97b03c441edd54ae89224bf9560e583ee66c37e6c246f5db35258e580ba94::hyperspace::delist',\n\t\targuments: [\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType, HYPERSPACE_MP_TRANSFER_POLICY_TYPE],\n\t});\n}\n\nexport function addTocenUnlistTx({ tx, nftTokenId, nftType }: UnlistListingTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x3605d91c559e80cf8fdeabae9abaccb0bc38f96eac0b32bf47e95a9159a5277f::tocen_marketplace::delist_and_take',\n\t\targuments: [tx.object(TOCEN_MARKETPLACE_OBJECT), tx.pure.address(nftTokenId)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addSomisUnlistTx({\n\ttx,\n\tsharedObjects,\n\tnftTokenId,\n\tnftType,\n\tprice,\n}: UnlistListingTx) {\n\tconst { marketplace } = sharedObjects;\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xf0b0beb956e26bde50dbd6ac393026c4525aee3b194a9478f09748f7211b5a02::marketplace::cancel_ask',\n\t\targuments: [tx.object(marketplace), tx.pure.address(nftTokenId), tx.pure.u64(price)],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n}\n\nexport async function addTradePortUnlistTxHandler(txData: UnlistListingTx) {\n\tif (\n\t\ttxData?.listingNonce &&\n\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\taddOriginByteUnlistTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\t// If non kiosk listing (nonce starts with \"0::\")\n\tif (txData?.listingNonce?.startsWith('0::')) {\n\t\taddTradePortUnlistTx(txData);\n\t\treturn;\n\t}\n\n\t// If kiosk listing (nonce starts with \"1::\")\n\tif (txData?.listingNonce?.startsWith('1::')) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addKioskTradePortUnlistTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\n\t\t\t\t// If XOCIETY Frontier collection, take NFT out of kiosk and transfer it back to user (seller)\n\t\t\t\tif (txData?.collectionId === XOCIETY_FRONTIER_COLLECTION_ID) {\n\t\t\t\t\tconst borrowedItem = await takeAndBorrowNftFromKiosk({\n\t\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\t\tnftTokenId: txData?.nftTokenId,\n\t\t\t\t\t\tnftType: txData?.nftType,\n\t\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\t\tkioskOwner: txData?.seller,\n\t\t\t\t\t});\n\n\t\t\t\t\ttxData?.tx.transferObjects(\n\t\t\t\t\t\t[txData?.tx.object(borrowedItem)],\n\t\t\t\t\t\ttxData?.tx.pure.address(addLeadingZerosAfter0x(txData?.seller)),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\t// Fallback to legacy contract logic\n\tif (\n\t\ttxData?.listingNonce &&\n\t\t(await isNonKioskListing({ suiClient: txData?.suiClient, listingNonce: txData?.listingNonce }))\n\t) {\n\t\tif (txData?.isPartOfRelist) {\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot relist this non kiosk NFT in one transaction from legacy contract. You must unlist and list again',\n\t\t\t);\n\t\t}\n\n\t\taddLegacyTradePortUnlistTx(txData);\n\t\treturn;\n\t}\n\n\t// If legacy kiosk listing\n\tif (txData?.sellerKiosk) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addLegacyTradePortKioskUnlistTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\n\t\t\t\t// if nft has no transfer policy rule but is inside a kiosk, take it out of the kiosk\n\t\t\t\tif (!hasNativeKioskTransferPolicyRules(txData?.transferPolicies)) {\n\t\t\t\t\tconst borrowedItem = await takeAndBorrowNftFromKiosk({\n\t\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\t\tnftTokenId: txData?.nftTokenId,\n\t\t\t\t\t\tnftType: txData?.nftType,\n\t\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\t\tkioskOwner: txData?.seller,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Transfer the borrowed item back to the seller\n\t\t\t\t\ttxData?.tx.transferObjects(\n\t\t\t\t\t\t[txData?.tx.object(borrowedItem)],\n\t\t\t\t\t\ttxData?.tx.pure.address(addLeadingZerosAfter0x(txData?.seller)),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\t// If legacy non kiosk listing\n\taddLegacyTradePortUnlistTx(txData);\n}\n\nexport async function addHyperspaceUnlistTxHandler(txData: UnlistListingTx) {\n\tif (\n\t\ttxData?.listingNonce &&\n\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\taddOriginByteUnlistTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\treturn kioskTxWrapper({\n\t\ttx: txData?.tx,\n\t\tkioskClient: txData?.kioskClient,\n\t\tkioskOwner: txData?.seller,\n\t\tkiosk: txData?.sellerKiosk,\n\t\tshouldAllowNftUnsharedKiosk: true,\n\t\tsharedKioskState: txData?.sharedKioskState,\n\t\tshouldUseSharedKioskTx: false,\n\t\tasync runCommands(kioskTx) {\n\t\t\tawait addHyperspaceKioskUnlistTx({\n\t\t\t\t...txData,\n\t\t\t\tkioskTx,\n\t\t\t});\n\t\t},\n\t});\n}\n\nexport async function addBluemoveUnlistTxHandler(txData: UnlistListingTx) {\n\tif (\n\t\ttxData?.listingNonce &&\n\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\taddOriginByteUnlistTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\tif (txData?.sellerKiosk) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addBluemoveKioskUnlistTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\taddBluemoveUnlistTx(txData);\n}\n\nexport async function addClutchyUnlistTxHandler(txData: UnlistListingTx) {\n\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\taddOriginByteUnlistTx({ ...txData, sharedObjects });\n}\n\nexport async function addSouffl3UnlistTxHandler(txData: UnlistListingTx) {\n\taddSouffl3UnlistTx(txData);\n}\n\nexport async function addSomisUnlistTxHandler(txData: UnlistListingTx) {\n\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\n\tif (sharedObjects?.marketplace) {\n\t\taddSomisUnlistTx(txData);\n\t\treturn;\n\t}\n\n\taddOriginByteUnlistTx({ ...txData, sharedObjects });\n}\n\nexport async function addKeepsakeUnlistTxHandler(txData: UnlistListingTx) {\n\taddKeepsakeUnlistTx(txData);\n}\n\nexport function addTocenUnlistTxHandler(txData: UnlistListingTx) {\n\taddTocenUnlistTx(txData);\n}\n","import { type KioskClient, type KioskTransaction } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchBidsById } from '../../graphql/queries/fetchBidsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport {\n\taddBluemoveAcceptNftBidTx,\n\taddOriginByteAcceptNftBidTx,\n\taddTradePortAcceptNftBidTxHandler,\n} from './addAcceptNftBidTxs';\n\nexport type AcceptNftBidTx = {\n\ttx: Transaction;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tkioskTx?: any;\n\tsharedKioskState?: SharedKioskState;\n\tseller?: string;\n\tbidNonce: string;\n\tnftType: string;\n\tnftTokenId: string;\n\titemOwner: string;\n\tlistingPrice: number;\n\tbidAmount: number;\n\tsellerKiosk: string;\n\tisListedOnBluemove: boolean;\n\tbidMarketName: string;\n\troyaltyRulePackageId?: string;\n\troyaltyRuleModule?: string;\n\tshouldSplitRoyaltyFromUserGasCoins?: boolean;\n\tbeforeResolveKioskTransferRequest?: (coin: any, transferRequest: any) => void | Promise<void>;\n\tmultiBidId?: string;\n};\n\nexport type AcceptNftBids = {\n\tbidIds: string[];\n\twalletAddress: string;\n\ttx?: Transaction;\n\tkioskTx?: KioskTransaction;\n\tbeforeResolveKioskTransferRequest?: (coin: any, transferRequest: any) => void | Promise<void>;\n};\n\nconst ERROR_UNLIST_FIRST = 'Item must be unlisted first before you can accept a solo bid on it';\n\nexport const acceptNftBids = async (\n\t{\n\t\tbidIds,\n\t\twalletAddress,\n\t\ttx: existingTx,\n\t\tkioskTx,\n\t\tbeforeResolveKioskTransferRequest,\n\t}: AcceptNftBids,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchBidsById,\n\t\tvariables: { bidIds },\n\t});\n\n\tif (res?.bids?.length === 0) {\n\t\tthrow new Error('No bids found');\n\t}\n\n\tconst bidsForTracking = [];\n\tconst tx = existingTx ?? new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: kioskTx ?? undefined,\n\t};\n\n\tfor (const bid of res.bids) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(bid?.nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tif (addLeadingZerosAfter0x(bid?.bidder) === addLeadingZerosAfter0x(walletAddress)) {\n\t\t\tthrow new Error('Wallet cannot accept its own bid');\n\t\t}\n\n\t\tif (bid?.status !== 'active') {\n\t\t\tthrow new Error('Bid not active');\n\t\t}\n\n\t\tif (bid?.type !== 'solo') {\n\t\t\tthrow new Error('Bid is not an individual item bid. Use acceptCollectionBid() instead.');\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: bid?.collection?.id,\n\t\t\tcollectionChainState: bid?.collection?.chain_state,\n\t\t\tnft: bid?.nft,\n\t\t});\n\n\t\tconst transferPolicies = bid?.collection?.chain_state?.transfer_policies;\n\n\t\tconst txData: AcceptNftBidTx = {\n\t\t\ttx,\n\t\t\tkioskTx,\n\t\t\tsharedKioskState,\n\t\t\ttransferPolicies,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tbidNonce: bid?.nonce,\n\t\t\tnftType,\n\t\t\tlistingPrice: bid?.nft?.listings?.[0]?.price,\n\t\t\tnftTokenId: bid?.nft?.token_id,\n\t\t\titemOwner: bid?.nft?.owner,\n\t\t\tbidAmount: bid?.price,\n\t\t\tsellerKiosk: bid?.nft?.chain_state?.kiosk_id,\n\t\t\tseller: bid?.nft?.owner,\n\t\t\tisListedOnBluemove: bid?.nft?.listings?.[0]?.market_name === 'bluemove',\n\t\t\tbidMarketName: bid?.market_contract?.name,\n\t\t\tmultiBidId: bid?.multi_bid_id,\n\t\t\tbeforeResolveKioskTransferRequest,\n\t\t};\n\n\t\tswitch (txData.bidMarketName) {\n\t\t\tcase 'tradeport':\n\t\t\t\tif (txData?.listingPrice && txData?.listingPrice > 0) {\n\t\t\t\t\tthrow new Error(ERROR_UNLIST_FIRST);\n\t\t\t\t}\n\n\t\t\t\tawait addTradePortAcceptNftBidTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'clutchy':\n\t\t\tcase 'hyperspace':\n\t\t\tcase 'somis': {\n\t\t\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\t\t\tawait addOriginByteAcceptNftBidTx({ ...txData, sharedObjects });\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'bluemove':\n\t\t\t\taddBluemoveAcceptNftBidTx(txData);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Marketplace not supported');\n\t\t}\n\n\t\tbidsForTracking.push({\n\t\t\tnftType,\n\t\t\tcollectionId: bid?.nft?.collection_id,\n\t\t\tbidAmount: bid?.price,\n\t\t\tbidMarketName: bid?.market_contract?.name,\n\t\t\titemOwner: bid?.nft?.owner,\n\t\t\tbidder: bid?.bidder,\n\t\t});\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && bidsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'ACCEPT_NFT_BIDS',\n\t// \t\titems: bidsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchBidsById = gql`\n\tquery fetchBidsById($bidIds: [uuid!]) {\n\t\tbids(where: { id: { _in: $bidIds } }) {\n\t\t\tnonce\n\t\t\tprice\n\t\t\tstatus\n\t\t\ttype\n\t\t\treceiver\n\t\t\tbidder\n\t\t\tmulti_bid_id\n\t\t\tnft {\n\t\t\t\ttoken_id\n\t\t\t\tproperties\n\t\t\t\tchain_state\n\t\t\t\tcollection_id\n\t\t\t\towner\n\t\t\t\tcontract {\n\t\t\t\t\tproperties\n\t\t\t\t}\n\t\t\t\tlistings(where: { listed: { _eq: true } }) {\n\t\t\t\t\tprice\n\t\t\t\t\tmarket_name\n\t\t\t\t}\n\t\t\t}\n\t\t\tmarket_contract {\n\t\t\t\tname\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { Transaction } from '@mysten/sui/transactions';\nimport {\n\tTRADEPORT_NFT_STRATEGY_PACKAGE_ID,\n\tTRADEPORT_NFT_STRATEGY_MANAGER_ID,\n\tTRADEPORT_POOL_REGISTRY_ID,\n\tTRADEPORT_POOL_VERSIONED_ID,\n} from '../../constants';\nimport { getCollectionChainState } from '../../helpers/getCollectionChainState';\n\nexport type ApplyFtStrategy = {\n\tcollectionId: string;\n\tstrategyFtType?: string;\n\ttx?: Transaction;\n\tcollectionChainState?: Record<string, unknown>;\n};\n\nexport async function applyFtStrategy({\n\tcollectionId,\n\tstrategyFtType,\n\ttx: existingTx,\n\tcollectionChainState,\n}: ApplyFtStrategy): Promise<Transaction> {\n\tconst tx = existingTx ?? new Transaction();\n\tconst chainState = collectionChainState ?? (await getCollectionChainState(collectionId));\n\tconst nftStrategies = (chainState?.nft_strategies ?? {}) as Record<\n\t\tstring,\n\t\tRecord<string, unknown>\n\t>;\n\tconst nftStrategyKeys = Object.keys(nftStrategies);\n\tconst nftType = chainState?.nft_type as string;\n\n\tif (nftStrategyKeys.length === 0) {\n\t\tthrow new Error('No NFT strategies found for collection');\n\t}\n\n\tstrategyFtType = strategyFtType ?? nftStrategyKeys[0];\n\n\tif (!nftStrategyKeys.includes(strategyFtType)) {\n\t\tthrow new Error(`Specified FT type ${strategyFtType} is not supported for this collection`);\n\t}\n\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_NFT_STRATEGY_PACKAGE_ID}::tradeport_nft_strategy::apply_ft_strategy`,\n\t\ttypeArguments: [nftType, strategyFtType],\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_NFT_STRATEGY_MANAGER_ID),\n\t\t\ttx.object((nftStrategies[strategyFtType] as { kiosk_id: string }).kiosk_id),\n\t\t\ttx.object(TRADEPORT_POOL_REGISTRY_ID),\n\t\t\ttx.object(TRADEPORT_POOL_VERSIONED_ID),\n\t\t\ttx.object.clock(),\n\t\t],\n\t});\n\n\treturn tx;\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchCollectionChainState = gql`\n\tquery fetchCollectionChainState($collectionId: uuid!) @cached(ttl: 10) {\n\t\tcollections(where: { id: { _eq: $collectionId } }) {\n\t\t\tchain_state\n\t\t}\n\t}\n`;\n\nexport const fetchCollectionChainStateByFtType = gql`\n\tquery fetchCollectionChainStateByFtType($ftType: String!) @cached(ttl: 10) {\n\t\tcollections_by_ft_type(args: { coin_type: $ftType }, limit: 1) {\n\t\t\tchain_state\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../graphql/gqlChainRequest';\nimport {\n\tfetchCollectionChainState,\n\tfetchCollectionChainStateByFtType,\n} from '../graphql/queries/fetchCollectionChainState';\n\nexport const getCollectionChainState = async (\n\tcollectionId: string,\n): Promise<Record<string, unknown> | undefined> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchCollectionChainState,\n\t\tvariables: { collectionId },\n\t});\n\n\treturn res?.collections?.[0]?.chain_state;\n};\n\nexport const getCollectionChainStateByFtType = async (\n\tftType: string,\n): Promise<Record<string, unknown> | undefined> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchCollectionChainStateByFtType,\n\t\tvariables: {\n\t\t\tftType,\n\t\t},\n\t});\n\n\treturn res?.collections_by_ft_type?.[0]?.chain_state;\n};\n","import type { KioskClient, KioskTransaction } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchListingsById } from '../../graphql/queries/fetchListingsById';\nimport { addThirdPartyTxFee } from '../../helpers/addThirdPartyTxFee';\nimport { deserializeOrCreateTxBlock } from '../../helpers/deserializeOrCreateTxBlock';\nimport { extractSwapResultCoinFromTxBlock } from '../../helpers/extractSwapResultCoin';\nimport { getNftType } from '../../helpers/getNftType';\nimport {\n\tpreProcessSharedBulkBuyingData,\n\ttype SharedBulkBuyingDataByNftType,\n} from '../../helpers/kiosk/preProcessSharedBulkBuyingData';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport {\n\taddBluemoveBuyTxHandler,\n\taddClutchyBuyTxHandler,\n\taddHyperspaceBuyTxHandler,\n\taddKeepsakeBuyTxHandler,\n\taddSomisBuyTxHandler,\n\taddSouffl3BuyTxHandler,\n\taddTocenBuyTxHandler,\n\taddTradePortBuyTxHandler,\n} from './addBuyListingTxs';\n\ntype BuyTxBase = {\n\ttx: Transaction;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tkioskTx?: any;\n\tsharedKioskState?: SharedKioskState;\n\tbuyer: string;\n\tseller: string;\n\tnftTokenId: string;\n\tnftType: string;\n\tlistingId: string;\n\tlistingNonce: string;\n\tprice: number;\n\tsellerKiosk: string;\n\tcollectionId: string;\n\tnftContractId: string;\n\tremainingAccountBalance?: number;\n\troyalty?: number;\n\tsharedBulkBuyingDataByNftType?: SharedBulkBuyingDataByNftType;\n};\n\ntype NormalBuyTx = {\n\tcoinToSplit?: any;\n\tnftTokenIds?: never;\n} & BuyTxBase;\n\nexport type TocenBuyTx = {\n\tcoinToSplit?: any;\n\tnftTokenIds: string[];\n} & BuyTxBase;\n\nexport type BuyTx = (NormalBuyTx | TocenBuyTx) & {\n\tmarketFeeDecimalPercent?: number;\n\tbeforeResolveKioskTransferRequest?: (transferRequest: any) => void | Promise<void>;\n};\n\nexport type BuyListing = {\n\tlistingId: string;\n\twalletAddress: string;\n};\n\nexport type BuyListings = {\n\tlistingIds: string[];\n\twalletAddress: string;\n\ttx?: Transaction | string;\n\tkioskTx?: KioskTransaction;\n\tcoinToSplit?: any;\n\tbeforeResolveKioskTransferRequest?: (transferRequest: any) => void | Promise<void>;\n};\n\nexport const buyListings = async (\n\t{\n\t\tlistingIds,\n\t\twalletAddress,\n\t\ttx: existingTx,\n\t\tkioskTx,\n\t\tcoinToSplit,\n\t\tbeforeResolveKioskTransferRequest,\n\t}: BuyListings,\n\tcontext: RequestContext,\n\tmarketFeeDecimalPercent?: number,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchListingsById,\n\t\tvariables: { listingIds },\n\t});\n\n\tif (res?.listings?.length === 0) {\n\t\tthrow new Error('No listings found');\n\t}\n\n\tconst listingsForTracking = [];\n\tconst tx = deserializeOrCreateTxBlock({ existingTx });\n\tconst swapResultCoin = extractSwapResultCoinFromTxBlock(tx);\n\n\tconst tocenTokenIds: string[] = [];\n\tlet tocenNftType = '';\n\tlet tocenTotalPrice = 0;\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: kioskTx ?? undefined,\n\t};\n\n\tlet sharedBulkBuyingDataByNftType: SharedBulkBuyingDataByNftType;\n\tif (res.listings.length > 1) {\n\t\tsharedBulkBuyingDataByNftType = await preProcessSharedBulkBuyingData({\n\t\t\tlistings: res.listings,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\twalletAddress,\n\t\t});\n\t}\n\n\tfor (const listing of res.listings) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(listing?.nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tif (!listing?.listed) {\n\t\t\tthrow new Error(`Listing ${listing?.id} is not listed`);\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: listing?.collection?.id,\n\t\t\tcollectionChainState: listing?.collection?.chain_state,\n\t\t\tnft: listing?.nft,\n\t\t});\n\n\t\tconst transferPolicies = listing?.collection?.chain_state?.transfer_policies;\n\n\t\tconst buyTxData: BuyTx = {\n\t\t\ttx,\n\t\t\tkioskTx,\n\t\t\ttransferPolicies,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tbuyer: walletAddress,\n\t\t\tseller: listing?.seller,\n\t\t\tnftTokenId: listing.nft?.token_id,\n\t\t\tnftType,\n\t\t\tlistingId: listing?.id,\n\t\t\tlistingNonce: listing?.nonce,\n\t\t\tprice: listing?.price,\n\t\t\tsellerKiosk: listing.nft?.chain_state?.kiosk_id,\n\t\t\tcollectionId: listing?.nft?.collection_id,\n\t\t\tnftContractId: listing?.nft?.contract_id,\n\t\t\tcoinToSplit: swapResultCoin ? swapResultCoin : coinToSplit,\n\t\t\tmarketFeeDecimalPercent,\n\t\t\tbeforeResolveKioskTransferRequest,\n\t\t\tsharedKioskState,\n\t\t\tsharedBulkBuyingDataByNftType,\n\t\t};\n\n\t\tswitch (listing?.market_name) {\n\t\t\tcase 'tradeport':\n\t\t\t\tawait addTradePortBuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'hyperspace':\n\t\t\t\tawait addHyperspaceBuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'bluemove':\n\t\t\t\tawait addBluemoveBuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'clutchy':\n\t\t\t\tawait addClutchyBuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'souffl3':\n\t\t\t\tawait addSouffl3BuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'somis':\n\t\t\t\tawait addSomisBuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'keepsake':\n\t\t\t\tawait addKeepsakeBuyTxHandler(buyTxData);\n\t\t\t\tbreak;\n\t\t\tcase 'tocen':\n\t\t\t\ttocenTokenIds.push(buyTxData?.nftTokenId);\n\t\t\t\ttocenNftType = buyTxData?.nftType;\n\t\t\t\ttocenTotalPrice += Number(listing.price);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Marketplace not supported');\n\t\t}\n\n\t\tif (listing?.market_name !== 'tradeport') {\n\t\t\tawait addThirdPartyTxFee(tx, listing?.price);\n\t\t}\n\n\t\tlistingsForTracking.push({\n\t\t\twalletAddress,\n\t\t\tnftType,\n\t\t\tcollectionId: listing?.nft?.collection_id,\n\t\t\tprice: listing?.price,\n\t\t\tseller: listing?.seller,\n\t\t\tmarketName: listing?.market_name,\n\t\t});\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\tif (swapResultCoin) {\n\t\ttx.transferObjects([swapResultCoin], walletAddress);\n\t}\n\n\tif (tocenTokenIds?.length > 0) {\n\t\taddTocenBuyTxHandler({\n\t\t\ttx,\n\t\t\tnftType: tocenNftType,\n\t\t\tnftTokenIds: tocenTokenIds,\n\t\t\tprice: tocenTotalPrice,\n\t\t} as TocenBuyTx);\n\t}\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && listingsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'BUY_LISTINGS',\n\t// \t\titems: listingsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchListingsById = gql`\n\tquery fetchListingsById($listingIds: [uuid!]) {\n\t\tlistings(where: { id: { _in: $listingIds } }) {\n\t\t\tid\n\t\t\tseller\n\t\t\tlisted\n\t\t\tmarket_name\n\t\t\tprice\n\t\t\tnonce\n\t\t\tnft {\n\t\t\t\tid\n\t\t\t\ttoken_id\n\t\t\t\tcollection_id\n\t\t\t\tcontract_id\n\t\t\t\tproperties\n\t\t\t\tchain_state\n\t\t\t\tcontract {\n\t\t\t\t\tproperties\n\t\t\t\t}\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { type Transaction } from '@mysten/sui/transactions';\nimport {\n\tTRADEPORT_BENEFICIARY_ADDRESS,\n\tTRADEPORT_THIRD_PARTY_FEE_DECIMAL_PERCENT,\n} from '../constants';\nimport { addLeadingZerosAfter0x } from '../utils/addLeadingZerosAfter0x';\n\nexport const addThirdPartyTxFee = async (tx: Transaction, price: number) => {\n\tconst [microTxFee] = tx.splitCoins(tx.gas, [\n\t\ttx.pure.u64(price * TRADEPORT_THIRD_PARTY_FEE_DECIMAL_PERCENT),\n\t]);\n\n\ttx.transferObjects(\n\t\t[tx.object(microTxFee)],\n\t\ttx.pure.address(addLeadingZerosAfter0x(TRADEPORT_BENEFICIARY_ADDRESS)),\n\t);\n};\n","import { Transaction } from '@mysten/sui/transactions';\n\nexport const deserializeOrCreateTxBlock = ({\n\texistingTx,\n}: {\n\texistingTx: Transaction | string;\n}) => {\n\tif (typeof existingTx === 'string') {\n\t\treturn Transaction.from(existingTx);\n\t}\n\n\treturn existingTx ?? new Transaction();\n};\n","import { type Transaction } from '@mysten/sui/transactions';\n\nexport const extractSwapResultCoinFromTxBlock = (txBlock: Transaction | string) => {\n\tif (!txBlock) return undefined;\n\n\tconst tx = typeof txBlock === 'string' ? JSON.parse(txBlock) : txBlock?.getData();\n\tconst commands = tx.commands ?? [];\n\n\tconst index = commands.findIndex(\n\t\t(cmd: any) =>\n\t\t\tcmd?.MoveCall?.module === 'universal_router' && cmd?.MoveCall?.function === 'settle',\n\t);\n\n\tif (index === -1) return undefined;\n\n\treturn { $kind: 'Result', Result: index };\n};\n","import type { KioskClient } from '@mysten/kiosk';\nimport { bcs } from '@mysten/sui/bcs';\nimport type { SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_KIOSK_LISTING_STORE } from '../../constants';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { getNftType } from '../getNftType';\nimport { getSharedObjects } from '../getSharedObjects';\nimport { isOriginByteCollection } from '../originByte/isOriginByteCollection';\nimport { getTransferPoliciesToResolve } from './getTransferPoliciesToResolve';\n\nexport type SharedBulkBuyingDataByNftType = Record<\n\tstring,\n\t{\n\t\tsharedObjects?: any;\n\t\ttransferPoliciesToResolve?: any[];\n\t\troyaltyFeeAmountsByListingId?: Record<string, bigint>;\n\t\tcommissionFeeAmountsByListingId?: Record<string, number>;\n\t}\n>;\n\nexport const preProcessSharedBulkBuyingData = async ({\n\tlistings,\n\tsuiClient,\n\tkioskClient,\n\twalletAddress,\n}: {\n\tlistings: any[];\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\twalletAddress: string;\n}) => {\n\tconst sharedBulkBuyingDataByNftType: SharedBulkBuyingDataByNftType = {};\n\n\tconst listingsByNftType = listings.reduce<Record<string, any[]>>(\n\t\t(acc: Record<string, any[]>, listing: any) => {\n\t\t\tconst nftType = getNftType({\n\t\t\t\tcollectionId: listing?.collection?.id,\n\t\t\t\tcollectionChainState: listing?.collection?.chain_state,\n\t\t\t\tnft: listing?.nft,\n\t\t\t});\n\n\t\t\tacc[nftType] = [...(acc[nftType] || []), listing];\n\n\t\t\treturn acc;\n\t\t},\n\t\t{},\n\t);\n\n\tfor (const nftType of Object.keys(listingsByNftType)) {\n\t\tsharedBulkBuyingDataByNftType[nftType] = {\n\t\t\tsharedObjects: [],\n\t\t\ttransferPoliciesToResolve: [],\n\t\t\troyaltyFeeAmountsByListingId: {},\n\t\t\tcommissionFeeAmountsByListingId: {},\n\t\t};\n\n\t\tconst transferPolicies =\n\t\t\tlistingsByNftType[nftType]?.[0]?.collection?.chain_state?.transfer_policies;\n\n\t\tif (isOriginByteCollection(transferPolicies)) {\n\t\t\tsharedBulkBuyingDataByNftType[nftType].sharedObjects = await getSharedObjects(nftType);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst tradeportLegacyKioskListings = listingsByNftType[nftType]?.filter(\n\t\t\t(listing: any) =>\n\t\t\t\tlisting.market_name === 'tradeport' &&\n\t\t\t\t!listing.nonce?.startsWith('0::') &&\n\t\t\t\t!listing.nonce?.startsWith('1::') &&\n\t\t\t\tlisting.price &&\n\t\t\t\tlisting.listed &&\n\t\t\t\t!(listing?.nonce && isOriginByteCollection(transferPolicies)) &&\n\t\t\t\tlisting.nft?.chain_state?.kiosk_id,\n\t\t);\n\n\t\tif (tradeportLegacyKioskListings.length === 0) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst transferPoliciesToResolve = await getTransferPoliciesToResolve({\n\t\t\ttransferPolicies,\n\t\t\tsuiClient,\n\t\t\tkioskClient,\n\t\t\tnftType,\n\t\t});\n\t\tsharedBulkBuyingDataByNftType[nftType].transferPoliciesToResolve = transferPoliciesToResolve;\n\n\t\tconst transferPolicyToResolve = transferPoliciesToResolve.at(0);\n\n\t\tconst royaltyRuleToResolve = transferPolicyToResolve.rules.find(\n\t\t\t(rule: any) => rule.moduleName === 'royalty_rule' || rule.moduleName === 'kiosk_royalty_rule',\n\t\t);\n\n\t\tif (royaltyRuleToResolve?.rulePackageId && royaltyRuleToResolve?.moduleName) {\n\t\t\t// for each tp kiosk listing, create fee_amount txs and dev inspect the tx block to get the royalty fee amounts and store them in shared data\n\t\t\tconst feeTx = new Transaction();\n\t\t\tfor (const listing of tradeportLegacyKioskListings) {\n\t\t\t\tfeeTx.moveCall({\n\t\t\t\t\ttarget: `${royaltyRuleToResolve.rulePackageId}::${royaltyRuleToResolve.moduleName}::fee_amount`,\n\t\t\t\t\targuments: [feeTx.object(transferPolicyToResolve?.id), feeTx.pure.u64(listing.price)],\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst res = await suiClient.devInspectTransactionBlock({\n\t\t\t\tsender: addLeadingZerosAfter0x(walletAddress),\n\t\t\t\ttransactionBlock: feeTx,\n\t\t\t});\n\n\t\t\tfor (let i = 0; i < res.results.length; i++) {\n\t\t\t\tconst result = res.results[i];\n\t\t\t\tconst returnedAmount = result?.returnValues?.[0]?.[0];\n\t\t\t\tconst feeAmount = BigInt(bcs.U64.parse(new Uint8Array(returnedAmount)));\n\n\t\t\t\tif (!feeAmount && feeAmount !== 0n) {\n\t\t\t\t\t// We were not able to calculate the fee amount outside of the transaction via dev inspect, so skip pre processing\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tsharedBulkBuyingDataByNftType[nftType].royaltyFeeAmountsByListingId[\n\t\t\t\t\ttradeportLegacyKioskListings[i].id\n\t\t\t\t] = feeAmount;\n\t\t\t}\n\t\t}\n\n\t\t// for each tp kiosk listing, pre-fetch commission fee amounts in batches and store them in shared data\n\t\tconst batchSize = 10;\n\t\tconst commissionResults: Array<{ listingId: string; commission: number }> = [];\n\t\tfor (let i = 0; i < tradeportLegacyKioskListings.length; i += batchSize) {\n\t\t\tconst batch = tradeportLegacyKioskListings.slice(i, i + batchSize);\n\t\t\tconst batchPromises = batch.map(async (listing: any) => {\n\t\t\t\tconst response = await suiClient.getDynamicFieldObject({\n\t\t\t\t\tparentId: TRADEPORT_KIOSK_LISTING_STORE,\n\t\t\t\t\tname: { type: '0x2::object::ID', value: listing.nft.token_id },\n\t\t\t\t});\n\n\t\t\t\tif (response.error?.code === 'dynamicFieldNotFound') {\n\t\t\t\t\tthrow new Error(`Not found kiosk listing object of token ${listing.nft.token_id}`);\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tlistingId: listing.id,\n\t\t\t\t\tcommission: Number((response.data.content as any).fields.commission),\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tconst batchResults = await Promise.all(batchPromises);\n\t\t\tcommissionResults.push(...batchResults);\n\t\t}\n\n\t\tfor (const result of commissionResults) {\n\t\t\tsharedBulkBuyingDataByNftType[nftType].commissionFeeAmountsByListingId[result.listingId] =\n\t\t\t\tresult.commission;\n\t\t}\n\t}\n\n\treturn sharedBulkBuyingDataByNftType;\n};\n","import { bcs } from '@mysten/sui/bcs';\nimport {\n\tBLUEMOVE_CREATOR_CONFIG_OBJECT,\n\tBLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT,\n\tBLUEMOVE_MARKET_CONFIG_OBJECT,\n\tBLUEMOVE_ROYALTY_COLLECTION_OBJECT,\n\tHYPERSPACE_MP_TRANSFER_POLICY_TYPE,\n\tHYPERSPACE_TRANSFER_POLICY_TYPE,\n\tKEEPSAKE_MARKETPLACE_KIOSK,\n\tKEEPSAKE_MARKETPLACE_OBJECT,\n\tNON_KIOSK_LISTING_NONCE_TYPE,\n\tSOUFFL3_EXTENSION_OBJECT,\n\tSOUFFL3_GENERIC_BUY_METHOD_COLLECTIONS,\n\tSOUFFL3_MARKETPLACE_OBJECT,\n\tSOUFFL3_VERSION_OBJECT,\n\tTOCEN_MARKETPLACE_OBJECT,\n\tTRADEPORT_LISTINGS_DEFAULT_COMMISSION_BPS,\n\tTRADEPORT_KIOSK_LISTING_STORE,\n\tTRADEPORT_LISTING_STORE,\n\tTRADEPORT_LISTINGS_PACKAGE,\n\tCUSTOM_TRANSFER_RULES_BY_COLLECTION,\n\tTRADEPORT_LISTINGS_STORE,\n\tXOCIETY_FRONTIER_COLLECTION_ID,\n\tTRADEPORT_ORDERBOOK_STORE,\n} from '../../constants';\nimport { getCommissionByNftContractId } from '../../graphql/queries/getCommissionByListingId';\nimport { destroyZeroCoin } from '../../helpers/destroyZeroCoin';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { assertNftInSharedKiosk } from '../../helpers/kiosk/assertNftInSharedKiosk';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { resolveCustomTransferPolicyRules } from '../../helpers/kiosk/resolveCustomTransferPolicyRules';\nimport { resolveTransferPolicies } from '../../helpers/kiosk/resolveTransferPolicies';\nimport { confirmOBTranfer } from '../../helpers/originByte/confirmOBTranfer';\nimport { getOrCreateOBKiosk } from '../../helpers/originByte/getOrCreateOBKiosk';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { shareOriginByteKiosk } from '../../helpers/originByte/shareOriginByteKiosk';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { type BuyTx, type TocenBuyTx } from './buyListings';\nimport BigNumber from '../../bigNumberConfig';\nimport { calculateRoyaltyFee } from '../../helpers/calculateRoyaltyFee';\nimport { getCollectionChainState } from '../../helpers/getCollectionChainState';\nimport { normalizeSuiObjectId } from '@mysten/sui/utils';\nimport { applyFtStrategy } from '../applyFtStrategy/applyFtStrategy';\n\nexport function addLegacyTradePortBuyTx({\n\ttx,\n\tnftType,\n\tlistingNonce,\n\tprice,\n\tsharedObjects,\n\tcoinToSplit,\n}: BuyTx) {\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\tconst { collection, royaltyStrategy } = sharedObjects;\n\tif (collection && royaltyStrategy) {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::listings::ob_buy',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_LISTING_STORE),\n\t\t\t\ttx.pure.address(listingNonce),\n\t\t\t\ttx.object(coin),\n\t\t\t\ttx.object(collection),\n\t\t\t\ttx.object(royaltyStrategy),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t} else {\n\t\ttx.moveCall({\n\t\t\ttarget: '0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::listings::buy',\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_LISTING_STORE),\n\t\t\t\ttx.pure.address(listingNonce),\n\t\t\t\ttx.object(coin),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t}\n\n\tdestroyZeroCoin({ tx, coin });\n}\n\nexport const addLegacyTradeportKioskBuyTx = async ({\n\ttx,\n\ttransferPolicies,\n\tkioskTx,\n\tsuiClient,\n\tkioskClient,\n\tlistingId,\n\tnftType,\n\tnftTokenId,\n\tprice,\n\tsellerKiosk,\n\tseller,\n\tcoinToSplit,\n\tbeforeResolveKioskTransferRequest,\n\tsharedBulkBuyingDataByNftType,\n\tcollectionId,\n}: BuyTx) => {\n\tlet commissionFeeAmount: number =\n\t\tsharedBulkBuyingDataByNftType?.[nftType]?.commissionFeeAmountsByListingId?.[listingId] ?? 0;\n\n\tif (!commissionFeeAmount) {\n\t\tconst response = await suiClient.getDynamicFieldObject({\n\t\t\tparentId: TRADEPORT_KIOSK_LISTING_STORE,\n\t\t\tname: { type: '0x2::object::ID', value: nftTokenId },\n\t\t});\n\n\t\tif (response.error?.code === 'dynamicFieldNotFound') {\n\t\t\tthrow new Error(`Not found kiosk listing object of token ${nftTokenId}`);\n\t\t}\n\n\t\tcommissionFeeAmount = Number((response.data?.content as any)?.fields?.commission);\n\t}\n\n\tif (commissionFeeAmount === 0) {\n\t\t// Fallback to default commission if had trouble fetching commission from dynamic field object\n\t\tcommissionFeeAmount = getMarketFeePrice({ price, collectionId });\n\t}\n\n\tconst coin = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [\n\t\ttx.pure.u64(price + commissionFeeAmount),\n\t]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\tconst [kioskItem, transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_listings::buy',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_LISTING_STORE),\n\t\t\ttx.object(sellerKiosk),\n\t\t\ttx.object('value' in kioskTx.kiosk ? kioskTx.kiosk.value : kioskTx.kiosk),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: seller,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: price?.toString(),\n\t\tkioskItem,\n\t\ttransferRequest,\n\t\tcoinToSplit,\n\t\tbeforeResolveKioskTransferRequest,\n\t\ttransferPoliciesToResolve: sharedBulkBuyingDataByNftType?.[nftType]?.transferPoliciesToResolve,\n\t\troyaltyFeeAmount:\n\t\t\tsharedBulkBuyingDataByNftType?.[nftType]?.royaltyFeeAmountsByListingId?.[listingId],\n\t});\n\n\tdestroyZeroCoin({ tx, coin });\n};\n\nexport async function addTradePortBuyTx({ tx, nftType, nftTokenId, price, coinToSplit }: BuyTx) {\n\tconst marketFee = new BigNumber(price)\n\t\t.times(TRADEPORT_LISTINGS_DEFAULT_COMMISSION_BPS)\n\t\t.div(10_000)\n\t\t.integerValue(BigNumber.ROUND_DOWN)\n\t\t.toNumber();\n\tconst totalAmount = new BigNumber(price).plus(marketFee).toNumber();\n\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(totalAmount)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::buy_ob_listing_without_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tdestroyZeroCoin({ tx, coin });\n}\n\nexport async function addKioskTradePortBuyTx({\n\ttx,\n\ttransferPolicies,\n\tkioskTx,\n\tnftType,\n\tnftTokenId,\n\tprice,\n\tsellerKiosk,\n\tcoinToSplit,\n\tbuyer,\n\tcollectionId,\n}: BuyTx) {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst marketFee = new BigNumber(price)\n\t\t.times(TRADEPORT_LISTINGS_DEFAULT_COMMISSION_BPS)\n\t\t.div(10000)\n\t\t.integerValue(BigNumber.ROUND_DOWN);\n\n\tconst royaltyFee = calculateRoyaltyFee(\n\t\tgetNativeKioskTransferPolicies(transferPolicies)?.at(0)?.rules,\n\t\tnew BigNumber(price),\n\t);\n\n\tconst totalAmount = new BigNumber(price).plus(marketFee).plus(royaltyFee).toNumber();\n\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(totalAmount)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\tconst transferRequest = tx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::buy_ob_listing_with_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.object(sellerKiosk),\n\t\t\ttx.object('value' in kioskTx.kiosk ? kioskTx.kiosk.value : kioskTx.kiosk),\n\t\t\ttx.object('value' in kioskTx.kioskCap ? kioskTx.kioskCap.value : kioskTx.kioskCap),\n\t\t\ttx.pure.address(buyer),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t\ttx.object(coin),\n\t\t\ttx.object(transferPolicyId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\t// Resolve custom transfer policy rules if this collection has any\n\tconst customRuleConfigs = CUSTOM_TRANSFER_RULES_BY_COLLECTION[collectionId];\n\tif (customRuleConfigs?.length > 0) {\n\t\tresolveCustomTransferPolicyRules({\n\t\t\ttx,\n\t\t\trules: customRuleConfigs.map((config) => ({\n\t\t\t\trule: `${config.packageId}::${config.moduleName}`,\n\t\t\t\trulePackageId: config.packageId,\n\t\t\t\tmoduleName: config.moduleName,\n\t\t\t\tparams: config.params,\n\t\t\t})),\n\t\t\ttransferRequest,\n\t\t\tnftType,\n\t\t\tpolicyId: transferPolicyId,\n\t\t});\n\t}\n\n\ttx.moveCall({\n\t\ttarget: '0x2::transfer_policy::confirm_request',\n\t\targuments: [tx.object(transferPolicyId), transferRequest],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tdestroyZeroCoin({ tx, coin });\n}\n\nexport async function addOriginByteBuyTx({\n\ttx,\n\tsharedObjects,\n\tbuyer,\n\tsellerKiosk,\n\tseller,\n\tnftTokenId,\n\tnftType,\n\tlistingNonce,\n\tprice,\n\tsharedKioskState,\n\tcoinToSplit,\n}: BuyTx) {\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: sellerKiosk,\n\t\twalletAddress: seller,\n\t\tsharedKioskState,\n\t});\n\n\tconst { orderbook } = sharedObjects;\n\tconst { kiosk: buyerKiosk, isNewKiosk: isNewBuyerKiosk } = await getOrCreateOBKiosk({\n\t\ttx,\n\t\taddress: buyer,\n\t\tsharedKioskState,\n\t});\n\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\tconst transferRequest = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::buy_nft',\n\t\targuments: [\n\t\t\ttx.object(orderbook),\n\t\t\ttx.object(listingNonce),\n\t\t\ttx.object(buyerKiosk),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.u64(price),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\tconfirmOBTranfer({ tx, sharedObjects, transferRequest, nftType });\n\n\tdestroyZeroCoin({ tx, coin });\n\n\tif (isNewBuyerKiosk) {\n\t\tshareOriginByteKiosk({ tx, kiosk: buyerKiosk });\n\t}\n}\n\nexport const addHyperspaceKioskBuyTx = async ({\n\ttx,\n\ttransferPolicies,\n\tsuiClient,\n\tkioskTx,\n\tkioskClient,\n\tnftType,\n\tnftTokenId,\n\tprice,\n\tsellerKiosk,\n\tseller,\n\tbeforeResolveKioskTransferRequest,\n\tcoinToSplit,\n}: BuyTx) => {\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\tconst [kioskItem, transferRequest, hyperspaceTransferRequest, hyperspaceMpTransferRequest] =\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x6ea97b03c441edd54ae89224bf9560e583ee66c37e6c246f5db35258e580ba94::hyperspace::purchase',\n\t\t\targuments: [tx.object(sellerKiosk), tx.pure.address(nftTokenId), tx.object(coin)],\n\t\t\ttypeArguments: [nftType, HYPERSPACE_MP_TRANSFER_POLICY_TYPE],\n\t\t});\n\n\tconst customTransferPolicies = [\n\t\t{\n\t\t\ttype: HYPERSPACE_TRANSFER_POLICY_TYPE,\n\t\t\ttransferRequest: hyperspaceTransferRequest,\n\t\t},\n\t\t{\n\t\t\ttype: HYPERSPACE_MP_TRANSFER_POLICY_TYPE,\n\t\t\ttransferRequest: hyperspaceMpTransferRequest,\n\t\t},\n\t].filter((customTransferPolicy) => customTransferPolicy.transferRequest !== transferRequest);\n\n\tawait beforeResolveKioskTransferRequest?.(transferRequest);\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: seller,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: price?.toString(),\n\t\tkioskItem,\n\t\ttransferRequest,\n\t\tcustomTransferPolicies,\n\t});\n};\n\nexport function addBluemoveBuyTx({ tx, nftTokenId, nftType, price, coinToSplit }: BuyTx) {\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::marketplace::buy_and_take',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_MARKET_CONFIG_OBJECT),\n\t\t\ttx.object(BLUEMOVE_ROYALTY_COLLECTION_OBJECT),\n\t\t\ttx.object(BLUEMOVE_CREATOR_CONFIG_OBJECT),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(coin),\n\t\t\ttx.pure.u64(price),\n\t\t],\n\t\ttypeArguments: [nftType, nftType],\n\t});\n}\n\nexport async function addBluemoveKioskBuyTx({\n\ttx,\n\tsuiClient,\n\ttransferPolicies,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\tprice,\n\tsellerKiosk,\n\tseller,\n\tbeforeResolveKioskTransferRequest,\n\tcoinToSplit,\n}: BuyTx) {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [coin1, coin2] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [\n\t\ttx.pure.u64(price),\n\t\ttx.pure.u64(price * 0.025),\n\t]);\n\n\tif (!coin1 || !coin2) throw new Error('Coin could not be split');\n\n\ttx.mergeCoins(tx.object(coin1), [tx.object(coin2)]);\n\n\tconst [kioskItem, transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0xcc97b74ed95c8e8a3ed88050a898727dee37896da579fc400d482b64db6149ff::kiosk_trade::kiosk_buy_v2',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_KIOSK_MARKETPLACE_KIOSK_OBJECT),\n\t\t\ttx.object(sellerKiosk),\n\t\t\ttx.object(transferPolicyId),\n\t\t\ttx.object('value' in kioskTx.kiosk ? kioskTx.kiosk.value : kioskTx.kiosk),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.u64(price),\n\t\t\ttx.object(coin1),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\tawait beforeResolveKioskTransferRequest?.(transferRequest);\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: seller,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: price?.toString(),\n\t\tkioskItem,\n\t\ttransferRequest,\n\t});\n}\n\nexport async function addSouffl3BuyTx({\n\ttx,\n\tnftType,\n\tprice,\n\tlistingNonce,\n\tcollectionId,\n\ttransferPolicies,\n\tcoinToSplit,\n}: BuyTx) {\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tif (transferPolicyId && !SOUFFL3_GENERIC_BUY_METHOD_COLLECTIONS?.includes(collectionId)) {\n\t\tconst [coinToDestroy] = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x30d90b5b67be77e6e06f02dae9f0f2fcdad16e38854316ae8a7b4f5b4971f5e0::Market::buy_with_sui_with_ext',\n\t\t\targuments: [\n\t\t\t\ttx.object(SOUFFL3_VERSION_OBJECT),\n\t\t\t\ttx.object(SOUFFL3_EXTENSION_OBJECT),\n\t\t\t\ttx.object(transferPolicyId),\n\t\t\t\ttx.object(listingNonce),\n\t\t\t\ttx.pure.u64(price),\n\t\t\t\ttx.object(SOUFFL3_MARKETPLACE_OBJECT),\n\t\t\t\ttx.object(coin),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\n\t\tdestroyZeroCoin({ tx, coin: coinToDestroy });\n\t} else {\n\t\tconst [coinToDestroy] = tx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x30d90b5b67be77e6e06f02dae9f0f2fcdad16e38854316ae8a7b4f5b4971f5e0::Market::buy_generic_with_ext',\n\t\t\targuments: [\n\t\t\t\ttx.object(SOUFFL3_VERSION_OBJECT),\n\t\t\t\ttx.object(SOUFFL3_EXTENSION_OBJECT),\n\t\t\t\ttx.object(listingNonce),\n\t\t\t\ttx.pure.u64(price),\n\t\t\t\ttx.object(SOUFFL3_MARKETPLACE_OBJECT),\n\t\t\t\ttx.object(coin),\n\t\t\t],\n\t\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t\t});\n\n\t\tdestroyZeroCoin({ tx, coin: coinToDestroy });\n\t}\n}\n\nexport function addSomisBuyTx({\n\ttx,\n\tsharedObjects,\n\tnftTokenId,\n\tnftType,\n\tprice,\n\tcoinToSplit,\n}: BuyTx) {\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xf0b0beb956e26bde50dbd6ac393026c4525aee3b194a9478f09748f7211b5a02::marketplace::buy_nft',\n\t\targuments: [\n\t\t\ttx.object(sharedObjects?.marketplace),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n}\n\nexport async function addKeepsakeBuyTx({\n\ttx,\n\tsharedObjects,\n\tbuyer,\n\tnftTokenId,\n\tnftType,\n\tprice,\n\troyalty,\n\ttransferPolicies,\n\tcoinToSplit,\n}: BuyTx) {\n\tconst { keepsakeRoyaltyStrategy } = sharedObjects;\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [coin1, coin2] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [\n\t\ttx.pure.u64(price),\n\t\ttx.pure.u64((price * Number(royalty)) / 100 + price * Number(royalty) * 0.00005),\n\t]);\n\n\tif (!coin1 || !coin2) throw new Error('Coin could not be split');\n\n\tconst [balance] = tx.moveCall({\n\t\ttarget: '0x2::coin::into_balance',\n\t\targuments: [tx.object(coin2)],\n\t\ttypeArguments: ['0x2::sui::SUI'],\n\t});\n\n\tif (!balance) throw new Error('Coin into_balance failed');\n\n\tconst [transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x02be8c4a1a3cea4d3255d870d367c87838a8cc2bfe4f216a6b67b153027087a7::keepsake_marketplace::buy',\n\t\targuments: [\n\t\t\ttx.object(KEEPSAKE_MARKETPLACE_OBJECT),\n\t\t\ttx.object(KEEPSAKE_MARKETPLACE_KIOSK),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(coin1),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tif (!transferRequest) throw new Error('Transfer request could not be created');\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x02be8c4a1a3cea4d3255d870d367c87838a8cc2bfe4f216a6b67b153027087a7::keepsake_royalties::confirm_transfer_with_balance',\n\t\targuments: [tx.object(keepsakeRoyaltyStrategy), tx.object(transferRequest), tx.object(balance)],\n\t\ttypeArguments: [nftType],\n\t});\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x02be8c4a1a3cea4d3255d870d367c87838a8cc2bfe4f216a6b67b153027087a7::transfer_policy::confirm_request',\n\t\targuments: [tx.object(transferPolicyId), tx.object(transferRequest)],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tconst [balanceToTransfer] = tx.moveCall({\n\t\ttarget: '0x2::coin::from_balance',\n\t\targuments: [tx.object(balance)],\n\t\ttypeArguments: ['0x2::sui::SUI'],\n\t});\n\n\tif (!balanceToTransfer) throw new Error('Coin from_balance failed');\n\n\ttx.transferObjects(\n\t\t[tx.object(balanceToTransfer)],\n\t\ttx.pure.address(addLeadingZerosAfter0x(buyer)),\n\t);\n}\n\nexport const addTocenBuyTx = ({ tx, nftTokenIds, nftType, price, coinToSplit }: TocenBuyTx) => {\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [tx.pure.u64(price)]);\n\n\tif (!coin) throw new Error('Coin could not be split');\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x3605d91c559e80cf8fdeabae9abaccb0bc38f96eac0b32bf47e95a9159a5277f::tocen_marketplace::buy_cart',\n\t\targuments: [\n\t\t\ttx.object(TOCEN_MARKETPLACE_OBJECT),\n\t\t\ttx.pure(bcs.vector(bcs.Address).serialize(nftTokenIds)),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n};\n\nexport async function addTradePortBuyTxHandler(txData: BuyTx) {\n\t// If origin byte collection, add origin byte buy tx\n\tif (txData?.listingNonce && isOriginByteCollection(txData?.transferPolicies)) {\n\t\tconst sharedObjects =\n\t\t\ttxData?.sharedBulkBuyingDataByNftType?.[txData?.nftType]?.sharedObjects ??\n\t\t\t(await getSharedObjects(txData?.nftType));\n\t\tawait addOriginByteBuyTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\t// If non kiosk listing (nonce starts with \"0::\")\n\tif (txData?.listingNonce?.startsWith('0::')) {\n\t\tawait addTradePortBuyTx(txData);\n\t\treturn;\n\t}\n\n\t// If kiosk listing (nonce starts with \"1::\")\n\tif (txData?.listingNonce?.startsWith('1::')) {\n\t\tawait kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.buyer,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addKioskTradePortBuyTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\n\t\t\t\t// If XOCIETY Frontier collection, take NFT out of kiosk and transfer it back to user (buyer)\n\t\t\t\tif (txData?.collectionId === XOCIETY_FRONTIER_COLLECTION_ID) {\n\t\t\t\t\tconst borrowedItem = kioskTx.take({\n\t\t\t\t\t\titemId: txData?.nftTokenId,\n\t\t\t\t\t\titemType: txData?.nftType,\n\t\t\t\t\t});\n\n\t\t\t\t\ttxData?.tx.transferObjects(\n\t\t\t\t\t\t[txData?.tx.object(borrowedItem as any)],\n\t\t\t\t\t\ttxData?.tx.pure.address(addLeadingZerosAfter0x(txData?.buyer)),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\n\t\t// If seller kiosk is associated with an NFT strategy, apply the strategy after the buy command\n\t\tconst chainState = await getCollectionChainState(txData.collectionId);\n\t\tconst nftStrategies = (chainState?.nft_strategies ?? {}) as Record<\n\t\t\tstring,\n\t\t\tRecord<string, unknown>\n\t\t>;\n\t\tconst normalizedSellerKiosk = normalizeSuiObjectId(txData.sellerKiosk);\n\t\tfor (const [strategyFtType, strategyData] of Object.entries(nftStrategies)) {\n\t\t\tconst strategyKioskId = (strategyData as { kiosk_id: string }).kiosk_id ?? '0x0';\n\t\t\tif (normalizeSuiObjectId(strategyKioskId) === normalizedSellerKiosk) {\n\t\t\t\tawait applyFtStrategy({\n\t\t\t\t\tcollectionId: txData.collectionId,\n\t\t\t\t\tstrategyFtType,\n\t\t\t\t\ttx: txData.tx,\n\t\t\t\t\tcollectionChainState: chainState,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn;\n\t}\n\n\t// Legacy contract logic below\n\tif (txData.listingNonce?.startsWith('0x')) {\n\t\tconst response = await txData?.suiClient.getObject({\n\t\t\tid: txData.listingNonce,\n\t\t\toptions: { showType: true },\n\t\t});\n\t\tif (response.error) {\n\t\t\tthrow new Error(response.error.code);\n\t\t}\n\n\t\tif (response.data.type === NON_KIOSK_LISTING_NONCE_TYPE) {\n\t\t\tconst sharedObjects =\n\t\t\t\ttxData?.sharedBulkBuyingDataByNftType?.[txData?.nftType]?.sharedObjects ??\n\t\t\t\t(await getSharedObjects(txData?.nftType));\n\t\t\taddLegacyTradePortBuyTx({ ...txData, sharedObjects });\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// If legacy kiosk listing\n\tif (txData?.sellerKiosk) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.buyer,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addLegacyTradeportKioskBuyTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\tconst sharedObjects =\n\t\ttxData?.sharedBulkBuyingDataByNftType?.[txData?.nftType]?.sharedObjects ??\n\t\t(await getSharedObjects(txData?.nftType));\n\n\t// If legacy non kiosk listing\n\taddLegacyTradePortBuyTx({ ...txData, sharedObjects });\n}\n\nexport async function addHyperspaceBuyTxHandler(txData: BuyTx) {\n\tif (txData?.listingNonce && isOriginByteCollection(txData?.transferPolicies)) {\n\t\tconst sharedObjects =\n\t\t\ttxData?.sharedBulkBuyingDataByNftType?.[txData?.nftType]?.sharedObjects ??\n\t\t\t(await getSharedObjects(txData?.nftType));\n\t\tawait addOriginByteBuyTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\treturn kioskTxWrapper({\n\t\ttx: txData?.tx,\n\t\tkioskClient: txData?.kioskClient,\n\t\tkioskOwner: txData?.buyer,\n\t\tkiosk: txData?.sellerKiosk,\n\t\tshouldConvertToPersonalKiosk: true,\n\t\tsharedKioskState: txData?.sharedKioskState,\n\t\tasync runCommands(kioskTx) {\n\t\t\tawait addHyperspaceKioskBuyTx({\n\t\t\t\t...txData,\n\t\t\t\tkioskTx,\n\t\t\t});\n\t\t},\n\t});\n}\n\nexport async function addBluemoveBuyTxHandler(txData: BuyTx) {\n\tif (txData?.listingNonce && isOriginByteCollection(txData?.transferPolicies)) {\n\t\tconst sharedObjects =\n\t\t\ttxData?.sharedBulkBuyingDataByNftType?.[txData?.nftType]?.sharedObjects ??\n\t\t\t(await getSharedObjects(txData?.nftType));\n\t\tawait addOriginByteBuyTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\tif (txData?.sellerKiosk) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.buyer,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addBluemoveKioskBuyTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\taddBluemoveBuyTx(txData);\n}\n\nexport async function addClutchyBuyTxHandler(txData: BuyTx) {\n\tawait addOriginByteBuyTx(txData);\n}\n\nexport async function addSouffl3BuyTxHandler(txData: BuyTx) {\n\tawait addSouffl3BuyTx(txData);\n}\n\nexport async function addSomisBuyTxHandler(txData: BuyTx) {\n\tif (txData?.sharedObjects?.marketplace) {\n\t\taddSomisBuyTx(txData);\n\t\treturn;\n\t}\n\n\treturn addOriginByteBuyTx(txData);\n}\n\nexport async function addKeepsakeBuyTxHandler(txData: BuyTx) {\n\tconst commission = await getCommissionByNftContractId(txData?.nftContractId);\n\n\tawait addKeepsakeBuyTx({\n\t\t...txData,\n\t\troyalty: commission?.royalty,\n\t});\n}\n\nexport function addTocenBuyTxHandler(txData: TocenBuyTx) {\n\taddTocenBuyTx(txData);\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchCommissionByNftContractId = gql`\n\tquery fetchCommissionByNftContractId($nftContractId: uuid!) {\n\t\tcommissions(where: { contract_id: { _eq: $nftContractId } }) {\n\t\t\tis_custodial\n\t\t\tkey\n\t\t\tmarket_fee\n\t\t\tmarket_name\n\t\t\troyalty\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../gqlChainRequest';\nimport { fetchCommissionByNftContractId } from './fetchCommissionByListingId';\n\nexport const getCommissionByNftContractId = async (nftContractId: string) => {\n\ttry {\n\t\tconst res = await gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchCommissionByNftContractId,\n\t\t\tvariables: { nftContractId },\n\t\t});\n\t\treturn res?.commissions?.[0];\n\t} catch (err) {\n\t\tthrow new Error(`Failed to fetch commission for listing ${nftContractId}`);\n\t}\n};\n","import { type Transaction, type TransactionArgument } from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tcoin: string | TransactionArgument;\n};\n\nexport const destroyZeroCoin = ({ tx, coin }: Args) => {\n\ttx.moveCall({\n\t\ttarget: '0x2::coin::destroy_zero',\n\t\targuments: [tx.object(coin as any)],\n\t\ttypeArguments: ['0x2::sui::SUI'],\n\t});\n};\n","import {\n\tBASC_ROYALTY_DECIMAL_PERCENT,\n\tCOLLECTION_IDS_WITH_ZERO_COMMISSION,\n\tDSL_LEGACY_ROYALTY_DECIMAL_PERCENT,\n\tMASC_ROYALTY_DECIMAL_PERCENT,\n\tTRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT,\n} from '../constants';\n\nexport const getMASCMarketFeePrice = (price: number) => {\n\tif (price * (MASC_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT) < 1) {\n\t\treturn price * (MASC_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT);\n\t}\n\n\treturn parseInt(\n\t\t(price * (MASC_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT))?.toFixed(0),\n\t\t10,\n\t);\n};\n\nexport const getBASCMarketFeePrice = (price: number) => {\n\tif (price * (BASC_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT) < 1) {\n\t\treturn price * (BASC_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT);\n\t}\n\n\treturn parseInt(\n\t\t(price * (BASC_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT))?.toFixed(0),\n\t\t10,\n\t);\n};\n\nexport const getDSLLegacyMarketFeePrice = (price: number) => {\n\tif (price * (DSL_LEGACY_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT) < 1) {\n\t\treturn price * (DSL_LEGACY_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT);\n\t}\n\n\treturn parseInt(\n\t\t(price * (DSL_LEGACY_ROYALTY_DECIMAL_PERCENT + TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT))?.toFixed(\n\t\t\t0,\n\t\t),\n\t\t10,\n\t);\n};\n\ntype GetMarketFeePrice = {\n\tprice: number;\n\tcollectionId: string;\n\tmarketFeeDecimalPercent?: number;\n};\n\nexport const getMarketFeePrice = ({\n\tprice,\n\tcollectionId,\n\tmarketFeeDecimalPercent,\n}: GetMarketFeePrice) => {\n\tif (collectionId === '6824e1ff-477e-4810-9ba7-8d6387b68c7d') {\n\t\treturn getBASCMarketFeePrice(price);\n\t}\n\n\tif (collectionId === '8568521c-73a3-4beb-b830-d1ff27a3f1ca') {\n\t\treturn getMASCMarketFeePrice(price);\n\t}\n\n\tif (collectionId === '307c7e7a-be3a-43a5-ae44-37f3a37d01f9') {\n\t\treturn getDSLLegacyMarketFeePrice(price);\n\t}\n\n\tlet marketFeePrice = 0;\n\n\tif (!COLLECTION_IDS_WITH_ZERO_COMMISSION?.includes(collectionId)) {\n\t\tmarketFeePrice = price * TRADEPORT_DEFAULT_FEE_DECIMAL_PERCENT;\n\n\t\tif (marketFeeDecimalPercent) {\n\t\t\tmarketFeePrice = price * marketFeeDecimalPercent;\n\t\t}\n\t}\n\n\tif (marketFeePrice < 1) {\n\t\treturn marketFeePrice;\n\t}\n\n\treturn parseInt(marketFeePrice?.toFixed(0), 10);\n};\n","import { BigNumber } from 'bignumber.js';\n\nBigNumber.set({\n\tPOW_PRECISION: 64,\n});\n\nexport const ZERO = new BigNumber(0);\nexport const ONE = new BigNumber(1);\n\nexport default BigNumber;\n","import BigNumber from '../bigNumberConfig';\nimport { ZERO } from '../bigNumberConfig';\n\nexport function calculateRoyaltyFee(\n\ttransferPolicyRules: Array<{ type: string; amount_bp?: string; min_amount?: string }>,\n\tprice: BigNumber,\n): BigNumber {\n\tconst royaltyRule = transferPolicyRules?.filter(\n\t\t(rule: { type: string }) => rule.type === 'royalty_rule' || rule.type === 'kiosk_royalty_rule',\n\t)?.[0];\n\n\tif (!royaltyRule || (!royaltyRule.amount_bp && !royaltyRule.min_amount)) {\n\t\treturn ZERO;\n\t}\n\n\tconst royaltyFee = royaltyRule.amount_bp\n\t\t? new BigNumber(royaltyRule.amount_bp)\n\t\t\t\t.times(price)\n\t\t\t\t.div(10000)\n\t\t\t\t.integerValue(BigNumber.ROUND_DOWN)\n\t\t: ZERO;\n\n\tif (royaltyRule.min_amount && new BigNumber(royaltyRule.min_amount).isGreaterThan(royaltyFee)) {\n\t\treturn new BigNumber(royaltyRule.min_amount);\n\t}\n\n\treturn royaltyFee;\n}\n","import { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_MULTI_BID_PACKAGE, TRADEPORT_MULTI_BID_STORE } from '../../constants';\nimport {\n\tfetchMultibidChainIdAndSingleBidsById,\n\tfetchMultibidChainIdById,\n} from '../../graphql/queries/fetchMultibidById';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { addCancelSingleBidForMultibidChainId } from '../removeNftBids/addRemoveNftBidTxs';\n\nexport interface CancelMultiBid {\n\twalletAddress: string;\n\tmultiBidId: string;\n}\n\nexport async function cancelMultiBid({ multiBidId }: CancelMultiBid): Promise<Transaction> {\n\tconst {\n\t\tchain_id: multiBidChainId,\n\t\tcancelled_at,\n\t\tbids,\n\t} = (\n\t\tawait gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchMultibidChainIdAndSingleBidsById,\n\t\t\tvariables: { multiBidId },\n\t\t})\n\t)?.multi_bids?.[0] ?? {};\n\tif (!multiBidChainId) {\n\t\tthrow new Error(`MultiBid ${multiBidId} not found`);\n\t}\n\n\tif (cancelled_at) {\n\t\tthrow new Error(`MultiBid ${multiBidId} already cancelled`);\n\t}\n\n\tconst tx = new Transaction();\n\tif (bids.length > 1022) {\n\t\t// Transaction block is limited to 1024 txs\n\t\tthrow new Error(`Too many bids to cancel in one transaction`);\n\t}\n\n\tfor (const bid of bids ?? []) {\n\t\taddCancelSingleBidForMultibidChainId(tx, bid.nonce, multiBidChainId);\n\t}\n\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::cancel_multi_bid`,\n\t\targuments: [tx.object(TRADEPORT_MULTI_BID_STORE), tx.pure.id(multiBidChainId)],\n\t});\n\n\treturn tx;\n}\n","import { normalizeSuiObjectId } from '@mysten/sui/utils';\nimport {\n\tBLUEMOVE_OFFER_DATA_OBJECT,\n\tTOCEN_MARKETPLACE_OBJECT,\n\tTRADEPORT_BIDDING_STORE,\n\tTRADEPORT_KIOSK_BIDDING_STORE,\n\tTRADEPORT_MULTI_BID_PACKAGE,\n\tTRADEPORT_MULTI_BID_STORE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchMultibidChainIdById } from '../../graphql/queries/fetchMultibidById';\nimport { isSingleBid } from '../../helpers/isSIngleBid';\nimport { isTradePortKioskBid } from '../../helpers/kiosk/isTradePortKioskBid';\nimport { isOriginByteBid } from '../../helpers/originByte/isOriginByteBid';\nimport { getObjectType } from '../../helpers/rpc/getObjectType';\nimport { type RemoveNftBidTx } from './removeNftBids';\nimport { type Transaction } from '@mysten/sui/transactions';\n\nexport function addTradeportRemoveNftBidTx({ tx, bidNonce, nftType }: RemoveNftBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::cancel_bid',\n\t\targuments: [tx.object(TRADEPORT_BIDDING_STORE), tx.pure.address(bidNonce)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addTradeportKioskRemoveNftBidTx({ tx, bidNonce, nftType }: RemoveNftBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::cancel_bid',\n\t\targuments: [tx.object(TRADEPORT_KIOSK_BIDDING_STORE), tx.pure.address(bidNonce)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addOriginByteRemoveNftBidTx({ tx, bidNonce }: RemoveNftBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::bidding::close_bid',\n\t\targuments: [tx.object(bidNonce)],\n\t\ttypeArguments: ['0x2::sui::SUI'],\n\t});\n}\n\nexport function addBluemoveRemoveNftBidTx({ tx, bidNonce, nftTokenId, nftType }: RemoveNftBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::offer_item::cancel_offer_nft',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_OFFER_DATA_OBJECT),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.u64(bidNonce),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addTocenRemoveNftBidTx({ tx, nftTokenId, bidAmount }: RemoveNftBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x3605d91c559e80cf8fdeabae9abaccb0bc38f96eac0b32bf47e95a9159a5277f::tocen_marketplace::cancel_offer',\n\t\targuments: [\n\t\t\ttx.object(TOCEN_MARKETPLACE_OBJECT),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.u64(bidAmount),\n\t\t],\n\t\ttypeArguments: [],\n\t});\n}\n\nexport async function addSingleBidRemoveNftBidTx({ tx, bidNonce, multiBidId }: RemoveNftBidTx) {\n\tconst multiBidChainId = multiBidId\n\t\t? (\n\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\tchain: 'sui',\n\t\t\t\t\tquery: fetchMultibidChainIdById,\n\t\t\t\t\tvariables: { multiBidId },\n\t\t\t\t})\n\t\t\t)?.multi_bids?.[0]?.chain_id\n\t\t: undefined;\n\taddCancelSingleBidForMultibidChainId(tx, bidNonce, multiBidChainId);\n}\n\nexport function addCancelSingleBidForMultibidChainId(\n\ttx: Transaction,\n\tbidNonce: string,\n\tmultiBidChainId?: string,\n) {\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::cancel_bid`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_MULTI_BID_STORE),\n\t\t\ttx.pure.id(normalizeSuiObjectId(bidNonce)),\n\t\t\ttx.pure.option('id', multiBidChainId),\n\t\t],\n\t});\n}\n\nexport async function addTradePortRemoveNftBidTxHandler(txData: RemoveNftBidTx) {\n\tconst bidType = await getObjectType({\n\t\tsuiClient: txData?.suiClient,\n\t\tobjectId: normalizeSuiObjectId(txData?.bidNonce),\n\t});\n\n\tif (isSingleBid(bidType)) {\n\t\tawait addSingleBidRemoveNftBidTx(txData);\n\t\treturn;\n\t}\n\n\tif (isOriginByteBid(bidType)) {\n\t\taddOriginByteRemoveNftBidTx(txData);\n\t\treturn;\n\t}\n\n\tif (isTradePortKioskBid(bidType)) {\n\t\taddTradeportKioskRemoveNftBidTx(txData);\n\t\treturn;\n\t}\n\n\taddTradeportRemoveNftBidTx(txData);\n}\n","import { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftsById } from '../../graphql/queries/fetchNftsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport { isOBKiosk } from '../../helpers/originByte/isOBKiosk';\nimport { addTradeportKioskCancelNftTransferTx } from './addCancelNftTransfersTx';\n\nexport type CancelNftTransfersTx = {\n\ttx: Transaction;\n\tnftType: string;\n\tnftTokenId: string;\n\tsenderKiosk: string;\n\tsenderAddress: string;\n\tsharedObjects?: any;\n\tkioskTx?: any;\n\tsharedKioskState?: SharedKioskState;\n};\n\nexport type CancelNftTransfers = {\n\tnftIds: string[];\n\twalletAddress: string;\n};\n\nexport const cancelNftTransfers = async (\n\t{ nftIds, walletAddress }: CancelNftTransfers,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftsById,\n\t\tvariables: { nftIds },\n\t});\n\n\tif (res?.nfts?.length === 0) {\n\t\tthrow new Error('No nfts found');\n\t}\n\n\tconst nftsForTracking = [];\n\tconst tx = new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: undefined,\n\t};\n\n\tfor (const nft of res.nfts) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tif (nft?.chain_state?.claimable_reason !== 'offer-transfer') {\n\t\t\tthrow new Error('Cannot cancel transfer of NFT that is not currently transferring');\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: nft?.collection?.id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t});\n\n\t\tconst sharedObjects = await getSharedObjects(nftType);\n\n\t\tconst txData: CancelNftTransfersTx = {\n\t\t\ttx,\n\t\t\tsharedKioskState,\n\t\t\tnftType,\n\t\t\tnftTokenId: nft?.token_id,\n\t\t\tsenderKiosk: nft?.chain_state?.kiosk_id,\n\t\t\tsenderAddress: walletAddress,\n\t\t\tsharedObjects,\n\t\t};\n\n\t\tconst isSenderKioskOriginByte = await isOBKiosk(txData.senderAddress, txData.senderKiosk);\n\n\t\t// If NFT is not inside native kiosk, throw error\n\t\tif (!txData.senderKiosk || isSenderKioskOriginByte) {\n\t\t\tthrow new Error('NFT is not inside a native kiosk, cannot cancel transfer');\n\t\t}\n\n\t\tawait kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tkioskOwner: txData?.senderAddress,\n\t\t\tkiosk: txData?.senderKiosk,\n\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addTradeportKioskCancelNftTransferTx({ ...txData, kioskTx });\n\t\t\t},\n\t\t});\n\n\t\t// nftsForTracking.push({\n\t\t// \tnftType,\n\t\t// \tsenderAddress: walletAddress,\n\t\t// });\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && nftsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'CANCEL_NFT_TRANSFERS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchAccountKiosks = gql`\n\tquery fetchAccountKiosks($accountAddress: String!) {\n\t\tkiosks: kiosks_by_owner_address(owner_address: $accountAddress) {\n\t\t\tid\n\t\t\tis_origin_byte\n\t\t\towner_address\n\t\t\tprofits\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchAccountKiosks } from '../../graphql/queries/fetchAccountKiosks';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\n\nexport const isOBKiosk = async (accountAddress: string, kiosk: any): Promise<boolean> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchAccountKiosks,\n\t\tvariables: { accountAddress: addLeadingZerosAfter0x(accountAddress) },\n\t});\n\n\treturn res?.kiosks?.filter((k: any) => k?.id === kiosk)?.[0]?.is_origin_byte;\n};\n","import { TRADEPORT_KIOSK_TRANSFERS_STORE } from '../../constants';\nimport { type CancelNftTransfersTx } from './cancelNftTransfers';\n\nexport async function addTradeportKioskCancelNftTransferTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n}: CancelNftTransfersTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x49642273ca7db3d942f9fd810c93467974c40e73ea7f03e8e7a632f1222aca73::kiosk_transfers::cancel_with_purchase_cap',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_STORE),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n","import type { KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tBLUEMOVE_CLAIMABLE_CONTRACT_KEYS,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftsById } from '../../graphql/queries/fetchNftsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport {\n\taddBluemoveClaimAcceptedBidNft,\n\taddClaimAcceptedBidNftTx,\n\taddClaimAcceptedBidNftWithPurchaseCapTx,\n\taddClaimTradeHoldTx,\n\taddClaimTransferredNftTx,\n\taddClaimTransferredNftWithPurchaseCapTx,\n} from './addClaimNftsTxs';\n\nexport type ClaimTradeHoldTx = {\n\ttx: Transaction;\n\tkioskClient: KioskClient;\n\tsharedKioskState?: SharedKioskState;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tnftType: string;\n\tclaimableTradeId: string;\n\tclaimableSellerKiosk: string;\n\tclaimableBuyerKiosk: string;\n};\n\nexport type ClaimTransferredNftTx = {\n\ttx: Transaction;\n\tsuiClient?: SuiClient;\n\tkioskTx?: any;\n\tkioskClient: KioskClient;\n\tsharedKioskState?: SharedKioskState;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tclaimer: string;\n\tnftTokenId: string;\n\tnftType: string;\n\tsellerKiosk: string;\n\tseller: string;\n\tpreloadedTransferPolicyId?: string;\n};\n\nexport type ClaimAcceptedBidNftTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskTx?: any;\n\tkioskClient: KioskClient;\n\tsharedKioskState?: SharedKioskState;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tclaimer: string;\n\tnftTokenId: string;\n\tnftType: string;\n\tsellerKiosk: string;\n\tseller: string;\n};\n\nexport type ClaimNfts = {\n\tnftIds: string[];\n\twalletAddress: string;\n\ttx?: Transaction;\n};\nexport const claimNfts = async (\n\t{ nftIds, walletAddress, tx: existingTx }: ClaimNfts,\n\tcontext: RequestContext,\n\tuseOldClaim?: boolean,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftsById,\n\t\tvariables: { nftIds },\n\t});\n\n\tif (res?.nfts?.length === 0) {\n\t\tthrow new Error('No nfts found');\n\t}\n\n\tconst nftsForTracking = [];\n\tconst tx = existingTx ?? new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: undefined,\n\t};\n\n\tfor (const nft of res.nfts) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tif (!nft) {\n\t\t\tthrow new Error('No nft found');\n\t\t}\n\n\t\tif (!nft?.chain_state?.claimable) {\n\t\t\tthrow new Error(`Nft ID: ${nft?.id} is not claimable`);\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: nft?.collection?.id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t});\n\n\t\tconst transferPolicies = nft?.collection?.chain_state?.transfer_policies;\n\n\t\t// claim trade hold nft\n\t\tif (nft?.chain_state?.claimable_trade_id) {\n\t\t\tconst txData: ClaimTradeHoldTx = {\n\t\t\t\ttx,\n\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\ttransferPolicies,\n\t\t\t\tnftType,\n\t\t\t\tclaimableTradeId: nft?.chain_state?.claimable_trade_id,\n\t\t\t\tclaimableSellerKiosk: nft?.chain_state?.claimable_seller_kiosk,\n\t\t\t\tclaimableBuyerKiosk: nft?.chain_state?.claimable_buyer_kiosk,\n\t\t\t\tsharedKioskState,\n\t\t\t};\n\n\t\t\tconst sharedObjects = await getSharedObjects(nftType);\n\t\t\taddClaimTradeHoldTx({ ...txData, sharedObjects });\n\t\t\tcontinue;\n\t\t}\n\n\t\t// claim accepted bid nft\n\t\tif (\n\t\t\t['accept-token-offer', 'accept-collection-offer']?.includes(\n\t\t\t\tnft?.chain_state?.claimable_reason,\n\t\t\t)\n\t\t) {\n\t\t\tconst txData: ClaimAcceptedBidNftTx = {\n\t\t\t\ttx,\n\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\tsharedKioskState,\n\t\t\t\ttransferPolicies,\n\t\t\t\tclaimer: walletAddress,\n\t\t\t\tnftType,\n\t\t\t\tnftTokenId: nft?.token_id,\n\t\t\t\tsellerKiosk: nft?.chain_state?.kiosk_id,\n\t\t\t\tseller: nft?.owner,\n\t\t\t};\n\n\t\t\tif (BLUEMOVE_CLAIMABLE_CONTRACT_KEYS?.includes(nft?.chain_state?.claimable_contract_key)) {\n\t\t\t\tawait kioskTxWrapper({\n\t\t\t\t\ttx,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tkioskOwner: txData?.claimer,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tsharedKioskState,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addBluemoveClaimAcceptedBidNft({\n\t\t\t\t\t\t\t...txData,\n\t\t\t\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (useOldClaim) {\n\t\t\t\tawait kioskTxWrapper({\n\t\t\t\t\ttx,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tkioskOwner: txData?.claimer,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tsharedKioskState,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addClaimAcceptedBidNftTx({ ...txData, kioskTx });\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tawait kioskTxWrapper({\n\t\t\t\t\ttx,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tkioskOwner: txData?.claimer,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\t\tsharedKioskState,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addClaimAcceptedBidNftWithPurchaseCapTx({ ...txData, kioskTx });\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\t// claim transferred nft\n\t\tif (nft?.chain_state?.claimable_reason === 'offer-transfer') {\n\t\t\tconst txData: ClaimTransferredNftTx = {\n\t\t\t\ttx,\n\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\ttransferPolicies,\n\t\t\t\tclaimer: walletAddress,\n\t\t\t\tnftType,\n\t\t\t\tnftTokenId: nft?.token_id,\n\t\t\t\tsellerKiosk: nft?.chain_state?.kiosk_id,\n\t\t\t\tseller: nft?.owner,\n\t\t\t\tsharedKioskState,\n\t\t\t};\n\n\t\t\tif (useOldClaim) {\n\t\t\t\tawait kioskTxWrapper({\n\t\t\t\t\ttx,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tkioskOwner: txData?.claimer,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tkioskStrategy: 'exclude',\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tsharedKioskState,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addClaimTransferredNftTx({ ...txData, kioskTx });\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tawait kioskTxWrapper({\n\t\t\t\t\ttx,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tkioskOwner: txData?.claimer,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tkioskStrategy: 'exclude',\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tsharedKioskState,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addClaimTransferredNftWithPurchaseCapTx({ ...txData, kioskTx });\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// nftsForTracking.push({\n\t\t// \tnftType,\n\t\t// \tclaimer: walletAddress,\n\t\t// \tclaimReason: nft?.chain_state?.claimable_reason,\n\t\t// });\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && nftsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'CLAIM_NFTS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import { type Transaction } from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tamounts: any;\n};\n\nexport const splitCoins = ({ tx, amounts }: Args) => {\n\tconst res = tx.splitCoins(tx.gas, amounts);\n\n\treturn res;\n};\n","import {\n\tBLUEMOVE_KIOSK_OFFER_COLLECTION_BIDDER_BAG,\n\tTRADEPORT_KIOSK_BIDDING_ESCROW_KIOSK,\n\tTRADEPORT_KIOSK_BIDDING_STORE,\n\tTRADEPORT_KIOSK_TRANSFERS_ESCROW_KIOSK,\n\tTRADEPORT_KIOSK_TRANSFERS_STORE,\n} from '../../constants';\nimport { getKioskCollectionRoyaltyFeeAmount } from '../../helpers/kiosk/getKioskCollectionRoyaltyFeeAmount';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { resolveTransferPolicies } from '../../helpers/kiosk/resolveTransferPolicies';\nimport { confirmOBTranfer } from '../../helpers/originByte/confirmOBTranfer';\nimport { splitCoins } from '../../helpers/splitCoins';\nimport {\n\ttype ClaimAcceptedBidNftTx,\n\ttype ClaimTradeHoldTx,\n\ttype ClaimTransferredNftTx,\n} from './claimNfts';\n\nexport const addClaimTradeHoldTx = ({\n\ttx,\n\tsharedObjects,\n\tnftType,\n\tclaimableTradeId,\n\tclaimableSellerKiosk,\n\tclaimableBuyerKiosk,\n}: ClaimTradeHoldTx) => {\n\tconst { orderbook } = sharedObjects;\n\n\tconst transferRequest = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::finish_trade',\n\t\targuments: [\n\t\t\ttx.object(orderbook),\n\t\t\ttx.pure.address(claimableTradeId),\n\t\t\ttx.object(claimableSellerKiosk),\n\t\t\ttx.object(claimableBuyerKiosk),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\tconfirmOBTranfer({ tx, sharedObjects, transferRequest, nftType });\n};\n\nexport const addClaimAcceptedBidNftTx = async ({\n\ttx,\n\tsuiClient,\n\tclaimer,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\ttransferPolicies,\n}: ClaimAcceptedBidNftTx) => {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::claim_bid',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_BIDDING_STORE),\n\t\t\ttx.object(TRADEPORT_KIOSK_BIDDING_ESCROW_KIOSK),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(transferPolicyId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: claimer,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: '0',\n\t\ttransferRequest,\n\t\tshouldSkipKioskLocking: true,\n\t});\n};\n\nexport const addClaimAcceptedBidNftWithPurchaseCapTx = async ({\n\ttx,\n\tsuiClient,\n\tclaimer,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\tsellerKiosk,\n\ttransferPolicies,\n}: ClaimAcceptedBidNftTx) => {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::claim_bid_with_purchase_cap',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_BIDDING_STORE),\n\t\t\ttx.object(sellerKiosk),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(transferPolicyId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: claimer,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: '0',\n\t\ttransferRequest,\n\t\tshouldSkipKioskLocking: true,\n\t});\n};\n\nexport const addClaimTransferredNftTx = async ({\n\ttx,\n\tsuiClient,\n\tclaimer,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\ttransferPolicies,\n}: ClaimTransferredNftTx) => {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x49642273ca7db3d942f9fd810c93467974c40e73ea7f03e8e7a632f1222aca73::kiosk_transfers::claim',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_STORE),\n\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_ESCROW_KIOSK),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(transferPolicyId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: claimer,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: '0',\n\t\ttransferRequest,\n\t\tshouldSkipKioskLocking: true,\n\t});\n};\n\nexport const addClaimTransferredNftWithPurchaseCapTx = async ({\n\ttx,\n\tsuiClient,\n\tclaimer,\n\tkioskTx,\n\tkioskClient,\n\tnftTokenId,\n\tnftType,\n\tsellerKiosk,\n\ttransferPolicies,\n\tpreloadedTransferPolicyId,\n}: ClaimTransferredNftTx) => {\n\tconst transferPolicyId =\n\t\tpreloadedTransferPolicyId ?? getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [transferRequest] = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x49642273ca7db3d942f9fd810c93467974c40e73ea7f03e8e7a632f1222aca73::kiosk_transfers::claim_with_purchase_cap',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_STORE),\n\t\t\ttx.object(sellerKiosk),\n\t\t\tkioskTx.kiosk,\n\t\t\tkioskTx.kioskCap,\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(transferPolicyId),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tawait resolveTransferPolicies({\n\t\ttx,\n\t\ttransferPolicies,\n\t\tsuiClient,\n\t\twalletAddress: claimer,\n\t\tkioskTx,\n\t\tkioskClient,\n\t\tnftType,\n\t\tprice: '0',\n\t\ttransferRequest,\n\t\tshouldSkipKioskLocking: true,\n\t});\n};\n\nexport const addBluemoveClaimAcceptedBidNft = async ({\n\ttx,\n\tsuiClient,\n\tclaimer,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n\tsellerKiosk,\n\ttransferPolicies,\n}: ClaimTransferredNftTx) => {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst royaltyFeeAmount = await getKioskCollectionRoyaltyFeeAmount({\n\t\ttx,\n\t\tsuiClient,\n\t\twalletAddress: claimer,\n\t\troyaltyRulePackageId: '0x434b5bd8f6a7b05fede0ff46c6e511d71ea326ed38056e3bcd681d2d7c2a7879',\n\t\troyaltyRuleModule: 'royalty_rule',\n\t\ttransferPolicyId,\n\t\tprice: '0',\n\t\tnftType,\n\t});\n\n\tconst [coin] = splitCoins({ tx, amounts: [royaltyFeeAmount] });\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xcc97b74ed95c8e8a3ed88050a898727dee37896da579fc400d482b64db6149ff::kiosk_offer_collection_v2::claim_nft_v2',\n\t\targuments: [\n\t\t\ttx.object(BLUEMOVE_KIOSK_OFFER_COLLECTION_BIDDER_BAG),\n\t\t\ttx.object(transferPolicyId),\n\t\t\ttx.object(sellerKiosk),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n};\n","import { type Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_MULTI_BID_PACKAGE, TRADEPORT_MULTI_BID_STORE } from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchMultibidChainIdById } from '../../graphql/queries/fetchMultibidById';\nimport { deserializeOrCreateTxBlock } from '../../helpers/deserializeOrCreateTxBlock';\nimport { extractSwapResultCoinFromTxBlock } from '../../helpers/extractSwapResultCoin';\n\nexport interface UpdateMultiBid {\n\twalletAddress: string;\n\tmultiBidId?: string;\n\tname?: string;\n\tamount?: bigint;\n\tamountToWithdraw?: bigint;\n\ttx?: Transaction | string;\n\tmultiBidChainId?: any;\n}\n\nexport async function updateMultiBid({\n\tmultiBidId,\n\tname,\n\tamount,\n\tamountToWithdraw,\n\ttx: existingTx,\n\tmultiBidChainId,\n}: UpdateMultiBid): Promise<Transaction> {\n\tconst tx = deserializeOrCreateTxBlock({ existingTx });\n\tconst swapResultCoin = extractSwapResultCoinFromTxBlock(tx);\n\n\tif (!multiBidChainId) {\n\t\tconst { chain_id: chainId, cancelled_at } =\n\t\t\t(\n\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\tchain: 'sui',\n\t\t\t\t\tquery: fetchMultibidChainIdById,\n\t\t\t\t\tvariables: { multiBidId },\n\t\t\t\t})\n\t\t\t)?.multi_bids?.[0] ?? {};\n\t\tif (!chainId) {\n\t\t\tthrow new Error(`MultiBid ${multiBidId} not found`);\n\t\t}\n\n\t\tif (cancelled_at) {\n\t\t\tthrow new Error(`MultiBid ${multiBidId} already cancelled`);\n\t\t}\n\n\t\tmultiBidChainId = chainId;\n\t}\n\n\tconst [coin] = tx.splitCoins(swapResultCoin ? swapResultCoin : tx.gas, [amount ?? 0n]);\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::update_multi_bid`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_MULTI_BID_STORE),\n\t\t\ttypeof multiBidChainId === 'string' ? tx.pure.id(multiBidChainId) : multiBidChainId,\n\t\t\ttx.pure.option('string', name),\n\t\t\tcoin,\n\t\t\ttx.pure.option('u64', amountToWithdraw),\n\t\t],\n\t});\n\n\treturn tx;\n}\n","import { type Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_MULTI_BID_PACKAGE, TRADEPORT_MULTI_BID_STORE } from '../../constants';\nimport { deserializeOrCreateTxBlock } from '../../helpers/deserializeOrCreateTxBlock';\nimport { updateMultiBid } from '../updateMultiBid/updateMultiBid';\n\nexport interface CreateMultiBid {\n\twalletAddress: string;\n\tname?: string;\n\tamount?: bigint;\n\ttx?: Transaction | string;\n}\n\nexport async function createMultiBid({\n\twalletAddress,\n\tname,\n\tamount,\n\ttx: existingTx,\n}: CreateMultiBid): Promise<{ multiBidChainId: any; tx: Transaction }> {\n\tconst tx = deserializeOrCreateTxBlock({ existingTx });\n\n\tconst multiBidChainId = tx.moveCall({\n\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::create_multi_bid`,\n\t\targuments: [tx.object(TRADEPORT_MULTI_BID_STORE), tx.pure.option('string', name)],\n\t});\n\n\tif (amount > 0n) {\n\t\tawait updateMultiBid({\n\t\t\twalletAddress,\n\t\t\tmultiBidChainId,\n\t\t\tamount,\n\t\t\tname,\n\t\t\ttx,\n\t\t});\n\t}\n\n\treturn { multiBidChainId, tx };\n}\n","import { type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { Transaction, type TransactionObjectInput } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftsWithListingsById } from '../../graphql/queries/fetchNftsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport { relistNft } from '../relistNft/relistNft';\nimport { addTradePortListTxHandler } from './addListTxs';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { addSponsorListingTx } from '../sponsorNftListing/addSponsorNftListingTx';\nimport { type SponsorNftListingOptions } from '../sponsorNftListing/sponsorNftListing';\nimport { isExpiredListing } from '../../helpers/isExpiredListing';\n\nexport type ListNftTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tkioskTx?: any;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tseller: string;\n\tcollectionId: string;\n\tnftTokenId?: string;\n\tborrowedItem?: TransactionObjectInput;\n\tnftType: string;\n\tlistPrice: number;\n\tsellerKiosk: string;\n\tsharedKioskState?: SharedKioskState;\n};\n\nexport type ListNfts = {\n\tnfts: Array<{\n\t\tid: string;\n\t\tlistPriceInMist: number;\n\t\tsponsorOptions?: SponsorNftListingOptions;\n\t}>;\n\twalletAddress: string;\n};\n\nexport const listNfts = async (\n\t{ nfts, walletAddress }: ListNfts,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftsWithListingsById,\n\t\tvariables: { nftIds: nfts.map((nft) => nft.id) },\n\t});\n\n\tif (res?.nfts?.length === 0) {\n\t\tthrow new Error('No nfts found');\n\t}\n\n\tconst nftsForTracking = [];\n\tconst tx = new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: undefined,\n\t};\n\n\tfor (const nft of res.nfts) {\n\t\tconst inputNft = nfts?.find((n) => n.id === nft?.id);\n\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: nft?.collection?.id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t});\n\n\t\tconst transferPolicies = nft?.collection?.chain_state?.transfer_policies;\n\n\t\tif (inputNft?.sponsorOptions?.shouldSponsor && isOriginByteCollection(transferPolicies)) {\n\t\t\tthrow new Error(`You cannot sponsor an Origin Byte NFT. Nft Token Id: ${nft?.token_id}`);\n\t\t}\n\n\t\tif (\n\t\t\tnft?.listed ||\n\t\t\tnft.listings.some((listing: { nonce?: string; seller?: string }) =>\n\t\t\t\tisExpiredListing(listing, walletAddress),\n\t\t\t)\n\t\t) {\n\t\t\tawait relistNft({\n\t\t\t\ttx,\n\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\tsharedKioskState,\n\t\t\t\ttransferPolicies,\n\t\t\t\tnft,\n\t\t\t\tlistPrice: inputNft?.listPriceInMist,\n\t\t\t\twalletAddress,\n\t\t\t});\n\t\t} else {\n\t\t\tconst listTxData: ListNftTx = {\n\t\t\t\ttx,\n\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\tsharedKioskState,\n\t\t\t\ttransferPolicies,\n\t\t\t\tseller: walletAddress,\n\t\t\t\tcollectionId: nft?.collection_id,\n\t\t\t\tnftTokenId: nft?.token_id,\n\t\t\t\tnftType,\n\t\t\t\tlistPrice: inputNft?.listPriceInMist,\n\t\t\t\tsellerKiosk: nft?.chain_state?.kiosk_id,\n\t\t\t};\n\n\t\t\tawait addTradePortListTxHandler(listTxData);\n\t\t}\n\n\t\tif (inputNft?.sponsorOptions?.shouldSponsor) {\n\t\t\tawait addSponsorListingTx({\n\t\t\t\ttx,\n\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\tnftTokenId: nft?.token_id,\n\t\t\t\tnftType,\n\t\t\t\twalletAddress,\n\t\t\t\tsponsorOptions: inputNft?.sponsorOptions,\n\t\t\t\tdefiRouterUrl: context.defiRouterUrl,\n\t\t\t});\n\t\t}\n\n\t\tnftsForTracking.push({\n\t\t\twalletAddress,\n\t\t\tnftType,\n\t\t\tcollectionId: nft?.collection_id,\n\t\t\tlistPrice: inputNft?.listPriceInMist,\n\t\t\tisRelist: nft?.listed,\n\t\t\tmarketRelistedFrom: nft?.listings?.[0]?.market_name,\n\t\t});\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && nftsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'LIST_NFTS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\treturn tx instanceof Transaction ? tx : Transaction.from(tx);\n};\n","import { getNativeKioskTransferPolicies } from './kiosk/getNativeKioskTransferPolicies';\n\ninterface ValidateMinFloorPriceArgs {\n\ttransferPolicies: any;\n\tlistPrice: number;\n}\n\nexport function validateMinFloorPrice({ transferPolicies, listPrice }: ValidateMinFloorPriceArgs) {\n\tconst transferPolicy = getNativeKioskTransferPolicies(transferPolicies)?.at(0);\n\tconst minFloorPrice = transferPolicy?.rules?.filter(\n\t\t(rule: any) => rule?.type === 'floor_price_rule',\n\t)?.[0]?.floor_price;\n\n\tif (minFloorPrice) {\n\t\tif (listPrice < minFloorPrice) {\n\t\t\tconst formattedMinFloorPrice = Number(minFloorPrice) / 1000000000;\n\t\t\tthrow new Error(\n\t\t\t\t`NFT Transfer Policy has a miminum floor price rule. Item cannot be listed for less than ${formattedMinFloorPrice} SUI`,\n\t\t\t);\n\t\t}\n\t}\n}\n","import {\n\tORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK,\n\tTRADEPORT_BENEFICIARY_ADDRESS,\n\tTRADEPORT_LISTINGS_PACKAGE,\n\tTRADEPORT_LISTINGS_STORE,\n\tTRADEPORT_ORDERBOOK_STORE,\n} from '../../constants';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { hasNativeKioskTransferPolicyRules } from '../../helpers/hasTransferPolicyRules';\nimport { assertNftInSharedKiosk } from '../../helpers/kiosk/assertNftInSharedKiosk';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { takeAndBorrowNftFromKiosk } from '../../helpers/kiosk/takeAndBorrowNftFromKiosk';\nimport { depositItemIntoOBKiosk } from '../../helpers/originByte/depositNftIntoOBKiosk';\nimport { getOrCreateOBKiosk } from '../../helpers/originByte/getOrCreateOBKiosk';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { shareOriginByteKiosk } from '../../helpers/originByte/shareOriginByteKiosk';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { validateMinFloorPrice } from '../../helpers/validateMinFloorPrice';\nimport { type ListNftTx } from './listNfts';\n\nexport async function addOriginByteListTx({\n\ttx,\n\tsharedObjects,\n\tnftTokenId,\n\tnftType,\n\tseller,\n\tlistPrice,\n\tcollectionId,\n\tsellerKiosk,\n\tsharedKioskState,\n}: ListNftTx) {\n\tconst { orderbook } = sharedObjects;\n\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: sellerKiosk,\n\t\twalletAddress: seller,\n\t\tsharedKioskState,\n\t});\n\n\tconst { kiosk, isNewKiosk } = await getOrCreateOBKiosk({\n\t\ttx,\n\t\taddress: seller,\n\t\tkioskToUseIfExists: sellerKiosk,\n\t\tsharedKioskState,\n\t});\n\n\tif (isNewKiosk) {\n\t\tdepositItemIntoOBKiosk({\n\t\t\ttx,\n\t\t\tkiosk: sellerKiosk,\n\t\t\tnftTokenId,\n\t\t\tnftType,\n\t\t});\n\t}\n\n\tconst marketFeePrice = getMarketFeePrice({ price: listPrice, collectionId });\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::create_ask_with_commission',\n\t\targuments: [\n\t\t\ttx.object(orderbook),\n\t\t\ttx.object(kiosk),\n\t\t\ttx.pure.u64(listPrice),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.address(TRADEPORT_BENEFICIARY_ADDRESS),\n\t\t\ttx.pure.u64(marketFeePrice),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\tif (isNewKiosk) {\n\t\tshareOriginByteKiosk({ tx, kiosk });\n\t}\n}\n\nexport function addTradePortListTx({\n\ttx,\n\tnftTokenId,\n\tborrowedItem,\n\tnftType,\n\tlistPrice,\n}: ListNftTx) {\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::create_ob_listing_without_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\tborrowedItem ? tx.object(borrowedItem) : tx.object(nftTokenId),\n\t\t\ttx.pure.u64(listPrice),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addKioskTradePortListTx({\n\ttx,\n\tkioskTx,\n\ttransferPolicies,\n\tnftTokenId,\n\tnftType,\n\tlistPrice,\n\tseller,\n}: ListNftTx) {\n\tvalidateMinFloorPrice({ transferPolicies, listPrice });\n\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::create_ob_listing_with_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(seller),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t\ttx.pure.u64(listPrice),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addTradePortListTxHandler(txData: ListNftTx) {\n\t// If NFT is an Origin Byte collection, create an Origin Byte listing\n\tif (\n\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\tawait addOriginByteListTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\n\t// If nft has no transfer policy rule but is inside a kiosk, take it out of the kiosk\n\tif (\n\t\t!hasNativeKioskTransferPolicyRules(txData?.transferPolicies) &&\n\t\ttxData?.sellerKiosk &&\n\t\ttxData?.nftType !==\n\t\t\t'0xbf1431324a4a6eadd70e0ac6c5a16f36492f255ed4d011978b2cf34ad738efe6::day_one::DayOne'\n\t) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tconst borrowedItem = await takeAndBorrowNftFromKiosk({\n\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\t\tkioskTx,\n\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\tnftTokenId: txData?.nftTokenId,\n\t\t\t\t\tnftType: txData?.nftType,\n\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\tkioskOwner: txData?.seller,\n\t\t\t\t});\n\n\t\t\t\taddTradePortListTx({ ...txData, borrowedItem });\n\t\t\t},\n\t\t});\n\t}\n\n\t// If NFT is in a kiosk, create a kiosk listing\n\tif (txData?.sellerKiosk) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addKioskTradePortListTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\t// If NFT is not in a kiosk, but nft type has a transfer policy rule, create kiosk and place NFT in kiosk first\n\tif (!txData?.sellerKiosk && hasNativeKioskTransferPolicyRules(txData?.transferPolicies)) {\n\t\treturn kioskTxWrapper({\n\t\t\ttx: txData?.tx,\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tkioskTx.place({\n\t\t\t\t\titem: txData?.nftTokenId,\n\t\t\t\t\titemType: txData?.nftType,\n\t\t\t\t});\n\t\t\t\tawait addKioskTradePortListTx({\n\t\t\t\t\t...txData,\n\t\t\t\t\tkioskTx,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\t// Fallback to non-kiosk listing\n\taddTradePortListTx(txData);\n}\n","import { type KioskClient, type ObjectArgument } from '@mysten/kiosk';\nimport { type Transaction, type TransactionObjectArgument } from '@mysten/sui/transactions';\nimport {\n\tBLUEMOVE_MARKET_CONFIG_OBJECT,\n\tTOCEN_MARKETPLACE_OBJECT,\n\tTRADEPORT_LISTINGS_PACKAGE,\n\tTRADEPORT_LISTINGS_STORE,\n\tTRADEPORT_ORDERBOOK_STORE,\n} from '../../constants';\nimport { addTradePortListTx } from './addListTxs';\nimport { type SuiClient } from '@mysten/sui/client';\n\nexport type RelistNftTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskTx?: any;\n\tkioskClient: KioskClient;\n\ttransferPolicies: any;\n\tseller: string;\n\tcollectionId: string;\n\tnftTokenId?: string;\n\tborrowedItem?: ObjectArgument;\n\tnftType: string;\n\tlistPrice: number;\n\tlistingNonce: string;\n\tsellerKiosk: string;\n};\n\nexport function addTradePortRelistTx({ tx, nftTokenId, nftType, listPrice }: RelistNftTx) {\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::relist_ob_listing_without_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t\ttx.pure.u64(listPrice),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addKioskTradePortRelistTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n\tlistPrice,\n}: RelistNftTx) {\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::relist_ob_listing_with_transfer_policy`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t\ttx.pure.u64(listPrice),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addBlueMoveRelistTx(txData: RelistNftTx) {\n\tconst { tx, nftTokenId, nftType, listPrice } = txData;\n\n\tconst borrowedItem = tx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::marketplace::delist',\n\t\targuments: [tx.object(BLUEMOVE_MARKET_CONFIG_OBJECT), tx.pure.address(nftTokenId)],\n\t\ttypeArguments: [nftType, nftType],\n\t}) as TransactionObjectArgument;\n\n\taddTradePortListTx({ ...txData, listPrice, borrowedItem });\n}\n\nexport function addTocenRelistTx(txData: RelistNftTx) {\n\tconst { tx, nftTokenId, nftType, listPrice } = txData;\n\n\tconst borrowedItem = tx.moveCall({\n\t\ttarget:\n\t\t\t'0x3605d91c559e80cf8fdeabae9abaccb0bc38f96eac0b32bf47e95a9159a5277f::tocen_marketplace::delist',\n\t\targuments: [tx.object(TOCEN_MARKETPLACE_OBJECT), tx.pure.address(nftTokenId)],\n\t\ttypeArguments: [nftType],\n\t}) as any;\n\n\taddTradePortListTx({ ...txData, listPrice, borrowedItem });\n}\n","import { type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK } from '../../constants';\nimport { getNftType } from '../../helpers/getNftType';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { addTradePortListTxHandler } from '../listNfts/addListTxs';\nimport {\n\taddBlueMoveRelistTx,\n\taddTocenRelistTx,\n\taddTradePortRelistTx,\n\taddKioskTradePortRelistTx,\n} from '../listNfts/addRelistTxs';\nimport {\n\taddBluemoveUnlistTxHandler,\n\taddClutchyUnlistTxHandler,\n\taddHyperspaceUnlistTxHandler,\n\taddTradePortUnlistTxHandler,\n} from '../unlistListings/addUnlistListingTxs';\nimport { type UnlistListingTx } from '../unlistListings/unlistListings';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\n\ninterface Args {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tsharedKioskState: SharedKioskState;\n\ttransferPolicies: any;\n\tnft: any;\n\tlistPrice: number;\n\twalletAddress: string;\n}\n\nexport async function relistNft({\n\ttx,\n\tsuiClient,\n\tkioskClient,\n\tsharedKioskState,\n\tnft,\n\tlistPrice,\n\ttransferPolicies,\n\twalletAddress,\n}: Args) {\n\tconst firstListedOrExpiredListing = (\n\t\tnft?.listings as Array<{ listed: boolean; price?: number; nonce?: string; market_name: string }>\n\t).find((l) => l.listed || l.nonce);\n\tif (!firstListedOrExpiredListing) {\n\t\tthrow new Error('No listing found for NFT');\n\t}\n\n\tconst txData: UnlistListingTx = {\n\t\ttx,\n\t\tsuiClient,\n\t\tkioskClient,\n\t\tsharedKioskState,\n\t\ttransferPolicies,\n\t\tnftTokenId: nft?.token_id,\n\t\tnftType: getNftType({\n\t\t\tcollectionId: nft?.collection?.id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t}),\n\t\tlistingNonce: firstListedOrExpiredListing.nonce,\n\t\tprice: firstListedOrExpiredListing.price,\n\t\tsellerKiosk: nft?.chain_state?.kiosk_id,\n\t\tcollectionId: nft?.collection_id,\n\t\tseller: walletAddress,\n\t};\n\n\tswitch (firstListedOrExpiredListing.market_name) {\n\t\tcase 'tradeport':\n\t\t\tif (\n\t\t\t\ttxData?.listingNonce &&\n\t\t\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t\t\t) {\n\t\t\t\tawait addTradePortUnlistTxHandler(txData);\n\t\t\t\tawait addTradePortListTxHandler({\n\t\t\t\t\t...txData,\n\t\t\t\t\tlistPrice,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (txData?.listingNonce?.startsWith('0::')) {\n\t\t\t\taddTradePortRelistTx({ ...txData, listPrice });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (txData?.listingNonce?.startsWith('1::')) {\n\t\t\t\treturn kioskTxWrapper({\n\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\tkioskOwner: txData?.seller,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\t\t\tshouldUseSharedKioskTx: false,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addKioskTradePortRelistTx({\n\t\t\t\t\t\t\t...txData,\n\t\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\t\tlistPrice,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tawait addTradePortUnlistTxHandler({ ...txData, isPartOfRelist: true });\n\t\t\tawait addTradePortListTxHandler({ ...txData, listPrice });\n\t\t\tbreak;\n\t\tcase 'hyperspace':\n\t\t\tawait addHyperspaceUnlistTxHandler(txData);\n\t\t\tawait addTradePortListTxHandler({ ...txData, listPrice });\n\t\t\tbreak;\n\t\tcase 'bluemove':\n\t\t\tif (\n\t\t\t\t!isOriginByteCollection(txData?.transferPolicies) ||\n\t\t\t\t(ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType)) &&\n\t\t\t\t\t!txData?.sellerKiosk)\n\t\t\t) {\n\t\t\t\taddBlueMoveRelistTx({ ...txData, listPrice });\n\t\t\t} else {\n\t\t\t\tawait addBluemoveUnlistTxHandler(txData);\n\t\t\t\tawait addTradePortListTxHandler({ ...txData, listPrice });\n\t\t\t}\n\n\t\t\tbreak;\n\t\tcase 'clutchy':\n\t\t\tawait addClutchyUnlistTxHandler(txData);\n\t\t\tawait addTradePortListTxHandler({ ...txData, listPrice });\n\t\t\tbreak;\n\t\tcase 'souffl3':\n\t\t\t// Souffl3 contract does not support relists\n\n\t\t\tbreak;\n\t\tcase 'somis':\n\t\t\t// Somis contract does not support relists\n\n\t\t\tbreak;\n\t\tcase 'keepsake':\n\t\t\t// Keepsake contract does not support relists\n\n\t\t\tbreak;\n\t\tcase 'tocen':\n\t\t\taddTocenRelistTx({ ...txData, listPrice });\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error('Marketplace not supported');\n\t}\n}\n","import {\n\tAggregatorQuoter,\n\ttype Coin,\n\tCoinProvider,\n\ttype Commission,\n\ttype GetRoutesResult,\n\tProtocol,\n\ttype Route,\n\tTradeBuilder,\n} from '@flowx-finance/sdk';\nimport BigNumber from '../../bigNumberConfig';\nimport { coinWithBalance, Transaction, type TransactionResult } from '@mysten/sui/transactions';\nimport { normalizeStructTag, normalizeSuiAddress, SUI_TYPE_ARG } from '@mysten/sui/utils';\nimport ms, { type StringValue } from 'ms';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDexConstants,\n\tTRADEPORT_NFT_STRATEGY_MANAGER_ID,\n\tTRADEPORT_NFT_STRATEGY_PACKAGE_ID,\n} from '../../constants';\nimport { getCollectionChainStateByFtType } from '../../helpers/getCollectionChainState';\nimport { toDecimalValue, toPureValue } from '../../utils/pureValues';\n\nexport type SwapCoins = {\n\twalletAddress: string;\n\tcoinInType: string;\n\tcoinInAmount: string;\n\tcoinOutType: string;\n\tslippage?: number;\n\tttl?: StringValue;\n\texcludeSources?: Protocol[];\n\troutes?: Array<Route<Coin, Coin>>;\n\tcommission?: Commission;\n\ttx?: Transaction;\n};\n\nexport type SwapRoutesArgs = {\n\twalletAddress: string;\n\tcoinInType: string;\n\tcoinOutType: string;\n\tamountToSwap: bigint;\n\texcludeSources?: Protocol[];\n\tcommission?: Commission;\n};\n\nexport async function swapCoins(\n\t{\n\t\twalletAddress,\n\t\tcoinInType,\n\t\tcoinInAmount,\n\t\tcoinOutType,\n\t\tslippage = 1000, // 0.1%\n\t\tttl = '5m',\n\t\texcludeSources = [Protocol.STEAMM, Protocol.BOLT],\n\t\troutes,\n\t\tcommission,\n\t\ttx: existingTx,\n\t}: SwapCoins,\n\t{ suiClient, defiRouterUrl }: Pick<RequestContext, 'suiClient' | 'defiRouterUrl'>,\n): Promise<{\n\ttx: Transaction;\n\tcoinOut: TransactionResult;\n}> {\n\tconst inAmount = BigInt(coinInAmount);\n\tconst tx = existingTx ?? new Transaction();\n\tcoinInType = normalizeStructTag(coinInType);\n\tcoinOutType = normalizeStructTag(coinOutType);\n\twalletAddress = normalizeSuiAddress(walletAddress);\n\ttx.setSenderIfNotSet(normalizeSuiAddress(walletAddress));\n\n\t// Zero input amount, return zero output amount\n\tif (inAmount === 0n) {\n\t\tconst zeroCoin = tx.moveCall({\n\t\t\ttarget: '0x2::coin::zero',\n\t\t\ttypeArguments: [coinOutType],\n\t\t});\n\t\treturn {\n\t\t\ttx,\n\t\t\tcoinOut: zeroCoin,\n\t\t};\n\t}\n\n\t// Input Coin and Out Coin are the same, no need to swap\n\tif (coinInType === coinOutType) {\n\t\tconst getCoin = coinWithBalance({\n\t\t\ttype: coinInType,\n\t\t\tbalance: inAmount,\n\t\t});\n\t\treturn {\n\t\t\ttx,\n\t\t\tcoinOut: getCoin(tx),\n\t\t};\n\t}\n\n\tconst types = await getAffectedNftAndFtTypes(coinInType, coinOutType);\n\tconst { feeAndReward, amountToSwap } = calculateSwapAmounts(types.length, inAmount);\n\n\tif (!routes) {\n\t\troutes = (\n\t\t\tawait buildSwapRoutes(\n\t\t\t\t{\n\t\t\t\t\twalletAddress,\n\t\t\t\t\tcoinInType,\n\t\t\t\t\tcoinOutType,\n\n\t\t\t\t\tamountToSwap,\n\t\t\t\t\texcludeSources,\n\t\t\t\t\tcommission,\n\t\t\t\t},\n\t\t\t\t{ defiRouterUrl },\n\t\t\t)\n\t\t).routes;\n\t}\n\n\tconst tradeBuilder = new TradeBuilder('mainnet', routes);\n\tif (commission) {\n\t\ttradeBuilder.commission(commission);\n\t}\n\n\tconst trade = tradeBuilder\n\t\t.sender(walletAddress)\n\t\t.slippage(slippage)\n\t\t.deadline(Date.now() + ms(ttl))\n\t\t.build();\n\n\tconst coinOut = (await trade.swap({ client: suiClient, tx })) as TransactionResult;\n\n\tlet suiFeeAndRewardCoin: TransactionResult;\n\tif (coinInType === normalizeStructTag(SUI_TYPE_ARG)) {\n\t\tsuiFeeAndRewardCoin = tx.splitCoins(tx.gas, [\n\t\t\ttx.pure.u64(feeAndReward),\n\t\t])[0] as unknown as TransactionResult;\n\t} else {\n\t\t// Swap to SUI for fee and reward\n\t\tconst suiFeeAndRewardRoutes = await buildSwapRoutes(\n\t\t\t{\n\t\t\t\twalletAddress,\n\t\t\t\tcoinInType,\n\t\t\t\tcoinOutType: SUI_TYPE_ARG,\n\t\t\t\tamountToSwap: feeAndReward,\n\t\t\t\texcludeSources,\n\t\t\t},\n\t\t\t{ defiRouterUrl },\n\t\t);\n\t\tconst suiFeeTradeBuilder = new TradeBuilder('mainnet', suiFeeAndRewardRoutes.routes);\n\t\tconst suiFeeTrade = suiFeeTradeBuilder\n\t\t\t.sender(walletAddress)\n\t\t\t.slippage(slippage)\n\t\t\t.deadline(Date.now() + ms(ttl))\n\t\t\t.build();\n\t\tsuiFeeAndRewardCoin = (await suiFeeTrade.swap({ client: suiClient, tx })) as TransactionResult;\n\t}\n\n\tif (types.length > 0) {\n\t\tif (types.length > 2) {\n\t\t\tthrow new Error('Unexpected affected types count greater than 2');\n\t\t}\n\n\t\tlet usedSuiCoin = suiFeeAndRewardCoin;\n\t\tif (types.length === 2) {\n\t\t\tconst suiFeeAndRewardCoinBalance = tx.moveCall({\n\t\t\t\ttarget: '0x2::coin::value',\n\t\t\t\ttypeArguments: [SUI_TYPE_ARG],\n\t\t\t\targuments: [suiFeeAndRewardCoin],\n\t\t\t});\n\t\t\tconst halfSuiCoinAmount = tx.moveCall({\n\t\t\t\ttarget: '0x2::math::divide_and_round_up',\n\t\t\t\targuments: [suiFeeAndRewardCoinBalance, tx.pure.u64(2)],\n\t\t\t});\n\t\t\tconst [coin] = tx.splitCoins(usedSuiCoin, [halfSuiCoinAmount]);\n\t\t\tusedSuiCoin = coin as unknown as TransactionResult; // 1/2 of SUI for 1st iteration, remaining SUI for 2nd iteration\n\t\t}\n\n\t\tfor (const data of types) {\n\t\t\t// max 2 iterations\n\t\t\tconst { nftType, ftType, type } = data;\n\t\t\tswitch (type) {\n\t\t\t\tcase 'liquidNft': {\n\t\t\t\t\t// Pay 4% fee + reward for liquid nft, the contract will split this balance itself\n\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\ttarget: `${DexConstants.commission}::commission::pay`,\n\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\ttx.object(DexConstants.commissionManager),\n\t\t\t\t\t\t\ttx.pure.string('swap'),\n\t\t\t\t\t\t\tusedSuiCoin,\n\t\t\t\t\t\t\ttx.pure.option('string', nftType),\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttypeArguments: [SUI_TYPE_ARG],\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'nftStrategy': {\n\t\t\t\t\t// Pay 1% fee + 3% reward for nft strategy\n\t\t\t\t\tconst suiFeeAndRewardCoinBalance = tx.moveCall({\n\t\t\t\t\t\ttarget: '0x2::coin::value',\n\t\t\t\t\t\ttypeArguments: [SUI_TYPE_ARG],\n\t\t\t\t\t\targuments: [usedSuiCoin],\n\t\t\t\t\t});\n\t\t\t\t\tconst feeAmount = tx.moveCall({\n\t\t\t\t\t\ttarget: '0x2::math::divide_and_round_up',\n\t\t\t\t\t\targuments: [suiFeeAndRewardCoinBalance, tx.pure.u64(4)],\n\t\t\t\t\t});\n\t\t\t\t\tconst [feeCoin] = tx.splitCoins(usedSuiCoin, [feeAmount]);\n\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\ttarget: `${DexConstants.commission}::commission::pay`,\n\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\ttx.object(DexConstants.commissionManager),\n\t\t\t\t\t\t\ttx.pure.string('swap'),\n\t\t\t\t\t\t\tfeeCoin,\n\t\t\t\t\t\t\ttx.pure.option('string', undefined),\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttypeArguments: [SUI_TYPE_ARG],\n\t\t\t\t\t});\n\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\ttarget: `${TRADEPORT_NFT_STRATEGY_PACKAGE_ID}::tradeport_nft_strategy::reward_strategy`,\n\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\ttx.object(TRADEPORT_NFT_STRATEGY_MANAGER_ID),\n\t\t\t\t\t\t\tusedSuiCoin, // 3/4 retained coin for reward\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttypeArguments: [nftType, ftType],\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tthrow new Error(`Unexpected type ${type as string}`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tusedSuiCoin = suiFeeAndRewardCoin; // remaining SUI after 1st iteration\n\t\t}\n\t} else {\n\t\t// Default, get 1% fee\n\t\ttx.moveCall({\n\t\t\ttarget: `${DexConstants.commission}::commission::pay`,\n\t\t\targuments: [\n\t\t\t\ttx.object(DexConstants.commissionManager),\n\t\t\t\ttx.pure.string('swap'),\n\t\t\t\tsuiFeeAndRewardCoin,\n\t\t\t\ttx.pure.option('string', undefined),\n\t\t\t],\n\t\t\ttypeArguments: [SUI_TYPE_ARG],\n\t\t});\n\t}\n\n\treturn {\n\t\ttx,\n\t\tcoinOut,\n\t};\n}\n\nexport async function calculateAmountToSwap({\n\tcoinInType,\n\tcoinOutType,\n\tcoinInAmount,\n}: Pick<SwapCoins, 'coinInType' | 'coinOutType' | 'coinInAmount'>): Promise<bigint> {\n\tconst types = await getAffectedNftAndFtTypes(coinInType, coinOutType);\n\tconst { amountToSwap } = calculateSwapAmounts(types.length, BigInt(coinInAmount));\n\treturn amountToSwap;\n}\n\nexport async function calculateSwapInputAmountWithSlippage({\n\tcoinInType,\n\tcoinOutType,\n\tcoinOutAmount,\n\tslippage = 0,\n}: {\n\tcoinInType: string;\n\tcoinOutType: string;\n\tcoinOutAmount: string | number;\n\tslippage?: number;\n}): Promise<BigNumber> {\n\tif (coinInType === coinOutType) {\n\t\treturn new BigNumber(coinOutAmount);\n\t}\n\n\tconst provider = new CoinProvider('mainnet');\n\n\tconst coinQueryResult = await provider.getCoins({\n\t\tlimit: 2,\n\t\tcoinTypes: [coinInType, coinOutType],\n\t});\n\n\tconst coinIn = coinQueryResult?.find(\n\t\t(coin) => normalizeStructTag(coin.coinType) === normalizeStructTag(coinInType),\n\t);\n\tconst coinOut = coinQueryResult?.find(\n\t\t(coin) => normalizeStructTag(coin.coinType) === normalizeStructTag(coinOutType),\n\t);\n\n\tconst exchangeRate = new BigNumber(coinOut.derivedPriceInUSD ?? 0)?.gt(0)\n\t\t? new BigNumber(coinIn?.derivedPriceInUSD ?? 1)?.div(coinOut?.derivedPriceInUSD ?? 1)\n\t\t: new BigNumber(0);\n\n\tconst amountSell = toDecimalValue(coinOutAmount.toString(), coinOut?.decimals).div(exchangeRate);\n\n\tconst slippageMultiplier = 1 + parseInt(slippage.toString() || '0', 10) / 1000000;\n\n\tconst amountWithSlippage = amountSell.times(slippageMultiplier);\n\n\tconst coinInAmount = toPureValue(amountWithSlippage, coinIn?.decimals);\n\n\treturn coinInAmount;\n}\n\nexport async function buildSwapRoutes(\n\toptions: SwapRoutesArgs,\n\t{ defiRouterUrl }: { defiRouterUrl?: string },\n): Promise<GetRoutesResult<Coin, Coin>> {\n\tconst aggregatorQuoter = new AggregatorQuoter('mainnet');\n\tconst routes = await aggregatorQuoter.getRoutes({\n\t\ttokenIn: options.coinInType,\n\t\ttokenOut: options.coinOutType,\n\t\tamountIn: options.amountToSwap.toString(),\n\t\tcommission: options.commission,\n\t\texcludeSources: options.excludeSources,\n\t});\n\n\tif (defiRouterUrl && options.walletAddress) {\n\t\tawait makeDefiRouterRequest(`${defiRouterUrl}/start`, {\n\t\t\twalletId: options.walletAddress,\n\t\t\tcoinTypeIn: options.coinInType,\n\t\t\tcoinTypeOut: options.coinOutType,\n\t\t\tamountIn: options.amountToSwap.toString(),\n\t\t});\n\t}\n\n\treturn routes;\n}\n\nfunction calculateSwapAmounts(\n\taffectedTypesCount: number,\n\tinAmount: bigint,\n): { feeAndReward: bigint; amountToSwap: bigint } {\n\t// 4% (or 8%) fee and reward budget or 1% fee if neither nft strategy, nor liquid nft involved\n\tconst feeAndReward =\n\t\taffectedTypesCount > 0 ? (BigInt(affectedTypesCount) * inAmount) / 25n : inAmount / 100n;\n\tconst amountToSwap = inAmount - feeAndReward; // amount after deducting fee and reward budget\n\n\tif (amountToSwap <= 0n) {\n\t\tthrow new Error('Amount to swap is too small');\n\t}\n\n\treturn { feeAndReward, amountToSwap };\n}\n\nasync function getAffectedNftAndFtTypes(\n\tcoinInType: string,\n\tcoinOutType: string,\n): Promise<Array<{ nftType: string; ftType: string; type: 'liquidNft' | 'nftStrategy' }>> {\n\tconst normalizedSuiType = normalizeStructTag(SUI_TYPE_ARG);\n\tconst coinTypes = [coinInType, coinOutType].filter((type) => type !== normalizedSuiType);\n\tconst types = await Promise.all(\n\t\tcoinTypes.map(async (type) => {\n\t\t\tconst chainState = await getCollectionChainStateByFtType(type);\n\t\t\treturn chainState\n\t\t\t\t? {\n\t\t\t\t\t\tnftType: chainState.nft_type as string,\n\t\t\t\t\t\tftType: type,\n\t\t\t\t\t\ttype: chainState.ft_type ? 'liquidNft' : 'nftStrategy',\n\t\t\t\t\t}\n\t\t\t\t: undefined;\n\t\t}),\n\t);\n\n\treturn types.filter(Boolean) as Array<{\n\t\tnftType: string;\n\t\tftType: string;\n\t\ttype: 'liquidNft' | 'nftStrategy';\n\t}>;\n}\n\nasync function makeDefiRouterRequest(\n\turl: string,\n\tbody: Record<string, unknown>,\n\tdefaultResponse: unknown = undefined,\n): Promise<unknown> {\n\ttry {\n\t\tconst response = await fetch(url, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\tbody: JSON.stringify(body),\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tconsole.warn(`DeFi router request failed with status ${response.status}`);\n\t\t\treturn defaultResponse;\n\t\t}\n\n\t\tif (response.headers.get('Content-Type')?.includes('application/json')) {\n\t\t\treturn await response.json();\n\t\t}\n\n\t\treturn defaultResponse;\n\t} catch (error) {\n\t\tconsole.warn(`DeFi router request error: ${(error as Error).message}`);\n\t\treturn defaultResponse;\n\t}\n}\n","import BigNumber from '../bigNumberConfig';\n\nexport const toDecimalValue = (value: string | number | BigNumber, decimals: number): BigNumber => {\n\tif (!value || decimals === undefined) return new BigNumber(0);\n\n\treturn new BigNumber(value).div(10 ** decimals);\n};\n\nexport const toPureValue = (value: string | number | BigNumber, decimals: number): BigNumber => {\n\tif (!value || decimals === undefined) return new BigNumber(0);\n\n\treturn new BigNumber(new BigNumber(value).multipliedBy(10 ** decimals).toFixed(0));\n};\n","import type { Transaction } from '@mysten/sui/transactions';\nimport { USDC_COIN_TYPE } from '../../constants';\nimport type { SuiClient } from '@mysten/sui/client';\nimport { TRADEPORT_LISTINGS_PACKAGE, TRADEPORT_LISTINGS_STORE } from '../../constants';\nimport { type SponsorNftListingOptions } from './sponsorNftListing';\nimport BigNumber from '../../bigNumberConfig';\nimport { calculateSwapInputAmountWithSlippage, swapCoins } from '../swapCoins/swapCoins';\n\nexport const addSponsorListingTx = async ({\n\ttx,\n\tnftTokenId,\n\tnftType,\n\tsuiClient,\n\twalletAddress,\n\tsponsorOptions,\n\tdefiRouterUrl,\n}: {\n\ttx: Transaction;\n\tnftTokenId: string;\n\tnftType: string;\n\tsuiClient: SuiClient;\n\twalletAddress: string;\n\tsponsorOptions: SponsorNftListingOptions;\n\tdefiRouterUrl: string;\n}) => {\n\tconst coinInAmount =\n\t\tsponsorOptions?.coinInAmount ??\n\t\t(await calculateSwapInputAmountWithSlippage({\n\t\t\tcoinInType: sponsorOptions?.coinInType,\n\t\t\tcoinOutType: USDC_COIN_TYPE,\n\t\t\tcoinOutAmount: new BigNumber(sponsorOptions?.usdcFeeAmountPerPeriod)\n\t\t\t\t?.times(sponsorOptions?.numOfPeriods)\n\t\t\t\t.toString(),\n\t\t\tslippage: sponsorOptions?.slippage,\n\t\t}));\n\n\tconst { coinOut } = await swapCoins(\n\t\t{\n\t\t\twalletAddress,\n\t\t\tcoinInType: sponsorOptions?.coinInType,\n\t\t\tcoinInAmount: coinInAmount.toString(),\n\t\t\tcoinOutType: USDC_COIN_TYPE,\n\t\t\tslippage: sponsorOptions?.slippage,\n\t\t\ttx,\n\t\t},\n\t\t{ suiClient, defiRouterUrl },\n\t);\n\n\tconst [sponsorFeeCoin] = tx.splitCoins(coinOut, [\n\t\ttx.pure.u64(\n\t\t\tnew BigNumber(sponsorOptions?.usdcFeeAmountPerPeriod)\n\t\t\t\t?.times(sponsorOptions?.numOfPeriods)\n\t\t\t\t.toString(),\n\t\t),\n\t]);\n\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_LISTINGS_PACKAGE}::tradeport_listings::add_sponsored_listing`,\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\ttx.object.clock(),\n\t\t\ttx.pure.id(nftTokenId),\n\t\t\ttx.pure.u64(sponsorOptions?.numOfPeriods),\n\t\t\ttx.object(sponsorFeeCoin),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\ttx.transferObjects([coinOut], walletAddress);\n};\n","import { normalizeSuiAddress } from '@mysten/sui/utils';\n\nexport const isExpiredListing = (\n\tlisting: { nonce?: string; seller?: string },\n\twalletAddress: string,\n) =>\n\tlisting.nonce &&\n\tlisting.seller &&\n\tnormalizeSuiAddress(listing.seller) === normalizeSuiAddress(walletAddress);\n","import { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchKiosksByOwner } from '../../graphql/queries/fetchKiosksByOwner';\nimport {\n\tfetchBulkNftsByKioskId,\n\tfetchNftsByKioskId,\n} from '../../graphql/queries/fetchNftsByKioskId';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getNativeKioskTransferPoliciesByNftType } from '../../helpers/kiosk/getNativeKioskTransferPoliciesByNftType';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { addClaimTransferredNftWithPurchaseCapTx } from '../claimNfts/addClaimNftsTxs';\nimport { addTradeportKioskTransferTx } from '../transferNfts/addTransferNftTx';\n\nexport type MigrateNftsFromUnsharedToSharedKiosks = {\n\twalletAddress: string;\n\tmax?: number;\n};\n\nexport async function migrateNftsFromUnsharedToSharedKiosks(\n\t{ walletAddress, max = 50 }: MigrateNftsFromUnsharedToSharedKiosks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst tx = new Transaction();\n\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchKiosksByOwner,\n\t\tvariables: { ownerAddress: addLeadingZerosAfter0x(walletAddress) },\n\t});\n\n\tconst unsharedOBKiosks = res?.kiosks\n\t\t?.filter((k: any) => !k.is_shared && k.is_origin_byte)\n\t\t?.map((k: any) => k.id);\n\n\tlet currentMigrationCount = 0;\n\n\tconst sharedOBKiosk = res?.kiosks?.filter((k: any) => k.is_shared && k.is_origin_byte)?.[0]?.id;\n\n\tfor (const unsharedOBKiosk of unsharedOBKiosks) {\n\t\tif (currentMigrationCount >= max) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst res = await gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchNftsByKioskId,\n\t\t\tvariables: { jsonFilter: { kiosk_id: unsharedOBKiosk } },\n\t\t});\n\n\t\tconst nfts = res?.nfts;\n\n\t\tif (nfts.length > 0) {\n\t\t\tcurrentMigrationCount++;\n\t\t}\n\n\t\tfor (const nft of nfts) {\n\t\t\tif (nft?.chain_state?.claimable_trade_id) {\n\t\t\t\t// origin byte trade hold, so they are stuck and cannot be migrated\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst nftType = getNftType({\n\t\t\t\tcollectionId: nft?.collection?.id,\n\t\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\t\tnft,\n\t\t\t});\n\n\t\t\tconst nftTokenId = nft?.token_id;\n\n\t\t\tif (sharedOBKiosk) {\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget:\n\t\t\t\t\t\t'0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::p2p_transfer',\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(unsharedOBKiosk),\n\t\t\t\t\t\ttx.object(sharedOBKiosk),\n\t\t\t\t\t\ttx.pure.address(nftTokenId),\n\t\t\t\t\t],\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget:\n\t\t\t\t\t\t'0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::p2p_transfer_and_create_target_kiosk',\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(unsharedOBKiosk),\n\t\t\t\t\t\ttx.pure.address(addLeadingZerosAfter0x(walletAddress)),\n\t\t\t\t\t\ttx.pure.address(nftTokenId),\n\t\t\t\t\t],\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tconst unsharedNativeKiosks = res?.kiosks\n\t\t?.filter((k: any) => !k.is_shared && !k.is_origin_byte)\n\t\t?.map((k: any) => k.id);\n\n\tconst allNfts = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchBulkNftsByKioskId,\n\t\tvariables: {\n\t\t\twhere: {\n\t\t\t\t_or: unsharedNativeKiosks.map((nk: any) => ({\n\t\t\t\t\tchain_state: { _contains: { kiosk_id: nk } },\n\t\t\t\t})),\n\t\t\t},\n\t\t},\n\t});\n\n\tconst formatted: any = {};\n\tallNfts.nfts.forEach((e: any) => {\n\t\tif (formatted[e.chain_state.kiosk_id]) {\n\t\t\tformatted[e.chain_state.kiosk_id]?.push(e);\n\t\t} else {\n\t\t\tformatted[e.chain_state.kiosk_id] = [e];\n\t\t}\n\t});\n\n\tconst allNftTypes = allNfts.nfts.reduce((acc: any[], curr: any) => {\n\t\tconst type = getNftType({\n\t\t\tcollectionId: curr?.collection?.id,\n\t\t\tcollectionChainState: curr?.collection?.chain_state,\n\t\t\tnft: curr,\n\t\t});\n\t\tif (!acc.includes(type)) acc.push(type);\n\t\treturn acc;\n\t}, []);\n\n\tconst transferPolicies = await Promise.all(\n\t\tallNftTypes.map(async (type: string) => getNativeKioskTransferPoliciesByNftType(type)),\n\t);\n\n\tconst mappedTrasferPolicies: Record<string, any> = {};\n\ttransferPolicies.forEach((tp: any) => {\n\t\tmappedTrasferPolicies[tp?.[0]?.type] = tp;\n\t});\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: undefined,\n\t};\n\n\tfor (const unsharedNativeKiosk of unsharedNativeKiosks) {\n\t\tif (currentMigrationCount >= max) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst nfts = formatted[unsharedNativeKiosk] ?? [];\n\t\tif (nfts?.length > 0) {\n\t\t\tcurrentMigrationCount++;\n\t\t}\n\n\t\tfor (const nft of nfts) {\n\t\t\tlet existingKioskTx;\n\t\t\tif (nft?.claimable_reason === 'offer-transfer') {\n\t\t\t\t// native kiosk kiosk_transfers transfer hold. Transfer needs to be cancelled first in order to be migrated\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst nftType = getNftType({\n\t\t\t\tcollectionId: nft?.collection?.id,\n\t\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\t\tnft,\n\t\t\t});\n\t\t\tconst nftTokenId = nft?.token_id;\n\t\t\tawait kioskTxWrapper({\n\t\t\t\ttx,\n\t\t\t\tkioskClient: context?.kioskClient,\n\t\t\t\tkioskOwner: walletAddress,\n\t\t\t\tkiosk: unsharedNativeKiosk,\n\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\tsharedKioskState,\n\t\t\t\tshouldUseSharedKioskTx: false,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tawait addTradeportKioskTransferTx({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: context?.kioskClient,\n\t\t\t\t\t\tsuiClient: context?.suiClient,\n\t\t\t\t\t\tsenderKiosk: unsharedNativeKiosk,\n\t\t\t\t\t\tsenderAddress: walletAddress,\n\t\t\t\t\t\trecipientAddress: walletAddress,\n\t\t\t\t\t\tnftTokenId,\n\t\t\t\t\t\tnftType,\n\t\t\t\t\t\ttransferPolicies: mappedTrasferPolicies[nftType],\n\t\t\t\t\t\ttransferPolicy: mappedTrasferPolicies[nftType]?.[0],\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\t\t\tawait kioskTxWrapper({\n\t\t\t\ttx,\n\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\tkioskOwner: walletAddress,\n\t\t\t\tkiosk: unsharedNativeKiosk,\n\t\t\t\tkioskStrategy: 'exclude',\n\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\tsharedKioskState,\n\t\t\t\tshouldUseSharedKioskTx: false,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tawait addClaimTransferredNftWithPurchaseCapTx({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tsharedObjects: [],\n\t\t\t\t\t\tclaimer: walletAddress,\n\t\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\t\t\tnftTokenId,\n\t\t\t\t\t\tnftType,\n\t\t\t\t\t\tsellerKiosk: unsharedNativeKiosk,\n\t\t\t\t\t\tseller: nft?.owner,\n\t\t\t\t\t\ttransferPolicies: mappedTrasferPolicies[nftType],\n\t\t\t\t\t\tpreloadedTransferPolicyId: mappedTrasferPolicies[nftType]?.[0]?.id,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\treturn Transaction.from(tx);\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchNftsByKioskId = gql`\n\tquery fetchNftsByKioskId($jsonFilter: jsonb) {\n\t\tnfts(where: { chain_state: { _contains: $jsonFilter } }) {\n\t\t\tid\n\t\t\tname\n\t\t\ttoken_id\n\t\t\tproperties\n\t\t\tchain_state\n\t\t\tcollection_id\n\t\t\tclaimable_reason\n\t\t\towner\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const fetchBulkNftsByKioskId = gql`\n\tquery fetchNftsByKioskId($where: nfts_bool_exp) {\n\t\tnfts(where: $where) {\n\t\t\tid\n\t\t\tname\n\t\t\ttoken_id\n\t\t\tproperties\n\t\t\tchain_state\n\t\t\tcollection_id\n\t\t\tclaimable_reason\n\t\t\towner\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { gql } from 'graphql-request';\n\nexport const fetchTransferPoliciesByType = gql`\n\tquery fetchTransferPoliciesByType($type: String!) {\n\t\ttransfer_policies_by_type(type: $type) {\n\t\t\tid\n\t\t\tis_origin_byte\n\t\t\trules\n\t\t\ttype\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchTransferPoliciesByType } from '../../graphql/queries/fetchTransferPoliciesByType';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { getNativeKioskTransferPolicies } from './getNativeKioskTransferPolicies';\n\nexport const getNativeKioskTransferPoliciesByNftType = async (nftType: string) => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchTransferPoliciesByType,\n\t\tvariables: { type: normalizedNftType(nftType) },\n\t});\n\n\treturn getNativeKioskTransferPolicies(res?.transfer_policies_by_type);\n};\n\nexport const knownTransferPolicyRules = [\n\t'royalty_rule',\n\t'kiosk_lock_rule',\n\t'personal_kiosk_rule',\n\t'floor_price_rule',\n];\n","import { type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport {\n\tMYSTEN_TRANSFER_POLICY_RULES_PACKAGE_ID,\n\tMYSTEN_TRANSFER_POLICY_RULES_PACKAGE_ID_V2,\n\tTRADEPORT_KIOSK_TRANSFERS_STORE,\n} from '../../constants';\nimport { destroyZeroCoin } from '../../helpers/destroyZeroCoin';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getTransferPolicyRuleNamesFromSuiObject } from '../../helpers/getTransferPolicyRuleNamesFromSuiObject';\nimport { assertNftInSharedKiosk } from '../../helpers/kiosk/assertNftInSharedKiosk';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport { getOBKiosk } from '../../helpers/originByte/getOBKiosk';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { type TransferNftTx } from './transferNfts';\n\ntype CollectionChainState = {\n\ttransfer_policies: TransferPolicy[];\n};\ntype TransferPolicy = {\n\tid: string;\n\trules: Array<{ type: string; min_amount?: string }>;\n\tis_origin_byte: boolean;\n\tis_disabled: boolean;\n};\n\nexport async function addOriginByteTransferNftTx({\n\ttx,\n\tnftTokenId,\n\tnftType,\n\trecipientAddress,\n\tsenderKiosk,\n\tsenderAddress,\n\tsharedKioskState,\n}: TransferNftTx) {\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: senderKiosk,\n\t\twalletAddress: senderAddress,\n\t\tsharedKioskState,\n\t});\n\n\tconst recipientOBKiosk = await getOBKiosk({ wallet: recipientAddress, sharedKioskState });\n\n\tif (recipientOBKiosk) {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::p2p_transfer',\n\t\t\targuments: [tx.object(senderKiosk), tx.object(recipientOBKiosk), tx.pure.address(nftTokenId)],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t} else {\n\t\ttx.moveCall({\n\t\t\ttarget:\n\t\t\t\t'0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::p2p_transfer_and_create_target_kiosk',\n\t\t\targuments: [\n\t\t\t\ttx.object(senderKiosk),\n\t\t\t\ttx.pure.address(addLeadingZerosAfter0x(recipientAddress)),\n\t\t\t\ttx.pure.address(nftTokenId),\n\t\t\t],\n\t\t\ttypeArguments: [nftType],\n\t\t});\n\t}\n}\n\nexport async function addTradeportKioskTransferTx({\n\ttx,\n\tkioskTx,\n\tnftTokenId,\n\tnftType,\n\trecipientAddress,\n\ttransferPolicy,\n\ttransferPolicies,\n}: TransferNftTx) {\n\tconst existingTransferPolicy =\n\t\ttransferPolicy ?? getNativeKioskTransferPolicies(transferPolicies)?.at(0);\n\tconst hasFloorPriceRule = existingTransferPolicy?.rules?.some(\n\t\t(rule: any) => rule.type === 'floor_price_rule',\n\t);\n\tif (hasFloorPriceRule) {\n\t\tthrow new Error('Cannot transfer NFT with a minimum floor price rule');\n\t}\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x49642273ca7db3d942f9fd810c93467974c40e73ea7f03e8e7a632f1222aca73::kiosk_transfers::transfer_with_purchase_capability',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_STORE),\n\t\t\ttx.object(kioskTx.kiosk.value ?? kioskTx.kiosk),\n\t\t\ttx.object(kioskTx.kioskCap.value ?? kioskTx.kioskCap),\n\t\t\ttx.pure.address(nftTokenId),\n\t\t\ttx.pure.address(addLeadingZerosAfter0x(recipientAddress)),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addTradeportKioskDirectTransferTx(\n\ttxData: {\n\t\ttx: Transaction;\n\t\trecipientAddress: string;\n\t\tkioskClient: KioskClient;\n\t\tsenderAddress: string;\n\t\tsharedKioskState?: SharedKioskState;\n\t},\n\tnfts: any[],\n\tsuiClient: SuiClient,\n) {\n\tconst { tx, recipientAddress, kioskClient, sharedKioskState, senderAddress } = txData;\n\tif (nfts.length === 0) {\n\t\treturn;\n\t}\n\n\tconst transferPolicies = new Map<string, TransferPolicy>(\n\t\tawait Promise.all(\n\t\t\tnfts.map(\n\t\t\t\tasync (nft): Promise<[string, TransferPolicy]> => [\n\t\t\t\t\tnft.id as string,\n\t\t\t\t\tawait getTransferPolicyForDirectTransfer(suiClient, nft.collection.chain_state),\n\t\t\t\t],\n\t\t\t),\n\t\t),\n\t);\n\tconst royaltyAmounts = [...transferPolicies.values()].map((transferPolicy) =>\n\t\tBigInt(transferPolicy?.rules.find((rule) => rule.type === 'royalty_rule')?.min_amount ?? 0n),\n\t);\n\n\tconst totalRoyaltyAmount = royaltyAmounts.reduce((sum: bigint, amount) => sum + amount, 0n);\n\tconst [royaltyCoin] = tx.splitCoins(tx.gas, [tx.pure.u64(totalRoyaltyAmount)]);\n\tfor (const nft of nfts) {\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: nft?.collection?.id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t});\n\n\t\tawait kioskTxWrapper({\n\t\t\ttx,\n\t\t\tkioskClient,\n\t\t\tkioskOwner: senderAddress,\n\t\t\tkiosk: nft?.chain_state?.kiosk_id,\n\t\t\tsharedKioskState,\n\t\t\tshouldUseSharedKioskTx: false,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget:\n\t\t\t\t\t\t'0x4acc0efedd243eb61ab8f8a3e9c24b09a1838c43d16029e8c8985004dfd67239::kiosk_transfers::direct_transfer_to_receiver',\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(kioskTx.getKiosk() as any),\n\t\t\t\t\t\ttx.object(kioskTx.getKioskCap() as any),\n\t\t\t\t\t\ttx.pure.address(recipientAddress),\n\t\t\t\t\t\ttx.pure.id(nft.token_id),\n\t\t\t\t\t\ttx.object(transferPolicies.get(nft.id).id),\n\t\t\t\t\t\troyaltyCoin,\n\t\t\t\t\t],\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\tdestroyZeroCoin({ tx, coin: royaltyCoin });\n}\n\nexport async function canBeTransferedDirectly(\n\tsuiClient: SuiClient,\n\tcollectionChainState?: CollectionChainState,\n) {\n\treturn (\n\t\t(await getTransferPolicyForDirectTransfer(suiClient, collectionChainState, true)) !== undefined\n\t);\n}\n\nexport async function getTransferPolicyForDirectTransfer(\n\tsuiClient: SuiClient,\n\tcollectionChainState?: CollectionChainState,\n\tvalidateRules = false,\n): Promise<TransferPolicy | undefined> {\n\tconst candidatePolicy = collectionChainState?.transfer_policies?.find(\n\t\t(policy) =>\n\t\t\t!policy.is_origin_byte &&\n\t\t\t!policy.is_disabled &&\n\t\t\tpolicy.rules.length > 0 &&\n\t\t\tpolicy.rules?.filter(\n\t\t\t\t(rule) =>\n\t\t\t\t\trule.type !== 'kiosk_lock_rule' &&\n\t\t\t\t\trule.type !== 'royalty_rule' &&\n\t\t\t\t\trule.type !== 'personal_kiosk_rule',\n\t\t\t).length === 0,\n\t);\n\n\tif (validateRules && candidatePolicy) {\n\t\tconst ruleNames = await getTransferPolicyRuleNamesFromSuiObject({\n\t\t\tsuiClient,\n\t\t\ttransferPolicyId: candidatePolicy.id,\n\t\t});\n\t\tif (\n\t\t\t!ruleNames.every(\n\t\t\t\t(name) =>\n\t\t\t\t\tname.startsWith(MYSTEN_TRANSFER_POLICY_RULES_PACKAGE_ID) ||\n\t\t\t\t\tname.startsWith(MYSTEN_TRANSFER_POLICY_RULES_PACKAGE_ID_V2),\n\t\t\t)\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\treturn candidatePolicy;\n}\n","import { type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport { ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK } from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchCollectionsByIdWithOneNft } from '../../graphql/queries/fetchCollectionsById';\nimport { deserializeOrCreateTxBlock } from '../../helpers/deserializeOrCreateTxBlock';\nimport { extractSwapResultCoinFromTxBlock } from '../../helpers/extractSwapResultCoin';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { getOrCreateOBKiosk } from '../../helpers/originByte/getOrCreateOBKiosk';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { shareOriginByteKiosk } from '../../helpers/originByte/shareOriginByteKiosk';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { addTradePortPlaceNftBidTxHandler } from '../placeNftBids/addPlaceNftBidTxs';\nimport { addOriginByteCollectionBidTx } from './addPlaceCollectionBidTxs';\n\nexport type PlaceCollectionBidTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tbidder: string;\n\tcollectionId: string;\n\tnftType: string;\n\tbidAmount: number;\n\tbidderKiosk?: string;\n\troyaltyRulePackageId?: string;\n\troyaltyRuleModule?: string;\n\tmultiBidId?: string;\n\tmultiBidChainId?: any;\n\texpireAt?: Date;\n\tcoinToSplit?: any;\n};\n\nexport type PlaceCollectionBid = {\n\tcollectionId: string;\n\tbidAmountInMist: number;\n\tnumOfBids: number;\n\twalletAddress: string;\n\tmultiBidId?: string;\n\tmultiBidChainId?: any;\n\texpireAt?: Date;\n\ttx?: Transaction | string;\n};\n\nexport type PlaceCollectionBids = {\n\tcollections: Array<{\n\t\tid: string;\n\t\tbidAmountInMist: number;\n\t\tnumOfBids: number;\n\t\texpireAt?: Date;\n\t}>;\n\twalletAddress: string;\n\tmultiBidId?: string;\n\tmultiBidChainId?: any;\n\ttx?: Transaction | string;\n};\n\nexport const placeCollectionBids = async (\n\t{ collections, walletAddress, multiBidId, multiBidChainId, tx: existingTx }: PlaceCollectionBids,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchCollectionsByIdWithOneNft,\n\t\tvariables: { collectionIds: collections.map((collection) => collection.id) },\n\t});\n\n\tif (res?.collections?.length === 0) {\n\t\tthrow new Error('No collection found');\n\t}\n\n\tconst collectionsForTracking = [];\n\tconst tx = deserializeOrCreateTxBlock({ existingTx });\n\tconst swapResultCoin = extractSwapResultCoinFromTxBlock(tx);\n\n\tfor (const collection of res.collections) {\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: collection?.id,\n\t\t\tcollectionChainState: collection?.chain_state,\n\t\t\tnft: collection?.nfts?.[0],\n\t\t});\n\n\t\tconst transferPolicies = collection?.chain_state?.transfer_policies;\n\n\t\tconst txData: PlaceCollectionBidTx = {\n\t\t\ttx,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\ttransferPolicies,\n\t\t\tbidder: walletAddress,\n\t\t\tcollectionId: collection?.id,\n\t\t\tnftType,\n\t\t\tbidAmount: collections?.find((c) => c.id === collection?.id)?.bidAmountInMist,\n\t\t\tmultiBidId,\n\t\t\tmultiBidChainId,\n\t\t\texpireAt: collections?.find((c) => c.id === collection?.id)?.expireAt,\n\t\t\tcoinToSplit: swapResultCoin,\n\t\t};\n\n\t\tconst numOfBids = collections?.find((c) => c.id === collection?.id)?.numOfBids;\n\n\t\tif (\n\t\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t\t) {\n\t\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\n\t\t\tconst { kiosk: bidderKiosk, isNewKiosk: isNewBidderKiosk } = await getOrCreateOBKiosk({\n\t\t\t\ttx,\n\t\t\t\taddress: txData.bidder,\n\t\t\t});\n\n\t\t\tfor (let i = 0; i < numOfBids; i++) {\n\t\t\t\tawait addOriginByteCollectionBidTx({ ...txData, bidderKiosk, sharedObjects });\n\t\t\t}\n\n\t\t\tif (isNewBidderKiosk) {\n\t\t\t\tshareOriginByteKiosk({ tx, kiosk: bidderKiosk });\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let i = 0; i < numOfBids; i++) {\n\t\t\t\tawait addTradePortPlaceNftBidTxHandler({ ...txData, bidAmount: BigInt(txData.bidAmount) });\n\t\t\t}\n\t\t}\n\n\t\tcollectionsForTracking.push({\n\t\t\tnftType,\n\t\t\tcollectionId: collection?.id,\n\t\t\tbidAmount: collections?.find((c) => c.id === collection?.id)?.bidAmountInMist,\n\t\t\tbidder: walletAddress,\n\t\t});\n\t}\n\n\tif (swapResultCoin) {\n\t\ttx.transferObjects([swapResultCoin], walletAddress);\n\t}\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && collectionsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'PLACE_COLLECTION_BIDS',\n\t// \t\titems: collectionsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchCollectionsById = gql`\n\tquery fetchCollectionsById($collectionIds: [uuid!]) {\n\t\tcollections(where: { id: { _in: $collectionIds } }) {\n\t\t\tid\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const fetchCollectionsByIdWithOneNft = gql`\n\tquery fetchCollectionsByIdWithOneNft($collectionIds: [uuid!]) {\n\t\tcollections(where: { id: { _in: $collectionIds } }) {\n\t\t\tid\n\t\t\tchain_state\n\t\t\tcontract {\n\t\t\t\tproperties\n\t\t\t}\n\t\t\tnfts(limit: 1) {\n\t\t\t\tid\n\t\t\t\tproperties\n\t\t\t\tcontract {\n\t\t\t\t\tproperties\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const fetchCollectionsBySlug = gql`\n\tquery fetchCollectionsBySlug($slug: String!) {\n\t\tcollections(where: { slug: { _eq: $slug } }) {\n\t\t\tid\n\t\t}\n\t}\n`;\n","import { type SuiClient } from '@mysten/sui/client';\nimport { fromHex, normalizeSuiObjectId } from '@mysten/sui/utils';\nimport {\n\tDYNAMIC_COLLECTION_IDS,\n\tORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK,\n\tTRADEPORT_MULTI_BID_PACKAGE,\n\tTRADEPORT_MULTI_BID_STORE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport {\n\tfetchMultibidChainIdAndExpiredSingleBidsById,\n\tfetchMultibidChainIdById,\n} from '../../graphql/queries/fetchMultibidById';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { type PlaceNftBidTx } from './placeNftBids';\nimport { addCancelSingleBidForMultibidChainId } from '../removeNftBids/addRemoveNftBidTxs';\nimport { type Transaction } from '@mysten/sui/transactions';\n\nexport async function addTradePortPlaceNftBidTxHandler(txData: PlaceNftBidTx) {\n\tif (\n\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t) {\n\t\tthrow new Error('OriginByte bidding not supported currently');\n\t}\n\n\tconst {\n\t\ttx,\n\t\tnftType,\n\t\tmultiBidId,\n\t\tmultiBidChainId: existingMultiBidChainId,\n\t\tnftTokenId,\n\t\tcollectionId,\n\t\tbcsHex,\n\t\texpireAt,\n\t\tcoinToSplit,\n\t} = txData;\n\tlet bcs: Uint8Array | undefined;\n\tif (nftTokenId && isDynamicCollection(collectionId)) {\n\t\tif (!bcsHex) {\n\t\t\tthrow new Error(`No BCS found for token ${nftTokenId}`);\n\t\t}\n\n\t\tbcs = fromHex(bcsHex);\n\t}\n\n\tlet multiBidChainId;\n\tlet expiredBids;\n\tif (existingMultiBidChainId) {\n\t\tmultiBidChainId = existingMultiBidChainId;\n\t} else {\n\t\tconst {\n\t\t\tchain_id: chainId,\n\t\t\tcancelled_at,\n\t\t\tbids,\n\t\t} = multiBidId\n\t\t\t? ((\n\t\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\t\tchain: 'sui',\n\t\t\t\t\t\tquery: fetchMultibidChainIdAndExpiredSingleBidsById,\n\t\t\t\t\t\tvariables: { multiBidId, expiredBidLimit: 300 },\n\t\t\t\t\t})\n\t\t\t\t)?.multi_bids?.[0] ?? {})\n\t\t\t: {};\n\n\t\tif (chainId && cancelled_at) {\n\t\t\tthrow new Error(`MultiBid ${chainId} already cancelled`);\n\t\t}\n\n\t\tmultiBidChainId = chainId;\n\t\texpiredBids = bids;\n\t}\n\n\tconst transferPolicies = getNativeKioskTransferPolicies(txData?.transferPolicies);\n\tconst transferPolicy = transferPolicies?.find(\n\t\t(policy: { rules: any[] }) => policy?.rules?.length > 0,\n\t);\n\tconst price = BigInt(txData?.bidAmount ?? 0n);\n\tconst fee = (BigInt(txData?.bidAmount ?? 0) * (await getBidFeeBps(txData?.suiClient))) / 10_000n;\n\tlet royalty = 0n;\n\tconst royaltyRule = (transferPolicy?.rules ?? []).find((r: { type: string }) =>\n\t\tr.type.endsWith('royalty_rule'),\n\t);\n\n\tif (royaltyRule) {\n\t\tconst { amount_bp, min_amount } = royaltyRule;\n\t\troyalty = BigInt((price * BigInt(amount_bp)) / 10_000n);\n\t\tif (royalty < BigInt(min_amount ?? 0n)) {\n\t\t\troyalty = BigInt(min_amount ?? 0n);\n\t\t}\n\t}\n\n\tconst txWithState = tx as Transaction & { hasCancelBidTransactions: Map<string, boolean> };\n\ttxWithState.hasCancelBidTransactions ??= new Map<string, boolean>();\n\n\tif (multiBidChainId && !txWithState.hasCancelBidTransactions.get(multiBidChainId)) {\n\t\t// Clean up expired bids in existing multibid\n\t\tfor (const { nonce } of expiredBids ?? []) {\n\t\t\taddCancelSingleBidForMultibidChainId(tx, nonce, multiBidChainId);\n\t\t}\n\n\t\ttxWithState.hasCancelBidTransactions.set(multiBidChainId, true);\n\t}\n\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [\n\t\tmultiBidChainId ? 0n : price + fee + royalty,\n\t]);\n\ttx.moveCall({\n\t\ttarget: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::create_bid_with${transferPolicy ? '' : 'out'}_transfer_policy`,\n\t\ttypeArguments: [nftType],\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_MULTI_BID_STORE),\n\t\t\ttx.pure.u64(nftTokenId ? 1 : 0),\n\t\t\tmultiBidChainId\n\t\t\t\t? typeof multiBidChainId === 'string'\n\t\t\t\t\t? tx.pure.option('id', normalizeSuiObjectId(multiBidChainId))\n\t\t\t\t\t: tx.moveCall({\n\t\t\t\t\t\t\ttarget: '0x1::option::some',\n\t\t\t\t\t\t\ttypeArguments: ['0x2::object::ID'],\n\t\t\t\t\t\t\targuments: [multiBidChainId],\n\t\t\t\t\t\t})\n\t\t\t\t: undefined,\n\t\t\ttx.pure.option('id', nftTokenId ? normalizeSuiObjectId(nftTokenId) : undefined),\n\t\t\ttx.pure.option('vector<u8>', bcs ? [...bcs] : undefined),\n\t\t\ttx.pure.option('u64', expireAt?.getTime()),\n\t\t\ttx.pure.u64(price),\n\t\t\t...(transferPolicy ? [tx.object(transferPolicy.id)] : []),\n\t\t\ttx.object(coin),\n\t\t],\n\t});\n}\n\nlet bidFeeBps: bigint | undefined;\n\nexport async function getBidFeeBps(suiClient: SuiClient) {\n\tif (bidFeeBps !== undefined) {\n\t\treturn bidFeeBps;\n\t}\n\n\tconst res = await suiClient.getObject({\n\t\tid: TRADEPORT_MULTI_BID_STORE,\n\t\toptions: { showContent: true },\n\t});\n\tif (res.error) {\n\t\tthrow new Error(`Error on getting SUI object ${TRADEPORT_MULTI_BID_STORE}: ${res.error.code}`);\n\t}\n\n\tbidFeeBps = BigInt(\n\t\t(res?.data?.content as unknown as { fields: { fee_bps: string } })?.fields?.fee_bps ?? 0,\n\t);\n\n\treturn bidFeeBps;\n}\n\nexport function isDynamicCollection(collectionId: string): boolean {\n\treturn DYNAMIC_COLLECTION_IDS.includes(collectionId);\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchCollectionFloorListings = gql`\n\tquery fetchCollectionFloorListings($collectionId: uuid!) {\n\t\tlistings(\n\t\t\twhere: { collection_id: { _eq: $collectionId }, listed: { _eq: true }, nft: {} }\n\t\t\torder_by: { price: asc_nulls_last, market_name: desc_nulls_last }\n\t\t\tlimit: 3\n\t\t) {\n\t\t\tid\n\t\t\tprice\n\t\t\tmarket_name\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../graphql/gqlChainRequest';\nimport { fetchCollectionFloorListings } from '../graphql/queries/fetchCollectionFloorListings';\n\nexport const getCollectionFloorPrice = async (collectionId: string) => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchCollectionFloorListings,\n\t\tvariables: { collectionId },\n\t});\n\n\treturn res?.listings?.[0]?.price;\n};\n","import {\n\tTRADEPORT_BENEFICIARY_ADDRESS,\n\tTRADEPORT_BIDDING_STORE,\n\tTRADEPORT_KIOSK_BIDDING_STORE,\n} from '../../constants';\nimport { destroyZeroCoin } from '../../helpers/destroyZeroCoin';\nimport { getCollectionFloorPrice } from '../../helpers/getCollectionFloorPrice';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getRoyaltyRuleModule } from '../../helpers/getRoyaltyRuleModule';\nimport { getTradeportBiddingContractBidAmount } from '../../helpers/getTradeportBiddingContractBidAmount';\nimport { hasRoyaltyRule } from '../../helpers/hasRoyaltyRule';\nimport { getKioskPlaceBidCoin } from '../../helpers/kiosk/getKioskPlaceBidCoin';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { getRulePackageId } from '../../helpers/kiosk/getRulePackageId';\nimport { splitCoins } from '../../helpers/splitCoins';\nimport { type PlaceCollectionBidTx } from './placeCollectionBids';\n\nexport function addTradePortCollectionBidTx({\n\ttx,\n\tcollectionId,\n\tnftType,\n\tbidAmount,\n}: PlaceCollectionBidTx) {\n\tconst amountToBid = getTradeportBiddingContractBidAmount({ bidAmount, collectionId });\n\tconst marketFeePrice = getMarketFeePrice({ price: bidAmount, collectionId });\n\n\tconst [coin] = splitCoins({ tx, amounts: [tx.pure.u64(amountToBid + marketFeePrice)] });\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::collection_bid',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_BIDDING_STORE),\n\t\t\ttx.pure.u64(amountToBid),\n\t\t\ttx.object(coin),\n\t\t\ttx.pure.u64(marketFeePrice),\n\t\t\ttx.pure.address(TRADEPORT_BENEFICIARY_ADDRESS),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tdestroyZeroCoin({ tx, coin });\n}\n\nexport async function addTradePortKioskCollectionBidTx({\n\ttx,\n\tsuiClient,\n\tbidder,\n\tcollectionId,\n\tnftType,\n\tbidAmount,\n\troyaltyRulePackageId,\n\troyaltyRuleModule,\n\ttransferPolicies,\n}: PlaceCollectionBidTx) {\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst marketFeePrice = getMarketFeePrice({\n\t\tprice: bidAmount,\n\t\tcollectionId,\n\t});\n\n\tconst coin = await getKioskPlaceBidCoin({\n\t\ttx,\n\t\tsuiClient,\n\t\tbidder,\n\t\tnftType,\n\t\tbidAmount,\n\t\tmarketFeePrice,\n\t\troyaltyRulePackageId,\n\t\troyaltyRuleModule,\n\t\ttransferPolicyId,\n\t});\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::collection_bid',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_KIOSK_BIDDING_STORE),\n\t\t\ttx.pure.u64(bidAmount),\n\t\t\ttx.object(coin),\n\t\t\ttx.pure.u64(marketFeePrice),\n\t\t\ttx.pure.address(TRADEPORT_BENEFICIARY_ADDRESS),\n\t\t],\n\t\ttypeArguments: [nftType],\n\t});\n\n\tdestroyZeroCoin({ tx, coin });\n}\n\nexport async function addOriginByteCollectionBidTx({\n\ttx,\n\tcollectionId,\n\tnftType,\n\tbidAmount,\n\tsharedObjects,\n\tbidderKiosk,\n\tcoinToSplit,\n}: PlaceCollectionBidTx) {\n\tconst collectionFloorPrice = await getCollectionFloorPrice(collectionId);\n\tif (\n\t\tcollectionFloorPrice &&\n\t\tcollectionFloorPrice > 0 &&\n\t\tNumber(bidAmount) > Number(collectionFloorPrice)\n\t) {\n\t\tthrow new Error('Bid amount must be less than the collection floor price');\n\t}\n\n\tconst { orderbook } = sharedObjects;\n\n\tconst marketFeePrice = getMarketFeePrice({ price: bidAmount, collectionId });\n\n\tconst [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [\n\t\ttx.pure.u64(bidAmount + marketFeePrice),\n\t]);\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::create_bid_with_commission',\n\t\targuments: [\n\t\t\ttx.object(orderbook),\n\t\t\ttx.object(bidderKiosk),\n\t\t\ttx.pure.u64(bidAmount),\n\t\t\ttx.pure.address(TRADEPORT_BENEFICIARY_ADDRESS),\n\t\t\ttx.pure.u64(marketFeePrice),\n\t\t\ttx.object(coin),\n\t\t],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\tdestroyZeroCoin({ tx, coin });\n}\n\nexport async function addTradePortPlaceCollectionBidTxHandler(txData: PlaceCollectionBidTx) {\n\tif (hasRoyaltyRule(txData?.transferPolicies)) {\n\t\tconst royaltyRuleModule = getRoyaltyRuleModule(txData?.nftType);\n\t\tconst royaltyRulePackageId = await getRulePackageId({\n\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\tsuiClient: txData?.suiClient,\n\t\t\tnftType: txData.nftType,\n\t\t\truleType: getRoyaltyRuleModule(txData?.collectionId),\n\t\t\tkioskClient: txData?.kioskClient,\n\t\t});\n\t\tawait addTradePortKioskCollectionBidTx({ ...txData, royaltyRulePackageId, royaltyRuleModule });\n\t\treturn;\n\t}\n\n\taddTradePortCollectionBidTx(txData);\n}\n","import { type SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftsById } from '../../graphql/queries/fetchNftsById';\nimport { deserializeOrCreateTxBlock } from '../../helpers/deserializeOrCreateTxBlock';\nimport { extractSwapResultCoinFromTxBlock } from '../../helpers/extractSwapResultCoin';\nimport { getNftType } from '../../helpers/getNftType';\nimport { addTradePortPlaceNftBidTxHandler } from './addPlaceNftBidTxs';\n\nexport type PlaceNftBidTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tbidder: string;\n\tcollectionId: string;\n\tnftTokenId?: string;\n\tnftType: string;\n\tbidAmount: bigint;\n\tmultiBidId?: string;\n\tmultiBidChainId?: any;\n\texpireAt?: Date;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tbcsHex?: string;\n\tcoinToSplit?: any;\n};\n\nexport type PlaceNftBids = {\n\tbids: Array<{\n\t\tnftId: string;\n\t\tbidAmountInMist: number;\n\t\texpireAt?: Date;\n\t}>;\n\twalletAddress: string;\n\tmultiBidId?: string;\n\tmultiBidChainId?: any;\n\ttx?: Transaction | string;\n};\n\nexport const placeNftBids = async (\n\t{ bids, walletAddress, multiBidId, multiBidChainId, tx: existingTx }: PlaceNftBids,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst tx = deserializeOrCreateTxBlock({ existingTx });\n\tconst swapResultCoin = extractSwapResultCoinFromTxBlock(tx);\n\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftsById,\n\t\tvariables: { nftIds: bids.map((bid) => bid.nftId) },\n\t});\n\n\tif (res?.nfts?.length === 0) {\n\t\tthrow new Error('No nfts found');\n\t}\n\n\tconst nftsForTracking = [];\n\tfor (const bid of bids) {\n\t\tconst nft = res.nfts?.find((nft: any) => nft.id === bid.nftId);\n\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: nft?.collection_id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t});\n\n\t\tconst transferPolicies = nft?.collection?.chain_state?.transfer_policies;\n\n\t\tconst txData: PlaceNftBidTx = {\n\t\t\ttx,\n\t\t\tsuiClient: context.suiClient,\n\t\t\ttransferPolicies,\n\t\t\tbidder: walletAddress,\n\t\t\tcollectionId: nft?.collection_id,\n\t\t\tnftTokenId: nft?.token_id,\n\t\t\tnftType,\n\t\t\tbidAmount: BigInt(bid?.bidAmountInMist ?? 0n),\n\t\t\tbcsHex: nft.chain_state?.bcs?.bcsHex,\n\t\t\tmultiBidId,\n\t\t\tmultiBidChainId,\n\t\t\texpireAt: bid?.expireAt,\n\t\t\tcoinToSplit: swapResultCoin,\n\t\t};\n\n\t\tawait addTradePortPlaceNftBidTxHandler(txData);\n\n\t\tnftsForTracking.push({\n\t\t\tnftType,\n\t\t\tcollectionId: nft?.collection_id,\n\t\t\tbidAmount: bid?.bidAmountInMist,\n\t\t\tbidder: walletAddress,\n\t\t});\n\t}\n\n\tif (swapResultCoin) {\n\t\ttx.transferObjects([swapResultCoin], walletAddress);\n\t}\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && nftsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'PLACE_NFT_BIDS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import type { SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchCollectionBidsById } from '../../graphql/queries/fetchCollectionBidById';\nimport { fetchCollectionsByIdWithOneNft } from '../../graphql/queries/fetchCollectionsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport {\n\taddBluemoveRemoveCollectionBidTxHandler,\n\taddClutchyRemoveCollectionBidTxHandler,\n\taddTradePortRemoveCollectionBidTxHandler,\n} from './addRemoveCollectionBidsTxs';\n\nexport type RemoveCollectionBidTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tsharedObjects?: any;\n\tbidNonce: string;\n\tbidder: string;\n\tnftType: string;\n\tnftTokenId: string;\n\tbidAmount: number;\n\tsellerKiosk: string;\n\tbidMarketName: string;\n\tmultiBidId?: string;\n};\n\nexport type RemoveCollectionBids = {\n\tbidIds: string[];\n\ttx?: Transaction | string;\n};\n\nexport const removeCollectionBids = async (\n\t{ bidIds, tx: existingTx }: RemoveCollectionBids,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchCollectionBidsById,\n\t\tvariables: { bidIds },\n\t});\n\n\tif (res?.bids?.length === 0) {\n\t\tthrow new Error('No bids found');\n\t}\n\n\tconst bidsForTracking = [];\n\tconst tx = existingTx ? Transaction.from(existingTx) : new Transaction();\n\n\tfor (const bid of res.bids) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(bid?.nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tconst collectionWithOneNftRes = await gqlChainRequest({\n\t\t\tchain: 'sui',\n\t\t\tquery: fetchCollectionsByIdWithOneNft,\n\t\t\tvariables: { collectionIds: [bid?.collection_id] },\n\t\t});\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: collectionWithOneNftRes?.collections?.[0]?.id,\n\t\t\tcollectionChainState: collectionWithOneNftRes?.collections?.[0]?.chain_state,\n\t\t\tnft: collectionWithOneNftRes?.collections?.[0]?.nfts?.[0],\n\t\t});\n\n\t\tconst txData: RemoveCollectionBidTx = {\n\t\t\ttx,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tbidNonce: bid?.nonce,\n\t\t\tbidder: bid?.bidder,\n\t\t\tnftType,\n\t\t\tnftTokenId: bid?.nft?.token_id,\n\t\t\tbidAmount: bid?.price,\n\t\t\tsellerKiosk: bid?.nft?.chain_state?.kiosk_id,\n\t\t\tbidMarketName: bid?.market_contract?.name,\n\t\t\tmultiBidId: bid?.multi_bid_id,\n\t\t};\n\n\t\tswitch (txData.bidMarketName) {\n\t\t\tcase 'tradeport':\n\t\t\t\tawait addTradePortRemoveCollectionBidTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'bluemove':\n\t\t\t\tawait addBluemoveRemoveCollectionBidTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'clutchy':\n\t\t\t\tawait addClutchyRemoveCollectionBidTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Marketplace not supported');\n\t\t}\n\n\t\tbidsForTracking.push({\n\t\t\tnftType,\n\t\t\tcollectionId: bid?.collection_id,\n\t\t\tbidAmount: bid?.price,\n\t\t\tbidMarketName: bid?.market_contract?.name,\n\t\t\tbidder: bid?.bidder,\n\t\t});\n\t}\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && bidsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'REMOVE_COLLECTION_BID',\n\t// \t\titems: bidsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import { normalizeSuiObjectId } from '@mysten/sui/utils';\nimport {\n\tBLUEMOVE_KIOSK_OFFER_COLLECTION_DATA_OBJECT,\n\tBLUEMOVE_OFFER_COLLECTION_DATA_OBJECT,\n\tTRADEPORT_BIDDING_STORE,\n} from '../../constants';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { isSingleBid } from '../../helpers/isSIngleBid';\nimport { isBluemoveKioskBid } from '../../helpers/kiosk/isBluemoveKioskBid';\nimport { isTradePortKioskBid } from '../../helpers/kiosk/isTradePortKioskBid';\nimport { isOriginByteBid } from '../../helpers/originByte/isOriginByteBid';\nimport { getObjectType } from '../../helpers/rpc/getObjectType';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport {\n\taddSingleBidRemoveNftBidTx,\n\taddTradeportKioskRemoveNftBidTx,\n} from '../removeNftBids/addRemoveNftBidTxs';\nimport { type RemoveCollectionBidTx } from './removeCollectionBids';\n\nexport function addTradeportRemoveCollectionBidTx({\n\ttx,\n\tnftType,\n\tbidNonce,\n}: RemoveCollectionBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::cancel_bid',\n\t\targuments: [tx.object(TRADEPORT_BIDDING_STORE), tx.pure.address(bidNonce)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addTradePortKioskRemoveCollectionBidTx(txData: RemoveCollectionBidTx) {\n\taddTradeportKioskRemoveNftBidTx(txData);\n}\n\nexport function addOriginByteRemoveCollectionBidTx({\n\ttx,\n\tnftType,\n\tbidAmount,\n\tbidder,\n\tsharedObjects,\n}: RemoveCollectionBidTx) {\n\tconst { orderbook } = sharedObjects;\n\n\tconst [coin] = tx.moveCall({\n\t\ttarget: '0x2::coin::zero',\n\t\targuments: [],\n\t\ttypeArguments: ['0x2::sui::SUI'],\n\t});\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::orderbook::cancel_bid',\n\t\targuments: [tx.object(orderbook), tx.pure.u64(bidAmount), tx.object(coin)],\n\t\ttypeArguments: [nftType, '0x2::sui::SUI'],\n\t});\n\n\ttx.transferObjects([tx.object(coin)], tx.pure.address(addLeadingZerosAfter0x(bidder)));\n}\n\nexport function addBluemoveRemoveCollectionBidTx({ tx, nftType, bidNonce }: RemoveCollectionBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::offer_collection::cancel_offer_collection',\n\t\targuments: [tx.object(BLUEMOVE_OFFER_COLLECTION_DATA_OBJECT), tx.pure.u64(bidNonce)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport function addBluemoveKioskRemoveCollectionBidTx({\n\ttx,\n\tnftType,\n\tbidNonce,\n}: RemoveCollectionBidTx) {\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0xcc97b74ed95c8e8a3ed88050a898727dee37896da579fc400d482b64db6149ff::kiosk_offer_collection_v2::cancel_offer_collection_v2',\n\t\targuments: [tx.object(BLUEMOVE_KIOSK_OFFER_COLLECTION_DATA_OBJECT), tx.pure.u64(bidNonce)],\n\t\ttypeArguments: [nftType],\n\t});\n}\n\nexport async function addTradePortRemoveCollectionBidTxHandler(txData: RemoveCollectionBidTx) {\n\tconst bidType = await getObjectType({\n\t\tsuiClient: txData?.suiClient,\n\t\tobjectId: normalizeSuiObjectId(txData?.bidNonce),\n\t});\n\n\tif (isSingleBid(bidType)) {\n\t\tawait addSingleBidRemoveNftBidTx(txData);\n\t\treturn;\n\t}\n\n\tif (isOriginByteBid(bidType)) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\taddOriginByteRemoveCollectionBidTx({ ...txData, sharedObjects });\n\t\treturn;\n\t}\n\n\tif (isTradePortKioskBid(bidType)) {\n\t\taddTradePortKioskRemoveCollectionBidTx(txData);\n\t\treturn;\n\t}\n\n\taddTradeportRemoveCollectionBidTx(txData);\n}\n\nexport async function addBluemoveRemoveCollectionBidTxHandler(txData: RemoveCollectionBidTx) {\n\tconst bidType = await getObjectType({\n\t\tsuiClient: txData?.suiClient,\n\t\tobjectId: normalizeSuiObjectId(txData?.bidNonce),\n\t});\n\n\tif (isOriginByteBid(bidType)) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\taddOriginByteRemoveCollectionBidTx({ ...txData, sharedObjects });\n\t\treturn;\n\t}\n\n\tif (isBluemoveKioskBid(txData?.bidNonce)) {\n\t\taddBluemoveKioskRemoveCollectionBidTx(txData);\n\t\treturn;\n\t}\n\n\taddBluemoveRemoveCollectionBidTx(txData);\n}\n\nexport async function addClutchyRemoveCollectionBidTxHandler(txData: RemoveCollectionBidTx) {\n\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\taddOriginByteRemoveCollectionBidTx({ ...txData, sharedObjects });\n}\n","import type { SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchBidsById } from '../../graphql/queries/fetchBidsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport {\n\taddBluemoveRemoveNftBidTx,\n\taddOriginByteRemoveNftBidTx,\n\taddTocenRemoveNftBidTx,\n\taddTradePortRemoveNftBidTxHandler,\n} from './addRemoveNftBidTxs';\n\nexport type RemoveNftBidTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tsharedObjects?: any;\n\tbidNonce: string;\n\tnftType: string;\n\tnftTokenId: string;\n\tbidAmount: number;\n\tsellerKiosk: string;\n\tbidMarketName: string;\n\tmultiBidId?: string;\n};\n\nexport type RemoveNftBid = {\n\tbidId: string;\n};\n\nexport type RemoveNftBids = {\n\tbidIds: string[];\n\ttx?: Transaction | string;\n};\n\nexport const removeNftBids = async (\n\t{ bidIds, tx: existingTx }: RemoveNftBids,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchBidsById,\n\t\tvariables: { bidIds },\n\t});\n\n\tif (res?.bids?.length === 0) {\n\t\tthrow new Error('No bids found');\n\t}\n\n\tconst bidsForTracking = [];\n\tconst tx = existingTx ? Transaction.from(existingTx) : new Transaction();\n\n\tfor (const bid of res.bids) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(bid?.nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: bid?.collection?.id,\n\t\t\tcollectionChainState: bid?.collection?.chain_state,\n\t\t\tnft: bid?.nft,\n\t\t});\n\n\t\tconst txData: RemoveNftBidTx = {\n\t\t\ttx,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tbidNonce: bid?.nonce,\n\t\t\tnftType,\n\t\t\tnftTokenId: bid?.nft?.token_id,\n\t\t\tbidAmount: bid?.price,\n\t\t\tsellerKiosk: bid?.nft?.chain_state?.kiosk_id,\n\t\t\tbidMarketName: bid?.market_contract?.name,\n\t\t\tmultiBidId: bid?.multi_bid_id,\n\t\t};\n\n\t\tswitch (txData.bidMarketName) {\n\t\t\tcase 'tradeport':\n\t\t\t\tawait addTradePortRemoveNftBidTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'clutchy':\n\t\t\t\taddOriginByteRemoveNftBidTx(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'bluemove':\n\t\t\t\taddBluemoveRemoveNftBidTx(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'tocen':\n\t\t\t\taddTocenRemoveNftBidTx(txData);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Marketplace not supported');\n\t\t}\n\n\t\tbidsForTracking.push({\n\t\t\tnftType,\n\t\t\tcollectionId: bid?.nft?.collection_id,\n\t\t\tbidAmount: bid?.price,\n\t\t\tbidMarketName: bid?.market_contract?.name,\n\t\t\tbidder: bid?.bidder,\n\t\t});\n\t}\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && bidsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'REMOVE_NFT_BIDS',\n\t// \t\titems: bidsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import type { KioskClient } from '@mysten/kiosk';\nimport type { SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n\tXOCIETY_FRONTIER_COLLECTION_ID,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftsById } from '../../graphql/queries/fetchNftsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { hasNativeKioskTransferPolicyRules } from '../../helpers/hasTransferPolicyRules';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport { takeAndBorrowNftFromKiosk } from '../../helpers/kiosk/takeAndBorrowNftFromKiosk';\nimport { isOBKiosk } from '../../helpers/originByte/isOBKiosk';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport {\n\taddOriginByteTransferNftTx,\n\taddTradeportKioskDirectTransferTx,\n\taddTradeportKioskTransferTx,\n\tcanBeTransferedDirectly,\n} from './addTransferNftTx';\n\nexport type TransferNftTx = {\n\ttx: Transaction;\n\tkioskClient: KioskClient;\n\tsharedKioskState?: SharedKioskState;\n\tnftType: string;\n\tnftTokenId: string;\n\tsenderKiosk: string;\n\tsenderAddress: string;\n\trecipientAddress: string;\n\ttransferPolicies: any;\n\tkioskTx?: any;\n\ttransferPolicy?: any;\n\tsuiClient: SuiClient;\n};\n\nexport type TransferNfts = {\n\tnftIds: string[];\n\trecipientAddress: string;\n\twalletAddress: string;\n};\n\nexport const transferNfts = async (\n\t{ nftIds, recipientAddress, walletAddress }: TransferNfts,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tif (addLeadingZerosAfter0x(recipientAddress) === addLeadingZerosAfter0x(walletAddress)) {\n\t\tthrow new Error('Cannot transfer to self');\n\t}\n\n\t// Recipient address needs to have a balance to be a valid address\n\tif (!recipientAddress?.includes('0x') || recipientAddress?.length < 65) {\n\t\tthrow new Error('Invalid recipient address');\n\t}\n\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftsById,\n\t\tvariables: { nftIds },\n\t});\n\n\tif (res?.nfts?.length === 0) {\n\t\tthrow new Error('No nfts found');\n\t}\n\n\tconst nftsForTracking = [];\n\tconst nftsToTransferDirectly = [];\n\tconst tx = new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: undefined,\n\t};\n\n\tfor (const nft of res.nfts) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\tif (nft?.listed) {\n\t\t\tthrow new Error('Cannot transfer a listed NFT');\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: nft?.collection?.id,\n\t\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\t\tnft,\n\t\t});\n\n\t\tconst transferPolicies = nft?.collection?.chain_state?.transfer_policies;\n\n\t\tconst txData: TransferNftTx = {\n\t\t\ttx,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tsharedKioskState,\n\t\t\tnftType,\n\t\t\tnftTokenId: nft?.token_id,\n\t\t\tsenderKiosk: nft?.chain_state?.kiosk_id,\n\t\t\tsenderAddress: walletAddress,\n\t\t\trecipientAddress,\n\t\t\ttransferPolicies,\n\t\t};\n\n\t\t// If NFT is not inside kiosk, transfer the NFT directly\n\t\tif (!txData.senderKiosk) {\n\t\t\ttx.transferObjects(\n\t\t\t\t[tx.object(txData.nftTokenId)],\n\t\t\t\ttx.pure.address(addLeadingZerosAfter0x(recipientAddress)),\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst isSenderKioskOriginByte = await isOBKiosk(txData.senderAddress, txData.senderKiosk);\n\n\t\t// If NFT is inside ob kiosk\n\t\tif (isSenderKioskOriginByte) {\n\t\t\tawait addOriginByteTransferNftTx(txData);\n\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If NFT is inside native kiosk and has no transfer policy rules or is XOCIETY Frontier collection, take it out of the kiosk and transfer it directly\n\t\tif (\n\t\t\ttxData?.senderKiosk &&\n\t\t\t(!hasNativeKioskTransferPolicyRules(txData?.transferPolicies) ||\n\t\t\t\tnft?.collection?.id === XOCIETY_FRONTIER_COLLECTION_ID)\n\t\t) {\n\t\t\tawait kioskTxWrapper({\n\t\t\t\ttx: txData?.tx,\n\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\tkioskOwner: txData?.senderAddress,\n\t\t\t\tkiosk: txData?.senderKiosk,\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\t\tshouldUseSharedKioskTx: false,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tconst borrowedItem = await takeAndBorrowNftFromKiosk({\n\t\t\t\t\t\ttx: txData?.tx,\n\t\t\t\t\t\ttransferPolicies: txData?.transferPolicies,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\t\t\tnftTokenId: txData?.nftTokenId,\n\t\t\t\t\t\tnftType: txData?.nftType,\n\t\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\t\tkioskOwner: txData?.senderAddress,\n\t\t\t\t\t});\n\n\t\t\t\t\ttx.transferObjects(\n\t\t\t\t\t\t[tx.object(borrowedItem)],\n\t\t\t\t\t\ttx.pure.address(addLeadingZerosAfter0x(recipientAddress)),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If NFT can be transferred directly by creating new kiosk for receiver\n\t\tif (await canBeTransferedDirectly(context.suiClient, nft?.collection?.chain_state)) {\n\t\t\tnftsToTransferDirectly.push(nft);\n\t\t} else {\n\t\t\tawait kioskTxWrapper({\n\t\t\t\ttx: txData?.tx,\n\t\t\t\tkioskClient: txData?.kioskClient,\n\t\t\t\tkioskOwner: txData?.senderAddress,\n\t\t\t\tkiosk: txData?.senderKiosk,\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\tsharedKioskState: txData?.sharedKioskState,\n\t\t\t\tshouldUseSharedKioskTx: false,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\tawait addTradeportKioskTransferTx({ ...txData, kioskTx });\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tnftsForTracking.push({\n\t\t\tnftType,\n\t\t\tsenderAddress: walletAddress,\n\t\t\trecipientAddress,\n\t\t});\n\t}\n\n\tawait addTradeportKioskDirectTransferTx(\n\t\t{\n\t\t\ttx,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tsharedKioskState,\n\t\t\tsenderAddress: walletAddress,\n\t\t\trecipientAddress,\n\t\t},\n\t\tnftsToTransferDirectly,\n\t\tcontext.suiClient,\n\t);\n\n\t// currently turned off $1 bulk transfer fee\n\t// if (res?.nfts?.length > 1) {\n\t// \tawait addOneDollarFee(tx);\n\t// }\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && nftsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'TRANSFER_NFTS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import type { KioskClient } from '@mysten/kiosk';\nimport type { SuiClient } from '@mysten/sui/client';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tDELOREAN_TOKEN_IDS_TO_DISABLE,\n\tDELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchListingsById } from '../../graphql/queries/fetchListingsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { type SharedKioskState } from '../../helpers/kiosk/sharedKioskState.type';\nimport {\n\taddBluemoveUnlistTxHandler,\n\taddClutchyUnlistTxHandler,\n\taddHyperspaceUnlistTxHandler,\n\taddKeepsakeUnlistTxHandler,\n\taddSomisUnlistTxHandler,\n\taddSouffl3UnlistTxHandler,\n\taddTocenUnlistTxHandler,\n\taddTradePortUnlistTxHandler,\n} from './addUnlistListingTxs';\nimport { normalizeSuiAddress } from '@mysten/sui/utils';\n\nexport type UnlistListingTx = {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\n\tsharedKioskState?: SharedKioskState;\n\tkioskTx?: any;\n\tseller: string;\n\tsharedObjects?: any;\n\ttransferPolicies: any;\n\tcollectionId: string;\n\tnftTokenId: string;\n\tnftType: string;\n\tlistingNonce: string;\n\tprice: number;\n\tsellerKiosk: string;\n\tisPartOfRelist?: boolean;\n};\n\nexport type UnlistListing = {\n\tlistingId: string;\n\twalletAddress: string;\n};\n\nexport type UnlistListings = {\n\tlistingIds: string[];\n\twalletAddress: string;\n};\n\nexport const unlistListings = async (\n\t{ listingIds, walletAddress }: UnlistListings,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchListingsById,\n\t\tvariables: { listingIds },\n\t});\n\n\tif (res?.listings?.length === 0) {\n\t\tthrow new Error('No listings found');\n\t}\n\n\tconst listingsForTracking = [];\n\tconst tx = new Transaction();\n\n\tconst sharedKioskState: SharedKioskState = {\n\t\tkioskTx: undefined,\n\t};\n\n\tfor (const listing of res.listings) {\n\t\tif (DELOREAN_TOKEN_IDS_TO_DISABLE?.includes(listing?.nft?.token_id)) {\n\t\t\tthrow new Error(DELOREAN_TOKEN_IDS_TO_DISABLE_MESSAGE);\n\t\t}\n\n\t\t// Allow the owner to unlist expired listing\n\t\tif (!listing?.listed && !listing?.nonce) {\n\t\t\tthrow new Error(`Listing ${listing?.id} is not listed`);\n\t\t}\n\n\t\tconst nftType = getNftType({\n\t\t\tcollectionId: listing?.collection?.id,\n\t\t\tcollectionChainState: listing?.collection?.chain_state,\n\t\t\tnft: listing?.nft,\n\t\t});\n\n\t\tconst transferPolicies = listing?.collection?.chain_state?.transfer_policies;\n\n\t\tconst txData: UnlistListingTx = {\n\t\t\ttx,\n\t\t\tsuiClient: context.suiClient,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tsharedKioskState,\n\t\t\ttransferPolicies,\n\t\t\tnftTokenId: listing.nft?.token_id,\n\t\t\tnftType,\n\t\t\tlistingNonce: listing?.nonce,\n\t\t\tprice: listing?.price,\n\t\t\tsellerKiosk: listing.nft?.chain_state?.kiosk_id,\n\t\t\tcollectionId: listing?.nft?.collection_id,\n\t\t\tseller: walletAddress,\n\t\t};\n\n\t\tswitch (listing?.market_name) {\n\t\t\tcase 'tradeport':\n\t\t\t\tawait addTradePortUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'hyperspace':\n\t\t\t\tawait addHyperspaceUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'bluemove':\n\t\t\t\tawait addBluemoveUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'clutchy':\n\t\t\t\tawait addClutchyUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'souffl3':\n\t\t\t\tawait addSouffl3UnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'somis':\n\t\t\t\tawait addSomisUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'keepsake':\n\t\t\t\tawait addKeepsakeUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tcase 'tocen':\n\t\t\t\taddTocenUnlistTxHandler(txData);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Marketplace not supported');\n\t\t}\n\n\t\tlistingsForTracking.push({\n\t\t\twalletAddress,\n\t\t\tnftType,\n\t\t\tcollectionId: listing?.nft?.collection_id,\n\t\t\tprice: listing?.price,\n\t\t\tseller: listing?.seller,\n\t\t\tmarketName: listing?.market_name,\n\t\t});\n\t}\n\n\tsharedKioskState?.kioskTx?.finalize();\n\n\t// if (process.env.ENABLE_SEGMENT_TRACKING === 'true' && listingsForTracking.length > 0) {\n\t// \ttrackMethodCall({\n\t// \t\tapiUser: context.apiUser,\n\t// \t\tapiKey: context.apiKey,\n\t// \t\tevent: 'UNLIST_LISTINGS',\n\t// \t\titems: listingsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import { KioskTransaction } from '@mysten/kiosk';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchOwnerCapByKiosk } from '../../graphql/queries/fetchOwnerCapByKiosk';\nimport { fetchPersonalCapByKiosk } from '../../graphql/queries/fetchPersonalCapByKiosk';\nimport { fetchWalletKiosks } from '../../graphql/queries/fetchWalletKiosks';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\n\nexport type WithdrawProfitsFromKiosks = {\n\twalletAddress: string;\n};\n\nexport async function withdrawProfitsFromKiosks(\n\t{ walletAddress }: WithdrawProfitsFromKiosks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchWalletKiosks,\n\t\tvariables: {\n\t\t\twallet: addLeadingZerosAfter0x(walletAddress),\n\t\t},\n\t});\n\n\tconst kiosks = res?.kiosks?.filter((kiosk: any) => !kiosk?.is_origin_byte);\n\n\tif (kiosks.length === 0) {\n\t\tthrow new Error(`No kiosks found for ${walletAddress}`);\n\t}\n\n\tlet kiosksWithProfit = kiosks.filter((kiosk: any) => kiosk.profits > 0);\n\n\tif (walletAddress === '0xcb0d10a55b0edd4d5b4748e484195a7a4b1dc10f0870d14fa850c66272796ece') {\n\t\tkiosksWithProfit = kiosksWithProfit.slice(0, 10);\n\t}\n\n\tif (kiosksWithProfit.length === 0) {\n\t\tthrow new Error(`No kiosks with profit to withdraw found for ${walletAddress}`);\n\t}\n\n\tconst tx = new Transaction();\n\n\ttry {\n\t\tfor (const kiosk of kiosksWithProfit) {\n\t\t\tlet kioskTx: KioskTransaction;\n\n\t\t\tif (kiosk.is_personal) {\n\t\t\t\tconst personalKioskCapId = (\n\t\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\t\tchain: 'sui',\n\t\t\t\t\t\tquery: fetchPersonalCapByKiosk,\n\t\t\t\t\t\tvariables: { kioskId: kiosk.id },\n\t\t\t\t\t})\n\t\t\t\t).personalCap?.id;\n\n\t\t\t\tkioskTx = new KioskTransaction({\n\t\t\t\t\ttransactionBlock: tx as any,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tcap: {\n\t\t\t\t\t\tisPersonal: true,\n\t\t\t\t\t\tobjectId: personalKioskCapId,\n\t\t\t\t\t\tkioskId: kiosk.id,\n\t\t\t\t\t\tdigest: '',\n\t\t\t\t\t\tversion: '',\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else if (kiosks.length > 0) {\n\t\t\t\tconst kioskCapId = (\n\t\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\t\tchain: 'sui',\n\t\t\t\t\t\tquery: fetchOwnerCapByKiosk,\n\t\t\t\t\t\tvariables: { kioskId: kiosk.id },\n\t\t\t\t\t})\n\t\t\t\t).ownerCap?.id;\n\n\t\t\t\tkioskTx = new KioskTransaction({\n\t\t\t\t\ttransactionBlock: tx as any,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tcap: {\n\t\t\t\t\t\tisPersonal: false,\n\t\t\t\t\t\tobjectId: kioskCapId,\n\t\t\t\t\t\tkioskId: kiosk.id,\n\t\t\t\t\t\tdigest: '',\n\t\t\t\t\t\tversion: '',\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tkioskTx.convertToPersonal(true);\n\t\t\t}\n\n\t\t\tkioskTx.withdraw(addLeadingZerosAfter0x(walletAddress));\n\t\t\tkioskTx.finalize();\n\t\t}\n\t} catch (err) {\n\t\tconsole.log('err', err);\n\t}\n\n\treturn Transaction.from(tx);\n}\n","import { Transaction } from '@mysten/sui/transactions';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftCollectionChainState } from '../../graphql/queries/fetchNftCollectionChainState';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport type { RequestContext } from '../../SuiTradingClient';\nimport { addSponsorListingTx } from './addSponsorNftListingTx';\nimport { getNftType } from '../../helpers/getNftType';\n\nexport type SponsorNftListingOptions = {\n\tshouldSponsor?: boolean;\n\tnumOfPeriods?: number;\n\tslippage?: number;\n\tcoinInType?: string;\n\tcoinInAmount?: string;\n\tusdcFeeAmountPerPeriod?: number;\n};\n\nexport type SponsorNftListing = {\n\tnftTokenId: string;\n\twalletAddress: string;\n\toptions: SponsorNftListingOptions;\n};\n\nexport const sponsorNftListing = async (\n\t{ nftTokenId, walletAddress, options }: SponsorNftListing,\n\tcontext: RequestContext,\n): Promise<Transaction> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchNftCollectionChainState,\n\t\tvariables: { nftTokenId },\n\t});\n\n\tif (res?.nfts?.length === 0) {\n\t\tthrow new Error(`No nft found with token id ${nftTokenId}`);\n\t}\n\n\tconst nft = res?.nfts?.[0];\n\n\tconst nftType = getNftType({\n\t\tcollectionId: nft?.collection?.id,\n\t\tcollectionChainState: nft?.collection?.chain_state,\n\t\tnft,\n\t});\n\n\tconst transferPolicies = nft?.collection?.chain_state?.transfer_policies;\n\n\tif (isOriginByteCollection(transferPolicies)) {\n\t\tthrow new Error(`You cannot sponsor an Origin Byte NFT. Nft Token Id: ${nftTokenId}`);\n\t}\n\n\tconst tx = new Transaction();\n\n\tawait addSponsorListingTx({\n\t\ttx,\n\t\tsuiClient: context.suiClient,\n\t\tnftTokenId,\n\t\tnftType,\n\t\twalletAddress,\n\t\tsponsorOptions: options,\n\t\tdefiRouterUrl: context.defiRouterUrl,\n\t});\n\n\treturn tx instanceof Transaction ? tx : Transaction.from(tx);\n};\n","import { gql } from 'graphql-request';\n\nexport const fetchNftCollectionChainState = gql`\n\tquery fetchNftCollectionChainState($nftTokenId: String!) {\n\t\tnfts(where: { token_id: { _eq: $nftTokenId } }) {\n\t\t\tcollection {\n\t\t\t\tid\n\t\t\t\tchain_state\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { Transaction } from '@mysten/sui/transactions';\nimport {\n\tTRADEPORT_NFT_STRATEGY_PACKAGE_ID,\n\tTRADEPORT_NFT_STRATEGY_MANAGER_ID,\n\tTRADEPORT_ORDERBOOK_STORE,\n\tTRADEPORT_LISTINGS_STORE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchCollectionFloorListingsForMarket } from '../../graphql/queries/fetchCollectionFloorListingForMarket';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { RequestContext } from '../../SuiTradingClient';\nimport { getCollectionChainState } from '../../helpers/getCollectionChainState';\n\nexport type ApplyNftStrategy = {\n\tcollectionId: string;\n\tstrategyFtType?: string;\n\ttx?: Transaction;\n};\n\nexport async function applyTradeportNftStrategy({\n\tcollectionId,\n\tstrategyFtType,\n\ttx: existingTx,\n}: ApplyNftStrategy): Promise<Transaction> {\n\tconst tx = existingTx ?? new Transaction();\n\tconst chainState = await getCollectionChainState(collectionId);\n\tconst nftStrategies = (chainState?.nft_strategies ?? {}) as Record<\n\t\tstring,\n\t\tRecord<string, unknown>\n\t>;\n\tconst nftStrategyKeys = Object.keys(nftStrategies);\n\tif (nftStrategyKeys.length === 0) {\n\t\tthrow new Error('No NFT strategies found for collection');\n\t}\n\n\tstrategyFtType = strategyFtType ?? nftStrategyKeys[0];\n\n\tif (!nftStrategyKeys.includes(strategyFtType)) {\n\t\tthrow new Error(`Specified FT type ${strategyFtType} is not supported for this collection`);\n\t}\n\n\tconst transferPolicy = getNativeKioskTransferPolicies(chainState?.transfer_policies ?? [])?.at(0);\n\n\tif (!transferPolicy) {\n\t\tthrow new Error('No transfer policy found for collection');\n\t}\n\n\tconst nftType = chainState?.nft_type as string;\n\tlet suiBalance = BigInt(\n\t\t(nftStrategies[strategyFtType] as { sui_balance: string }).sui_balance ?? 0n,\n\t);\n\n\tconst result = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchCollectionFloorListingsForMarket,\n\t\tvariables: {\n\t\t\tcollectionId,\n\t\t\tmarketAddress: TRADEPORT_NFT_STRATEGY_MANAGER_ID,\n\t\t\ttotalPrice: suiBalance.toString(),\n\t\t},\n\t});\n\tif ((result?.listings?.length ?? 0) === 0) {\n\t\tthrow new Error(\n\t\t\t`No floor listing found for collection with price bellow or equal to ${suiBalance} MIST`,\n\t\t);\n\t}\n\n\tfor (const floorListing of result.listings) {\n\t\tsuiBalance -= BigInt(floorListing.price);\n\t\tif (suiBalance < 0n) {\n\t\t\tbreak;\n\t\t}\n\n\t\ttx.moveCall({\n\t\t\ttarget: `${TRADEPORT_NFT_STRATEGY_PACKAGE_ID}::tradeport_nft_strategy::apply_tradeport_nft_strategy_confirm_request`,\n\t\t\ttypeArguments: [nftType, strategyFtType],\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_NFT_STRATEGY_MANAGER_ID),\n\t\t\t\ttx.object((nftStrategies[strategyFtType] as { kiosk_id: string }).kiosk_id),\n\t\t\t\ttx.object(TRADEPORT_LISTINGS_STORE),\n\t\t\t\ttx.object(TRADEPORT_ORDERBOOK_STORE),\n\t\t\t\ttx.object(floorListing.nft.delegated_owner),\n\t\t\t\ttx.object(floorListing.nft.token_id),\n\t\t\t\ttx.object(transferPolicy.id),\n\t\t\t],\n\t\t});\n\t}\n\n\treturn tx;\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchCollectionFloorListingsForMarket = gql`\n\tquery fetchCollectionFloorListingsForMarket(\n\t\t$collectionId: uuid!\n\t\t$marketAddress: String!\n\t\t$totalPrice: numeric\n\t) {\n\t\tlistings(\n\t\t\twhere: {\n\t\t\t\tcollection_id: { _eq: $collectionId }\n\t\t\t\tlisted: { _eq: true }\n\t\t\t\tmarket_name: { _eq: \"tradeport\" }\n\t\t\t\tseller: { _neq: $marketAddress }\n\t\t\t\tnonce: { _like: \"1::0x%\" }\n\t\t\t\tprice: { _lte: $totalPrice }\n\t\t\t}\n\t\t\torder_by: [{ price: asc_nulls_last }, { block_height: asc }, { tx_index: asc }]\n\t\t) {\n\t\t\tid\n\t\t\tprice\n\t\t\tnft {\n\t\t\t\ttoken_id\n\t\t\t\tdelegated_owner\n\t\t\t}\n\t\t}\n\t}\n`;\n"],"mappings":"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,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,yBAAyB;AAAA,EACpC;AAAA;AAAA,EACD;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACC;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF;AAEO,IAAM,iCAAiC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","names":["gql","gql","Transaction","gql","gql","normalizeSuiObjectId","gql","rule","gql","gql","getNormalizedRuleType","policy","getNormalizedRuleType","gql","normalizeSuiObjectId","gql","normalizeSuiObjectId","sharedObjects","normalizeSuiObjectId","sharedObjects","Transaction","Transaction","gql","ERROR_UNLIST_FIRST","Transaction","Transaction","gql","Transaction","Transaction","gql","Transaction","bcs","Transaction","Transaction","bcs","bcs","gql","normalizeSuiObjectId","bcs","sharedObjects","normalizeSuiObjectId","Transaction","Transaction","normalizeSuiObjectId","normalizeSuiObjectId","Transaction","Transaction","gql","Transaction","Transaction","Transaction","Transaction","Transaction","normalizeStructTag","Transaction","normalizeStructTag","normalizeSuiAddress","Transaction","Transaction","gql","gql","Transaction","res","Transaction","gql","normalizeSuiObjectId","bcs","normalizeSuiObjectId","gql","Transaction","Transaction","nft","Transaction","Transaction","normalizeSuiObjectId","normalizeSuiObjectId","Transaction","Transaction","Transaction","Transaction","Transaction","Transaction","Transaction","KioskTransaction","Transaction","Transaction","KioskTransaction","Transaction","gql","Transaction","Transaction","gql","Transaction","tx"]}
|