@tradeport/sui-trading-sdk 0.4.21 → 0.4.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +22 -24
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +22 -24
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/helpers/kiosk/resolveTransferPolicies.ts +9 -11
- package/src/methods/transferNfts/transferNfts.ts +19 -19
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../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/resolveTransferPolicies.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/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/buyAndExerciseLongLocks/buyAndExerciseLongLocks.ts","../src/methods/buyLocks/buyLocks.ts","../src/helpers/calculatePremium.ts","../src/helpers/calculateRoyaltyFee.ts","../src/graphql/queries/fetchLockById.ts","../src/helpers/getLockById.ts","../src/helpers/getMarketFeePrice.ts","../src/graphql/queries/fetchTransferPoliciesByType.ts","../src/helpers/kiosk/getNativeKioskTransferPoliciesByNftType.ts","../src/methods/exerciseLongLocks/exerciseLongLocks.ts","../src/methods/buyAndExerciseShortLocks/buyAndExerciseShortLocks.ts","../src/methods/exerciseShortLocks/exerciseShortLocks.ts","../src/graphql/queries/fetchListingsById.ts","../src/methods/buyListings/buyListings.ts","../src/helpers/addThirdPartyTxFee.ts","../src/methods/buyListings/addBuyListingTxs.ts","../src/graphql/queries/fetchCommissionByListingId.ts","../src/graphql/queries/getCommissionByListingId.ts","../src/helpers/destroyZeroCoin.ts","../src/helpers/splitCoins.ts","../src/methods/cancelLocks/cancelLocks.ts","../src/methods/cancelMultiBid/cancelMultiBid.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/methods/claimNfts/addClaimNftsTxs.ts","../src/methods/createLongLocks/createLongLocks.ts","../src/graphql/queries/fetchActiveLockStateByNftId.ts","../src/helpers/getActiveLockStateByNftId.ts","../src/methods/createMultiBid/createMultiBid.ts","../src/methods/updateMultiBid/updateMultiBid.ts","../src/methods/createShortLocks/createShortLocks.ts","../src/methods/listNfts/listNfts.ts","../src/methods/listNfts/addListTxs.ts","../src/methods/listNfts/addRelistTxs.ts","../src/methods/relistNft/relistNft.ts","../src/methods/migrateNftsFromUnsharedToSharedKiosks/migrateNftsFromUnsharedToSharedKiosks.ts","../src/graphql/queries/fetchNftsByKioskId.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/addRemoveNftBidTxs.ts","../src/methods/removeNftBids/removeNftBids.ts","../src/methods/transferNfts/transferNfts.ts","../src/methods/unlistListings/unlistListings.ts","../src/methods/withdrawProfitsFromKiosks/withdrawProfitsFromKiosks.ts"],"sourcesContent":["import SuiTradingClient from './SuiTradingClient';\n\nexport { SuiTradingClient };\n","import { getFullnodeUrl } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { type 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 {\n\tbuyAndExerciseLongLocks,\n\ttype BuyAndExerciseLongLocks,\n} from './methods/buyAndExerciseLongLocks/buyAndExerciseLongLocks';\nimport {\n\tbuyAndExerciseShortLocks,\n\ttype BuyAndExerciseShortLocks,\n} from './methods/buyAndExerciseShortLocks/buyAndExerciseShortLocks';\nimport { buyListings, type BuyListings } from './methods/buyListings/buyListings';\nimport { buyLocks, type BuyLocks } from './methods/buyLocks/buyLocks';\nimport { cancelLocks, type CancelLocks } from './methods/cancelLocks/cancelLocks';\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 { createLongLocks, type CreateLongLocks } from './methods/createLongLocks/createLongLocks';\nimport { createMultiBid, type CreateMultiBid } from './methods/createMultiBid/createMultiBid';\nimport {\n\tcreateShortLocks,\n\ttype CreateShortLocks,\n} from './methods/createShortLocks/createShortLocks';\nimport {\n\texerciseLongLocks,\n\ttype ExerciseLongLocks,\n} from './methods/exerciseLongLocks/exerciseLongLocks';\nimport {\n\texerciseShortLocks,\n\ttype ExerciseShortLocks,\n} from './methods/exerciseShortLocks/exerciseShortLocks';\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';\n\ntype ApiConfig = {\n\tapiUser: string;\n\tapiKey: string;\n\tsuiNodeUrl?: string;\n\tgraphQLClient?: GraphQLClient;\n};\nexport interface RequestContext {\n\tapiUser: string;\n\tapiKey: 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 suiClient: ReturnType<typeof createSuiClient>;\n\tprivate readonly kioskClient: ReturnType<typeof createKioskClient>;\n\tprivate readonly allowedApiUsersForUnsharedKiosksMigration = ['tradeport.xyz', 'mercato.xyz'];\n\n\tconstructor({ apiUser, apiKey, suiNodeUrl, graphQLClient }: ApiConfig) {\n\t\tthis.apiUser = apiUser;\n\t\tthis.apiKey = apiKey;\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}\n\n\t\tgetGraphqlClient().setHeaders({\n\t\t\t'x-api-user': apiUser,\n\t\t\t'x-api-key': apiKey,\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\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\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\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\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\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\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\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\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\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\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\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\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 createLongLocks(args: CreateLongLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 createLongLocks(args, context);\n\t}\n\n\tpublic async createShortLocks(args: CreateShortLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 createShortLocks(args, context);\n\t}\n\n\tpublic async cancelLocks(args: CancelLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 cancelLocks(args, context);\n\t}\n\n\tpublic async buyLocks(args: BuyLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 buyLocks(args, context);\n\t}\n\n\tpublic async exerciseLongLocks(args: ExerciseLongLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 exerciseLongLocks(args, context);\n\t}\n\n\tpublic async exerciseShortLocks(args: ExerciseShortLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 exerciseShortLocks(args, context);\n\t}\n\n\tpublic async buyAndExerciseLongLocks(args: BuyAndExerciseLongLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 buyAndExerciseLongLocks(args, context);\n\t}\n\n\tpublic async buyAndExerciseShortLocks(args: BuyAndExerciseShortLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 buyAndExerciseShortLocks(args, context);\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\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\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\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 { GraphQLClient } from 'graphql-request';\n\nlet graphqlClient = new GraphQLClient('https://api.indexer.xyz/graphql');\n\nexport const getGraphqlClient = () => graphqlClient;\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]*)}/;\n\tconst matches = regex.exec(query);\n\n\tif (!matches || matches.length !== 4) {\n\t\tthrow new Error('Invalid query string format');\n\t}\n\n\tconst [, queryName, argsString, bodyString] = matches;\n\n\tif (!argsString || !bodyString) return '';\n\n\tconst args = argsString.trim().length ? `(${argsString.trim()})` : '';\n\tconst body = bodyString.trim();\n\tconst wrappedBody = `${chain} {\\n${body}\\n}`;\n\n\treturn gql`query ${queryName}${args} {\\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\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 {\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\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 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\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\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_TRANFER_POLICY_RULES_PACKAGE_ID = '0x434b5bd8f6a7b05fede0ff46c6e511d71ea326ed38056e3bcd681d2d7c2a7879';\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_LISTING_STORE = '0x47cba0b6309a12ce39f9306e28b899ed4b3698bce4f4911fd0c58ff2329a2ff6';\nexport const TRADEPORT_BIDDING_STORE = '0x3d3b0c6e616fdc1a45b2b73d022bc085448e78bd729d28081c7a340abb33cba1';\nexport const TRADEPORT_MARKETPLACE_OBJECT = '0xc5f87120e388b532ee774f7bac23347679f632a1f2d59f4ed2bbf2ffe5a61b6f';\n\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 = '0x6058c583a0c0c893006036cad0d4f5399479c7e140747cb703457aee8b158e9f';\nexport const TRADEPORT_MULTI_BID_PACKAGE_ORIGINAL = '0x53134eb544c5a0b5085e99efaf7eab13b28ad123de35d61f941f8c8c40b72033'; // V1\nexport const TRADEPORT_MULTI_BID_STORE = '0x8aaed7e884343fb8b222c721d02eaac2c6ae2abbb4ddcdf16cb55cf8754ee860';\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];\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\tawait shareOriginByteKiosk({ 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\tkioskTx: txData?.kioskTx,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAssertNftInSharedKiosk: true,\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\tkioskTx: txData?.kioskTx,\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\tasync runCommands(kioskTx) {\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\tkioskTx: txData?.kioskTx,\n\t\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\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\tkioskTx: txData?.kioskTx,\n\t\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\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';\n\nexport const assertNftInSharedKiosk = async ({\n\tkioskId,\n\twalletAddress,\n\tkiosks,\n}: {\n\tkioskId: string;\n\twalletAddress: string;\n\tkiosks?: any;\n}): Promise<void> => {\n\tlet kiosksToCheck = kiosks;\n\n\tif (!kiosksToCheck) {\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\tkiosksToCheck = res?.kiosks;\n\t}\n\n\tconst nftKiosk = kiosksToCheck?.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\tconst transferPoliciesFromMystenSdk = await kioskClient.getTransferPolicies({\n\t\ttype: normalizedNftType(nftType),\n\t});\n\n\tlet rule: string | undefined;\n\n\tif (transferPoliciesFromMystenSdk.length > 0) {\n\t\trule = transferPoliciesFromMystenSdk\n\t\t\t.flatMap((policy) => policy.rules)\n\t\t\t.filter((rule) => rule?.split('::')?.[1] === ruleType)?.[0];\n\t} else if (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\tthrow new Error(`No transfer policy found for ${nftType}`);\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';\n\ntype Args = {\n\ttx: Transaction;\n\tkioskClient: KioskClient;\n\tkioskOwner: string;\n\tkioskTx?: KioskTransaction;\n\tkiosk?: any;\n\tkioskOwnerKiosks?: Array<{\n\t\tid: string;\n\t\tis_personal: boolean;\n\t\tis_origin_byte: boolean;\n\t\tis_shared: boolean;\n\t}>;\n\trunCommands: (kioskTx: KioskTransaction) => Promise<void>;\n\tshouldConvertToPersonalKiosk?: boolean;\n\tshouldAssertNftInSharedKiosk?: boolean;\n\tshouldAllowNftUnsharedKiosk?: boolean;\n\tshouldSkipFinalize?: boolean;\n\tkioskStrategy?: 'include' | 'exclude';\n\tfailIfNoKiosk?: boolean;\n};\n\nexport const kioskTxWrapper = async ({\n\ttx,\n\tkioskClient,\n\tkioskTx,\n\tkioskOwner,\n\tkiosk,\n\tkioskOwnerKiosks,\n\trunCommands,\n\tshouldConvertToPersonalKiosk,\n\tshouldAssertNftInSharedKiosk,\n\tshouldAllowNftUnsharedKiosk,\n\tshouldSkipFinalize,\n\tkioskStrategy,\n\tfailIfNoKiosk,\n}: Args) => {\n\tif (kioskTx) {\n\t\tawait runCommands(kioskTx);\n\t\treturn;\n\t}\n\n\tif (!kioskOwner) {\n\t\tthrow new Error('No kiosk owner provided');\n\t}\n\n\tlet kiosks =\n\t\tkioskOwnerKiosks ??\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 (shouldAssertNftInSharedKiosk) {\n\t\tawait assertNftInSharedKiosk({ kioskId: kiosk, walletAddress: kioskOwner, kiosks });\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\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\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\tawait runCommands(kioskTx);\n\n\tif (!shouldSkipFinalize) {\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 {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { getTransferPolicyRuleNamesFromSuiObject } from '../getTransferPolicyRuleNamesFromSuiObject';\nimport {\n\tgetNativeKioskTransferPolicies,\n\tknownTransferPolicyRules,\n} from './getNativeKioskTransferPolicies';\nimport { resolveFloorPriceRule } from './resolveFloorPriceRule';\nimport { resolveKioskLockRule } from './resolveKioskLockRule';\nimport { resolvePersonalKioskRule } from './resolvePersonalKioskRule';\nimport { resolveRoyaltyRule } from './resolveRoyaltyRule';\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};\n\nconst originByteRuleModules = ['royalty_strategy_bps', 'transfer_allowlist'];\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}: Props) => {\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\tif (ruleNames.length > 0) {\n\t\t\t\tpolicies = [\n\t\t\t\t\t{\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tid: transferPolicyId,\n\t\t\t\t\t\t\trules: ruleNames,\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\tisCustom: false,\n\t\t\t\t\t},\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\tpolicies = [\n\t\t\t\t{\n\t\t\t\t\tdata:\n\t\t\t\t\t\t// Find first policy with relevant rules, or fall back to first policy\n\t\t\t\t\t\ttransferPoliciesFromMystenSdk.find((policy) =>\n\t\t\t\t\t\t\tpolicy?.rules?.some((rule) =>\n\t\t\t\t\t\t\t\tknownTransferPolicyRules.some((ruleType) => rule?.includes(ruleType)),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t) ?? transferPoliciesFromMystenSdk[0],\n\t\t\t\t\ttransferRequest,\n\t\t\t\t\tisCustom: false,\n\t\t\t\t},\n\t\t\t];\n\t\t} else if (\n\t\t\t(customTransferPolicies ?? []).every(\n\t\t\t\t(p: { transferRequest: TransactionArgument }) => p.transferRequest !== transferRequest,\n\t\t\t)\n\t\t) {\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\tdata: customPolicy[0],\n\t\t\t\t\ttransferRequest: customTransferPolicy?.transferRequest,\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\tlet canTransferOutsideKiosk = true;\n\n\tfor (const policy of policies) {\n\t\tconst kioskLockRule = policy?.data?.rules.find((rule: any) =>\n\t\t\trule?.includes('kiosk_lock_rule'),\n\t\t);\n\t\tconst personalKioskRule = policy.data.rules.find((rule: any) =>\n\t\t\trule.includes('personal_kiosk_rule'),\n\t\t);\n\t\tconst otherRules = policy.data.rules.filter(\n\t\t\t(rule: any) => !rule?.includes('kiosk_lock_rule') && !rule?.includes('personal_kiosk_rule'),\n\t\t);\n\n\t\tconst sortedRules = [kioskLockRule, personalKioskRule, ...otherRules].filter(Boolean);\n\n\t\tfor (const rule of sortedRules) {\n\t\t\tconst ruleDefinition = kioskClient.rules.find(\n\t\t\t\t(x: any) => getNormalizedRuleType(x.rule) === getNormalizedRuleType(rule),\n\t\t\t);\n\n\t\t\tlet rulePackageId = ruleDefinition?.packageId;\n\t\t\tif (!rulePackageId) {\n\t\t\t\trulePackageId = rule?.split('::')?.[0];\n\t\t\t}\n\n\t\t\tconst moduleName = rule?.split('::')?.[1];\n\t\t\tif (originByteRuleModules.includes(moduleName)) {\n\t\t\t\tthrow new Error(`Using Origin Byte rule ${rule} inside the native kiosk transaction`);\n\t\t\t}\n\n\t\t\tswitch (moduleName) {\n\t\t\t\tcase 'kiosk_lock_rule':\n\t\t\t\t\tcanTransferOutsideKiosk = false;\n\t\t\t\t\tresolveKioskLockRule({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tpackageId: rulePackageId,\n\t\t\t\t\t\tpolicyId: policy.data.id,\n\t\t\t\t\t\ttransferRequest: policy.transferRequest,\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: 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: policy.transferRequest,\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: rulePackageId,\n\t\t\t\t\t\tmoduleName,\n\t\t\t\t\t\tpolicyId: policy.data.id,\n\t\t\t\t\t\ttransferRequest: policy.transferRequest,\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});\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: rulePackageId,\n\t\t\t\t\t\tnftType: policy.isCustom && policy.type ? policy.type : nftType,\n\t\t\t\t\t\tpolicyId: policy.data.id,\n\t\t\t\t\t\ttransferRequest: policy.transferRequest as any,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`No resolver for the following rule: ${rule}.`);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (canTransferOutsideKiosk && 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.data.id), policy.transferRequest],\n\t\t\ttypeArguments: [policy.isCustom && policy.type ? policy.type : nftType],\n\t\t});\n\t}\n};\n","import {\n\ttype Transaction,\n\ttype TransactionObjectArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tpackageId: string;\n\ttransferRequest: TransactionObjectArgument;\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};\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}: Args) {\n\tconst royaltyFeeAmount = await getKioskCollectionRoyaltyFeeAmount({\n\t\ttx,\n\t\tsuiClient,\n\t\twalletAddress,\n\t\troyaltyRulePackageId: packageId,\n\t\troyaltyRuleModule: moduleName,\n\t\ttransferPolicyId: policyId,\n\t\tprice,\n\t\tnftType,\n\t});\n\n\tconst feeCoin = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [royaltyFeeAmount]);\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 { 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';\n\nexport const getOBKiosk = async (wallet: string): 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\treturn res?.kiosks?.filter((kiosk: any) => kiosk?.is_origin_byte && kiosk?.is_shared)?.[0]?.id;\n};\n","import { createOBKiosk } from './createOBKiosk';\nimport { getOBKiosk } from './getOBKiosk';\n\ntype Args = {\n\ttx: any;\n\taddress: string;\n\tkioskToUseIfExists?: string;\n\tcreateMethod?: string;\n};\n\nexport const getOrCreateOBKiosk = async ({\n\ttx,\n\taddress,\n\tkioskToUseIfExists,\n\tcreateMethod,\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\tconst existingKiosk = await getOBKiosk(address);\n\tif (existingKiosk) {\n\t\treturn {\n\t\t\tkiosk: existingKiosk,\n\t\t\tisNewKiosk: false,\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 = async ({ 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 { normalizeStructTag, 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 { 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 { 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, kioskClient, nftTokenId, suiClient } = 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 && txData.sellerKiosk) {\n\t\t// Nft must be places inside the kiosk\n\t\tconst transferPolicies = await kioskClient.getTransferPolicies({\n\t\t\ttype: normalizeStructTag(nftType),\n\t\t});\n\t\tlet { rules: allRules } = transferPolicies.find((p) => p.id === transferPolicy.id);\n\n\t\tif (allRules.length === 0) {\n\t\t\tallRules = await getTransferPolicyRuleNamesFromSuiObject({\n\t\t\t\tsuiClient,\n\t\t\t\ttransferPolicyId: transferPolicy.id,\n\t\t\t});\n\t\t}\n\n\t\tconst unsupportedRule = allRules.find(\n\t\t\t(r) => !knownTransferPolicyRules.includes(r.split('::').at(1)),\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\tkioskTx: txData?.kioskTx,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tasync runCommands(kioskTx) {\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// Add here resolving custom transfer policy rules when they appear\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\tkioskTx: txData?.kioskTx,\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: true,\n\t\t\t\tasync runCommands(kioskTx) {\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","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} 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 addTradePortUnlistTx({ 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 addTradePortKioskUnlistTx({\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 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\tif (\n\t\ttxData?.listingNonce &&\n\t\t(await isNonKioskListing({ suiClient: txData?.suiClient, listingNonce: txData?.listingNonce }))\n\t) {\n\t\taddTradePortUnlistTx(txData);\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\tasync runCommands(kioskTx) {\n\t\t\t\tawait addTradePortKioskUnlistTx({\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\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\taddTradePortUnlistTx(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\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\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 { 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\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\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\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\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 { type RequestContext } from '../../SuiTradingClient';\nimport { buyLocks } from '../buyLocks/buyLocks';\nimport { exerciseLongLocks } from '../exerciseLongLocks/exerciseLongLocks';\n\nexport type BuyAndExerciseLongLocks = {\n\twalletAddress: string;\n\tlocks: Array<{\n\t\tid: string;\n\t\tbidId?: string;\n\t}>;\n\ttx?: Transaction;\n};\n\nexport async function buyAndExerciseLongLocks(\n\t{ walletAddress, locks, tx: existingTx }: BuyAndExerciseLongLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst transaction = existingTx ?? new Transaction();\n\n\tawait buyLocks({ lockIds: locks?.map((lock) => lock?.id), transaction }, context);\n\tawait exerciseLongLocks({ locks, walletAddress, transaction }, context);\n\n\treturn transaction;\n}\n","import { SUI_CLOCK_OBJECT_ID } from '@mysten/sui.js/utils';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_PRICE_LOCK_PACKAGE, TRADEPORT_PRICE_LOCK_STORE } from '../../constants';\nimport { calculatePremium } from '../../helpers/calculatePremium';\nimport { calculateRoyaltyFee } from '../../helpers/calculateRoyaltyFee';\nimport { getLockById } from '../../helpers/getLockById';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getNativeKioskTransferPoliciesByNftType } from '../../helpers/kiosk/getNativeKioskTransferPoliciesByNftType';\nimport { type RequestContext } from '../../SuiTradingClient';\n\nexport type BuyLocks = {\n\tlockIds: string[];\n\ttransaction?: Transaction;\n};\n\nexport async function buyLocks(\n\t{ lockIds, transaction }: BuyLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst tx = transaction ?? new Transaction();\n\n\tfor (const lockId of lockIds) {\n\t\tconst lock = await getLockById(lockId);\n\t\tif (!lock) {\n\t\t\tthrow new Error(`Lock ${lockId} is not found`);\n\t\t}\n\n\t\tif (lock.state !== 'active') {\n\t\t\tthrow new Error(`Lock ${lockId} must be in active state`);\n\t\t}\n\n\t\tconst transferPolicy = (await getNativeKioskTransferPoliciesByNftType(lock.nft_type))?.at(0);\n\t\tif (!transferPolicy) {\n\t\t\tthrow new Error(`Missing transfer policy for ${lock.nft_type}`);\n\t\t}\n\n\t\tconst marketplaceFee = BigInt(\n\t\t\tgetMarketFeePrice({\n\t\t\t\tprice: Number(lock.maker_price),\n\t\t\t\tcollectionId: lock.collection_id,\n\t\t\t}),\n\t\t);\n\n\t\tconst royalty = calculateRoyaltyFee(transferPolicy.rules, BigInt(lock.maker_price));\n\n\t\tconst premiumAmount = calculatePremium(lock.maker_price);\n\n\t\tconst [premium] = tx.splitCoins(tx.gas, [premiumAmount]);\n\n\t\ttx.moveCall({\n\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::buy_lock`,\n\t\t\ttypeArguments: [lock.nft_type],\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\ttx.object(SUI_CLOCK_OBJECT_ID),\n\t\t\t\ttx.pure.id(lock.lock_id),\n\t\t\t\ttx.pure.u64(lock.maker_price),\n\t\t\t\ttx.pure.u64(marketplaceFee),\n\t\t\t\ttx.pure.u64(royalty),\n\t\t\t\ttx.pure.u64(lock.expire_in),\n\t\t\t\tpremium,\n\t\t\t],\n\t\t});\n\t}\n\n\treturn tx;\n}\n","import { PREMIUM_FEE_NOMINATOR, PREMIUM_NOMINATOR } from '../constants';\n\nexport function calculatePremium(price: bigint): bigint {\n\treturn (BigInt(price) * PREMIUM_NOMINATOR) / 10_000n;\n}\n\nexport function calculatePremiumFee(premium: bigint): bigint {\n\treturn (BigInt(premium) * PREMIUM_FEE_NOMINATOR) / 10_000n;\n}\n","export function calculateRoyaltyFee(\n\ttransferPolicyRules: Array<{ type: string; amount_bp?: string; min_amount?: string }>,\n\tprice: bigint,\n): bigint {\n\tconst royaltyRule = transferPolicyRules?.filter(\n\t\t(rule: { type: string }) => rule.type === 'royalty_rule',\n\t)?.[0];\n\n\tif (!royaltyRule || (!royaltyRule.amount_bp && !royaltyRule.min_amount)) {\n\t\treturn 0n;\n\t}\n\n\tconst royaltyFee = royaltyRule.amount_bp ? (BigInt(royaltyRule.amount_bp) * price) / 10000n : 0n;\n\n\tif (royaltyRule.min_amount && BigInt(royaltyRule.min_amount) > royaltyFee) {\n\t\treturn BigInt(royaltyRule.min_amount);\n\t}\n\n\treturn royaltyFee;\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchLockById = gql`\n\tquery fetchLockById($lockId: uuid!) {\n\t\tlocks(where: { id: { _eq: $lockId } }) {\n\t\t\tid\n\t\t\ttype\n\t\t\tstate\n\t\t\tcollection_id\n\t\t\tlock_id\n\t\t\tnft_type\n\t\t\tmaker_price\n\t\t\tmaker\n\t\t\tchain_state\n\t\t\tcollection_id\n\t\t\texpire_in\n\t\t\tnft {\n\t\t\t\tid\n\t\t\t\ttoken_id\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../graphql/gqlChainRequest';\nimport { fetchLockById } from '../graphql/queries/fetchLockById';\n\nexport type Lock = {\n\tid: string;\n\tlock_id: string;\n\tchain_state?: Record<string, any>;\n\tnft_type: string;\n\ttype: string;\n\tstate: string;\n\tmaker_price: bigint;\n\tmaker: string;\n\tcollection_id: string;\n\texpire_in: number;\n\tnft?: {\n\t\tid: string;\n\t\ttoken_id: string;\n\t};\n};\n\nexport const getLockById = async (lockId: string): Promise<Lock | undefined> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchLockById,\n\t\tvariables: { lockId },\n\t});\n\n\treturn res?.locks?.[0] ?? undefined;\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 { 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 { SUI_CLOCK_OBJECT_ID } from '@mysten/sui.js/utils';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport { TRADEPORT_PRICE_LOCK_PACKAGE, TRADEPORT_PRICE_LOCK_STORE } from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchBidsById } from '../../graphql/queries/fetchBidsById';\nimport { getLockById } from '../../helpers/getLockById';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getNativeKioskTransferPoliciesByNftType } from '../../helpers/kiosk/getNativeKioskTransferPoliciesByNftType';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { resolveTransferPolicies } from '../../helpers/kiosk/resolveTransferPolicies';\nimport { isOriginByteBid } from '../../helpers/originByte/isOriginByteBid';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { getObjectType } from '../../helpers/rpc/getObjectType';\nimport { acceptCollectionBid } from '../acceptCollectionBid/acceptCollectionBid';\n\nexport type ExerciseLongLocks = {\n\twalletAddress: string;\n\ttransaction?: Transaction;\n\tlocks: Array<{\n\t\tid: string;\n\t\tbidId?: string;\n\t}>;\n};\n\nexport async function exerciseLongLocks(\n\t{ walletAddress, transaction, locks }: ExerciseLongLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst tx = transaction ?? new Transaction();\n\n\tfor (const { id: lockId, bidId } of locks) {\n\t\tconst lock = await getLockById(lockId);\n\n\t\tif (!transaction && lock.state !== 'bought') {\n\t\t\tthrow new Error('Lock must be in bought state');\n\t\t}\n\n\t\tconst transferPolicies = await getNativeKioskTransferPoliciesByNftType(lock.nft_type);\n\t\tconst transferPolicy = transferPolicies?.at(0);\n\t\tif (!transferPolicy) {\n\t\t\tthrow new Error(`Transfer policy is not found for ${lock.nft_type}`);\n\t\t}\n\n\t\tconst transferPolicyId = transferPolicy?.id;\n\n\t\tawait kioskTxWrapper({\n\t\t\ttx,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tkioskOwner: walletAddress,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tif (!lock.nft?.token_id) {\n\t\t\t\t\tthrow new Error(`The long lock ${lockId} must have nft to be exercised`);\n\t\t\t\t}\n\n\t\t\t\tlet bid: { price: bigint; nft: { token_id: string }; nonce: string; type: string } = null;\n\t\t\t\tif (bidId) {\n\t\t\t\t\tconst res = await gqlChainRequest({\n\t\t\t\t\t\tchain: 'sui',\n\t\t\t\t\t\tquery: fetchBidsById,\n\t\t\t\t\t\tvariables: { bidIds: [bidId] },\n\t\t\t\t\t});\n\t\t\t\t\tbid = res.bids.find((bid: { status: string; type: string }) => bid.status === 'active');\n\t\t\t\t\tif (!bid) {\n\t\t\t\t\t\tthrow new Error(`Active bid ${bidId} is missing for ${lock.nft_type}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (bid) {\n\t\t\t\t\tconst bidType = await getObjectType({\n\t\t\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\t\t\tobjectId: bid?.nonce,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (isOriginByteBid(bidType) && isOriginByteCollection(transferPolicies)) {\n\t\t\t\t\t\tthrow new Error(`The bid ${bidId} must be for native kiosks`);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!lock.chain_state.makerKioskId) {\n\t\t\t\t\tthrow new Error('Missing makerKioskId in the lock data');\n\t\t\t\t}\n\n\t\t\t\tconst marketplaceFee = BigInt(\n\t\t\t\t\tgetMarketFeePrice({\n\t\t\t\t\t\tprice: Number(lock.maker_price),\n\t\t\t\t\t\tcollectionId: lock.collection_id,\n\t\t\t\t\t}),\n\t\t\t\t);\n\n\t\t\t\tconst [transferRequest, confirmLockRequest] = tx.moveCall({\n\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::start_confirm_long_lock`,\n\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\ttx.object(SUI_CLOCK_OBJECT_ID),\n\t\t\t\t\t\ttx.pure.id(lock.lock_id),\n\t\t\t\t\t\ttx.object(lock.chain_state.makerKioskId),\n\t\t\t\t\t\ttx.object((kioskTx.kiosk as any).value ?? kioskTx.kiosk),\n\t\t\t\t\t\ttx.object((kioskTx.kioskCap as any).value ?? kioskTx.kioskCap),\n\t\t\t\t\t\ttx.object(transferPolicyId),\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\tawait resolveTransferPolicies({\n\t\t\t\t\ttx,\n\t\t\t\t\ttransferPolicies,\n\t\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\t\twalletAddress,\n\t\t\t\t\tkioskTx,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tnftType: lock.nft_type,\n\t\t\t\t\tprice: '0',\n\t\t\t\t\ttransferRequest,\n\t\t\t\t\tshouldSkipKioskLocking: true,\n\t\t\t\t});\n\t\t\t\tif (bid) {\n\t\t\t\t\tconst beforeResolveKioskTransferRequest = (coin: any, transferRequest: any) => {\n\t\t\t\t\t\tconst [makerRewardWithFee] = tx.splitCoins(coin, [\n\t\t\t\t\t\t\tBigInt(lock.maker_price) + marketplaceFee,\n\t\t\t\t\t\t]);\n\n\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::end_confirm_long_lock_with_bid`,\n\t\t\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\t\t\tconfirmLockRequest,\n\t\t\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\t\t\tmakerRewardWithFee,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\t\t\t\t\t};\n\n\t\t\t\t\tswitch (bid.type) {\n\t\t\t\t\t\t// case 'solo': {\n\t\t\t\t\t\t// \tawait acceptNftBids(\n\t\t\t\t\t\t// \t\t{ bidIds: [bidId], tx, kioskTx, beforeResolveKioskTransferRequest },\n\t\t\t\t\t\t// \t\tcontext,\n\t\t\t\t\t\t// \t);\n\t\t\t\t\t\t// \tbreak;\n\t\t\t\t\t\t// }\n\n\t\t\t\t\t\tcase 'collection': {\n\t\t\t\t\t\t\tawait acceptCollectionBid(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbid,\n\t\t\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\t\t\tnftId: lock.nft?.id,\n\t\t\t\t\t\t\t\t\twalletAddress,\n\t\t\t\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\t\t\t\tbeforeResolveKioskTransferRequest,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tthrow new Error(`Unsupported bid type ${bid.type}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst [makerRewardWithFee] = tx.splitCoins(tx.gas, [\n\t\t\t\t\t\tBigInt(lock.maker_price) + marketplaceFee,\n\t\t\t\t\t]);\n\n\t\t\t\t\tconst [transferRequest] = tx.moveCall({\n\t\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::end_confirm_long_lock`,\n\t\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\t\tconfirmLockRequest,\n\t\t\t\t\t\t\ttx.object((kioskTx.kiosk as any).value ?? kioskTx.kiosk),\n\t\t\t\t\t\t\tmakerRewardWithFee,\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\n\t\t\t\t\tawait resolveTransferPolicies({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\ttransferPolicies,\n\t\t\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\t\t\twalletAddress,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\t\tnftType: lock.nft_type,\n\t\t\t\t\t\tprice: lock.maker_price.toString(),\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\tshouldSkipKioskLocking: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\treturn tx;\n}\n","import { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport { buyLocks } from '../buyLocks/buyLocks';\nimport { exerciseShortLocks } from '../exerciseShortLocks/exerciseShortLocks';\n\nexport type BuyAndExerciseShortLocks = {\n\twalletAddress: string;\n\tlocks: Array<{\n\t\tid: string;\n\t\tnftId: string;\n\t}>;\n\ttx?: Transaction;\n};\n\nexport async function buyAndExerciseShortLocks(\n\t{ walletAddress, locks, tx: existingTx }: BuyAndExerciseShortLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst transaction = existingTx ?? new Transaction();\n\n\tawait buyLocks({ lockIds: locks?.map((lock) => lock?.id), transaction }, context);\n\tawait exerciseShortLocks({ locks, walletAddress, transaction }, context);\n\n\treturn transaction;\n}\n","import { SUI_CLOCK_OBJECT_ID } from '@mysten/sui.js/utils';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tTRADEPORT_KIOSK_TRANSFERS_STORE,\n\tTRADEPORT_PRICE_LOCK_PACKAGE,\n\tTRADEPORT_PRICE_LOCK_STORE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchListingsById } from '../../graphql/queries/fetchListingsById';\nimport { fetchNftById } from '../../graphql/queries/fetchNftsById';\nimport { getLockById } from '../../helpers/getLockById';\nimport { getNativeKioskTransferPoliciesByNftType } from '../../helpers/kiosk/getNativeKioskTransferPoliciesByNftType';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { resolveTransferPolicies } from '../../helpers/kiosk/resolveTransferPolicies';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { buyListings } from '../buyListings/buyListings';\n\nexport type ExerciseShortLocks = {\n\twalletAddress: string;\n\ttransaction?: Transaction;\n\tlocks: Array<{\n\t\tid: string;\n\t\tlistingId?: string;\n\t\tnftId?: string;\n\t}>;\n};\n\nexport async function exerciseShortLocks(\n\t{ walletAddress, transaction, locks }: ExerciseShortLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst tx = transaction ?? new Transaction();\n\n\tfor (const { id: lockId, listingId, nftId: nftIdArg } of locks) {\n\t\tconst lock = await getLockById(lockId);\n\n\t\tif (!transaction && lock.state !== 'bought') {\n\t\t\tthrow new Error('Lock must be in bought state');\n\t\t}\n\n\t\tconst transferPolicies = await getNativeKioskTransferPoliciesByNftType(lock.nft_type);\n\t\tconst transferPolicy = transferPolicies?.at(0);\n\t\tif (!transferPolicy) {\n\t\t\tthrow new Error(`Transfer policy is not found for ${lock.nft_type}`);\n\t\t}\n\n\t\tif (lock.nft?.token_id) {\n\t\t\tthrow new Error(`The short lock ${lockId} must not have any nft`);\n\t\t}\n\n\t\tlet listing: {\n\t\t\tprice: bigint;\n\t\t\tnft: { id: string; token_id: string; chain_state: { kiosk_id: string } };\n\t\t\tnonce: string;\n\t\t} = null;\n\n\t\tif (listingId) {\n\t\t\tconst res = await gqlChainRequest({\n\t\t\t\tchain: 'sui',\n\t\t\t\tquery: fetchListingsById,\n\t\t\t\tvariables: { listingIds: [listingId] },\n\t\t\t});\n\n\t\t\tlisting = res.listings[0];\n\t\t\tif (!listing) {\n\t\t\t\tthrow new Error(`Missing listing ${listingId}`);\n\t\t\t}\n\t\t}\n\n\t\tlet nftId = nftIdArg;\n\t\tif (listing) {\n\t\t\tif (nftIdArg && listing.nft.id !== nftIdArg) {\n\t\t\t\tthrow new Error(`The listing ${listingId} must be for token ${listing.nft.token_id}`);\n\t\t\t}\n\n\t\t\tif (!nftIdArg) {\n\t\t\t\tnftId = listing.nft.id;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(listing.nonce && isOriginByteCollection(transferPolicies)) ||\n\t\t\t\t!listing.nft?.chain_state?.kiosk_id\n\t\t\t) {\n\t\t\t\tthrow new Error(`The listing ${listingId} must be for native kiosk`);\n\t\t\t}\n\t\t}\n\n\t\tif (!nftId) {\n\t\t\tthrow new Error(`nftId is required for shorts`);\n\t\t}\n\n\t\tconst nft: { id: string; token_id: string; owner: string; chain_state: { kiosk_id: string } } =\n\t\t\t(\n\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\tchain: 'sui',\n\t\t\t\t\tquery: fetchNftById,\n\t\t\t\t\tvariables: { nftId },\n\t\t\t\t})\n\t\t\t)?.nfts?.[0];\n\n\t\tif (!nft) {\n\t\t\tthrow new Error(`No nft ${nftId} found`);\n\t\t}\n\n\t\tif (!listing && nft.owner !== walletAddress) {\n\t\t\tthrow new Error(`The nft ${nftId} must be owned by ${walletAddress}`);\n\t\t}\n\n\t\tawait kioskTxWrapper({\n\t\t\ttx,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tkioskOwner: walletAddress,\n\t\t\tkiosk: nftIdArg ? nft?.chain_state?.kiosk_id : null,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tconst [coin, confirmLockRequest] = tx.moveCall({\n\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::start_confirm_short_lock`,\n\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\ttx.object(SUI_CLOCK_OBJECT_ID),\n\t\t\t\t\t\ttx.pure.id(lock.lock_id),\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\tif (listing) {\n\t\t\t\t\tconst beforeResolveKioskTransferRequest = async (transferRequest: any) => {\n\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::end_confirm_short_lock_with_listing`,\n\t\t\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_STORE),\n\t\t\t\t\t\t\t\tconfirmLockRequest,\n\t\t\t\t\t\t\t\ttx.object((kioskTx.kiosk as any).value ?? kioskTx.kiosk),\n\t\t\t\t\t\t\t\ttx.object((kioskTx.kioskCap as any).value ?? kioskTx.kioskCap),\n\t\t\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\t\t\ttx.object(transferPolicy?.id),\n\t\t\t\t\t\t\t\ttx.object(coin),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\ttx.transferObjects(\n\t\t\t\t\t\t\t[tx.object(coin)],\n\t\t\t\t\t\t\ttx.pure.address(addLeadingZerosAfter0x(walletAddress)),\n\t\t\t\t\t\t);\n\t\t\t\t\t};\n\n\t\t\t\t\tawait buyListings(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlistingIds: [listingId],\n\t\t\t\t\t\t\twalletAddress,\n\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\t\tcoinToSplit: coin,\n\t\t\t\t\t\t\tbeforeResolveKioskTransferRequest,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst [transferRequest] = tx.moveCall({\n\t\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::end_confirm_short_lock`,\n\t\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_STORE),\n\t\t\t\t\t\t\tconfirmLockRequest,\n\t\t\t\t\t\t\ttx.object((kioskTx.kiosk as any).value ?? kioskTx.kiosk),\n\t\t\t\t\t\t\ttx.object((kioskTx.kioskCap as any).value ?? kioskTx.kioskCap),\n\t\t\t\t\t\t\ttx.pure.address(nft?.token_id),\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\t\t\t\t\tawait resolveTransferPolicies({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\ttransferPolicies,\n\t\t\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\t\t\twalletAddress,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\t\tnftType: lock.nft_type,\n\t\t\t\t\t\tprice: lock.maker_price.toString(),\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\tshouldSkipKioskLocking: true,\n\t\t\t\t\t\tcoinToSplit: coin,\n\t\t\t\t\t});\n\n\t\t\t\t\ttx.transferObjects(\n\t\t\t\t\t\t[tx.object(coin)],\n\t\t\t\t\t\ttx.pure.address(addLeadingZerosAfter0x(walletAddress)),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\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\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 { 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 { getSharedObjects } from '../../helpers/getSharedObjects';\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\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};\n\ntype NormalBuyTx = {\n\tnftTokenIds?: never;\n} & BuyTxBase;\n\nexport type TocenBuyTx = {\n\tnftTokenIds: string[];\n} & BuyTxBase;\n\nexport type BuyTx = (NormalBuyTx | TocenBuyTx) & {\n\tcoinToSplit?: any;\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\tconst tocenTokenIds: string[] = [];\n\tlet tocenNftType = '';\n\tlet tocenTotalPrice = 0;\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};\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\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 { 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 { 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_KIOSK_LISTING_STORE,\n\tTRADEPORT_LISTING_STORE,\n} from '../../constants';\nimport { getCommissionByNftContractId } from '../../graphql/queries/getCommissionByListingId';\nimport { destroyZeroCoin } from '../../helpers/destroyZeroCoin';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { assertNftInSharedKiosk } from '../../helpers/kiosk/assertNftInSharedKiosk';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\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 { splitCoins } from '../../helpers/splitCoins';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { type BuyTx, type TocenBuyTx } from './buyListings';\n\nexport function addTradePortBuyTx({ tx, nftType, listingNonce, price, sharedObjects }: BuyTx) {\n\tconst [coin] = splitCoins({ tx, amounts: [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 addTradeportKioskBuyTx = async ({\n\ttx,\n\ttransferPolicies,\n\tkioskTx,\n\tsuiClient,\n\tkioskClient,\n\tnftType,\n\tnftTokenId,\n\tprice,\n\tsellerKiosk,\n\tseller,\n\tcoinToSplit,\n\tbeforeResolveKioskTransferRequest,\n}: BuyTx) => {\n\tawait assertNftInSharedKiosk({ kioskId: sellerKiosk, walletAddress: seller });\n\n\tconst response = await suiClient.getDynamicFieldObject({\n\t\tparentId: TRADEPORT_KIOSK_LISTING_STORE,\n\t\tname: { type: '0x2::object::ID', value: nftTokenId },\n\t});\n\tif (response.error?.code === 'dynamicFieldNotFound') {\n\t\tthrow new Error(`Not found kiosk listing object of token ${nftTokenId}`);\n\t}\n\n\tconst coin = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [\n\t\ttx.pure.u64(price + Number((response.data.content as any).fields.commission)),\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(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});\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}: BuyTx) {\n\tawait assertNftInSharedKiosk({ kioskId: sellerKiosk, walletAddress: seller });\n\n\tconst { orderbook } = sharedObjects;\n\tconst { kiosk: buyerKiosk, isNewKiosk: isNewBuyerKiosk } = await getOrCreateOBKiosk({\n\t\ttx,\n\t\taddress: buyer,\n\t});\n\tconst [coin] = splitCoins({ tx, amounts: [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\tawait shareOriginByteKiosk({ 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}: BuyTx) => {\n\tawait assertNftInSharedKiosk({ kioskId: sellerKiosk, walletAddress: seller });\n\n\tconst [coin] = splitCoins({ tx, amounts: [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];\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 }: BuyTx) {\n\tconst [coin] = splitCoins({ tx, amounts: [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}: BuyTx) {\n\tawait assertNftInSharedKiosk({ kioskId: sellerKiosk, walletAddress: seller });\n\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [coin1, coin2] = splitCoins({\n\t\ttx,\n\t\tamounts: [tx.pure.u64(price), tx.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(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}: BuyTx) {\n\tconst [coin] = splitCoins({ tx, amounts: [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({ tx, sharedObjects, nftTokenId, nftType, price }: BuyTx) {\n\tconst [coin] = splitCoins({ tx, amounts: [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}: BuyTx) {\n\tconst { keepsakeRoyaltyStrategy } = sharedObjects;\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [coin1, coin2] = splitCoins({\n\t\ttx,\n\t\tamounts: [\n\t\t\ttx.pure.u64(price),\n\t\t\ttx.pure.u64((price * Number(royalty)) / 100 + price * Number(royalty) * 0.00005),\n\t\t],\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 }: TocenBuyTx) => {\n\tconst [coin] = splitCoins({ tx, amounts: [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\tif (txData?.listingNonce && isOriginByteCollection(txData?.transferPolicies)) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\tawait addOriginByteBuyTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\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 = await getSharedObjects(txData?.nftType);\n\t\t\taddTradePortBuyTx({ ...txData, sharedObjects });\n\t\t\treturn;\n\t\t}\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\tkioskTx: txData?.kioskTx,\n\t\t\tkioskOwner: txData?.buyer,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addTradeportKioskBuyTx({\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 = await getSharedObjects(txData?.nftType);\n\taddTradePortBuyTx({ ...txData, sharedObjects });\n}\n\nexport async function addHyperspaceBuyTxHandler(txData: BuyTx) {\n\tif (txData?.listingNonce && isOriginByteCollection(txData?.transferPolicies)) {\n\t\tconst sharedObjects = 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\tkioskTx: txData?.kioskTx,\n\t\tkioskOwner: txData?.buyer,\n\t\tkiosk: txData?.sellerKiosk,\n\t\tshouldConvertToPersonalKiosk: true,\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 = 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\tkioskTx: txData?.kioskTx,\n\t\t\tkioskOwner: txData?.buyer,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldConvertToPersonalKiosk: true,\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 { 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 { SUI_CLOCK_OBJECT_ID } from '@mysten/sui.js/utils';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_PRICE_LOCK_PACKAGE, TRADEPORT_PRICE_LOCK_STORE } from '../../constants';\nimport { getLockById } from '../../helpers/getLockById';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport type { RequestContext } from '../../SuiTradingClient';\n\nexport type CancelLocks = {\n\tlockIds: string[];\n\twalletAddress: string;\n\ttx?: Transaction;\n};\n\nexport async function cancelLocks(\n\t{ lockIds, walletAddress, tx: existingTx }: CancelLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst tx = existingTx ?? new Transaction();\n\n\tfor (const lockId of lockIds) {\n\t\tconst lock = await getLockById(lockId);\n\t\tif (!lock) {\n\t\t\tthrow new Error(`Lock ${lockId} is not found`);\n\t\t}\n\n\t\tif (!['active', 'expired'].includes(lock.state)) {\n\t\t\tthrow new Error(`Lock ${lockId} is not in state active or expired`);\n\t\t}\n\n\t\tawait kioskTxWrapper({\n\t\t\ttx,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tkioskOwner: walletAddress,\n\t\t\tkiosk: lock?.chain_state?.makerKioskId,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::cancel_lock`,\n\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\ttx.object(SUI_CLOCK_OBJECT_ID),\n\t\t\t\t\t\ttx.pure.id(lock.lock_id),\n\t\t\t\t\t\ttx.object((kioskTx.kiosk as any).value ?? kioskTx.kiosk),\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\treturn tx;\n}\n","import { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_MULTI_BID_PACKAGE, TRADEPORT_MULTI_BID_STORE } from '../../constants';\nimport { fetchMultibidChainIdById } from '../../graphql/queries/fetchMultibidById';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\n\nexport interface CancelMultiBid {\n\twalletAddress: string;\n\tmultiBidId: string;\n}\n\nexport async function cancelMultiBid({ multiBidId }: CancelMultiBid): Promise<Transaction> {\n\tconst { chain_id: multiBidChainId, cancelled_at } =\n\t\t(\n\t\t\tawait gqlChainRequest({\n\t\t\t\tchain: 'sui',\n\t\t\t\tquery: fetchMultibidChainIdById,\n\t\t\t\tvariables: { multiBidId },\n\t\t\t})\n\t\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\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 { 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 { 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};\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\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\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\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\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 { fetchKiosksByOwner } from '../../graphql/queries/fetchKiosksByOwner';\nimport { fetchNftsById } from '../../graphql/queries/fetchNftsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\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\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\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\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 kiosksByOwnerRes = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchKiosksByOwner,\n\t\tvariables: { ownerAddress: addLeadingZerosAfter0x(walletAddress) },\n\t});\n\tconst walletAddressKiosks = kiosksByOwnerRes?.kiosks;\n\n\tlet globalKioskTx: any;\n\tfor (const nft of res.nfts) {\n\t\tlet existingKioskTx;\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};\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\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\tkioskOwnerKiosks: walletAddressKiosks,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tkioskTx: globalKioskTx,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tshouldSkipFinalize: true,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\texistingKioskTx = 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\tglobalKioskTx = existingKioskTx;\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\tkioskOwnerKiosks: walletAddressKiosks,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tkioskTx: globalKioskTx,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tshouldSkipFinalize: true,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\texistingKioskTx = 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\tkioskOwnerKiosks: walletAddressKiosks,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tkioskTx: globalKioskTx,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\t\tshouldSkipFinalize: true,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\texistingKioskTx = 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\tglobalKioskTx = existingKioskTx;\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};\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\tkioskOwnerKiosks: walletAddressKiosks,\n\t\t\t\t\tkioskStrategy: 'exclude',\n\t\t\t\t\tkioskTx: globalKioskTx,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tshouldSkipFinalize: true,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\texistingKioskTx = 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\tkioskOwnerKiosks: walletAddressKiosks,\n\t\t\t\t\tkioskStrategy: 'exclude',\n\t\t\t\t\tkioskTx: globalKioskTx,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tshouldSkipFinalize: true,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\texistingKioskTx = 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\n\t\tglobalKioskTx = existingKioskTx;\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: 'CLAIM_NFTS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\tglobalKioskTx?.finalize();\n\treturn Transaction.from(tx);\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_PRICE_LOCK_PACKAGE, TRADEPORT_PRICE_LOCK_STORE } from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftById } from '../../graphql/queries/fetchNftsById';\nimport { calculatePremium } from '../../helpers/calculatePremium';\nimport { calculateRoyaltyFee } from '../../helpers/calculateRoyaltyFee';\nimport { getActiveLockStateByNftId } from '../../helpers/getActiveLockStateByNftId';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport type { RequestContext } from '../../SuiTradingClient';\nimport { cancelLocks } from '../cancelLocks/cancelLocks';\n\nexport interface CreateLongLocks {\n\twalletAddress: string;\n\tnfts: Array<{\n\t\tid: string;\n\t\tpriceInMist: number;\n\t}>;\n}\n\nexport async function createLongLocks(\n\t{ walletAddress, nfts }: CreateLongLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\t// the current version of smart contract support only these values valid now\n\tconst expireIn = 7 * 24 * 3600 * 1000;\n\n\tconst tx = new Transaction();\n\n\tfor (const argNft of nfts) {\n\t\tconst existingLock = await getActiveLockStateByNftId(argNft.id);\n\t\tif (existingLock) {\n\t\t\tif (existingLock.state === 'bought') {\n\t\t\t\tthrow new Error(`Nft ${argNft.id} is used by the lock ${existingLock.id}`);\n\t\t\t}\n\n\t\t\tawait cancelLocks({ lockIds: [existingLock.id], walletAddress, tx }, context);\n\t\t}\n\n\t\tconst premium = calculatePremium(BigInt(argNft.priceInMist));\n\n\t\tconst nft = (\n\t\t\tawait gqlChainRequest({\n\t\t\t\tchain: 'sui',\n\t\t\t\tquery: fetchNftById,\n\t\t\t\tvariables: { nftId: argNft.id },\n\t\t\t})\n\t\t)?.nfts?.[0];\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 = getNativeKioskTransferPolicies(\n\t\t\tnft?.collection?.chain_state?.transfer_policies,\n\t\t);\n\t\tconst transferPolicy = transferPolicies?.at(0);\n\t\tif (!transferPolicy) {\n\t\t\tthrow new Error(`Missing transfer policy for ${nftType}`);\n\t\t}\n\n\t\tconst royalty = calculateRoyaltyFee(transferPolicy.rules, BigInt(argNft.priceInMist));\n\n\t\tawait kioskTxWrapper({\n\t\t\ttx,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tkioskOwner: walletAddress,\n\t\t\tkiosk: nft?.chain_state?.kiosk_id,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::create_long_lock`,\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\ttx.pure(nft.token_id),\n\t\t\t\t\t\ttx.object((kioskTx.kiosk as any).value ?? kioskTx.kiosk),\n\t\t\t\t\t\ttx.object((kioskTx.kioskCap as any).value ?? kioskTx.kioskCap),\n\t\t\t\t\t\ttx.pure.u64(BigInt(argNft.priceInMist)),\n\t\t\t\t\t\ttx.pure.u64(\n\t\t\t\t\t\t\tBigInt(\n\t\t\t\t\t\t\t\tgetMarketFeePrice({\n\t\t\t\t\t\t\t\t\tprice: Number(argNft.priceInMist),\n\t\t\t\t\t\t\t\t\tcollectionId: nft.collection_id,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttx.pure.u64(royalty),\n\t\t\t\t\t\ttx.pure.u64(premium),\n\t\t\t\t\t\ttx.pure.u64(expireIn),\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\treturn tx;\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchActiveLockStateByNftId = gql`\n\tquery fetchActiveLockStateByNftId($nftId: uuid!) {\n\t\tlocks(\n\t\t\twhere: {\n\t\t\t\tstate: { _nin: [\"exercised\", \"canceled\", \"confirmed\"] }\n\t\t\t\tnft_meta_id: { _eq: $nftId }\n\t\t\t}\n\t\t) {\n\t\t\tid\n\t\t\tstate\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../graphql/gqlChainRequest';\nimport { type Lock } from './getLockById';\nimport { fetchActiveLockStateByNftId } from '../graphql/queries/fetchActiveLockStateByNftId';\n\nexport const getActiveLockStateByNftId = async (\n\tnftId: string,\n): Promise<Pick<Lock, 'id' | 'state'>> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchActiveLockStateByNftId,\n\t\tvariables: { nftId },\n\t});\n\n\treturn res?.locks?.[0] ?? undefined;\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\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 { fetchMultibidChainIdById } from '../../graphql/queries/fetchMultibidById';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\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}\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 = 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(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 { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_PRICE_LOCK_PACKAGE, TRADEPORT_PRICE_LOCK_STORE } from '../../constants';\nimport { calculatePremium } from '../../helpers/calculatePremium';\nimport { calculateRoyaltyFee } from '../../helpers/calculateRoyaltyFee';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getNativeKioskTransferPoliciesByNftType } from '../../helpers/kiosk/getNativeKioskTransferPoliciesByNftType';\nimport type { RequestContext } from '../../SuiTradingClient';\n\nexport interface CreateShortLocks {\n\tnfts: Array<{\n\t\ttype: string;\n\t\tcollectionId: string;\n\t\tpriceInMist: number;\n\t}>;\n}\n\nexport async function createShortLocks(\n\t{ nfts }: CreateShortLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\t// the current version of smart contract support only these values valid now\n\tconst expireIn = 7 * 24 * 3600 * 1000;\n\n\tconst tx = new Transaction();\n\n\tfor (const argNft of nfts) {\n\t\tconst premium = calculatePremium(BigInt(argNft.priceInMist));\n\n\t\tif (!argNft.type) {\n\t\t\tthrow new Error('Missing nftType');\n\t\t}\n\n\t\tconst transferPolicy = (await getNativeKioskTransferPoliciesByNftType(argNft.type))?.at(0);\n\t\tif (!transferPolicy) {\n\t\t\tthrow new Error(`Missing transfer policy for ${argNft.type}`);\n\t\t}\n\n\t\tconst marketplaceFee = BigInt(\n\t\t\tgetMarketFeePrice({\n\t\t\t\tprice: Number(argNft.priceInMist),\n\t\t\t\tcollectionId: argNft.collectionId,\n\t\t\t}),\n\t\t);\n\n\t\tconst royalty = calculateRoyaltyFee(transferPolicy.rules, BigInt(argNft.priceInMist));\n\n\t\tconst [deposit] = tx.splitCoins(tx.gas, [\n\t\t\tBigInt(argNft.priceInMist) + royalty + marketplaceFee,\n\t\t]);\n\n\t\ttx.moveCall({\n\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::create_short_lock`,\n\t\t\ttypeArguments: [argNft.type],\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\ttx.pure.u64(BigInt(argNft.priceInMist)),\n\t\t\t\ttx.pure.u64(marketplaceFee),\n\t\t\t\ttx.pure.u64(royalty),\n\t\t\t\ttx.pure.u64(premium),\n\t\t\t\ttx.pure.u64(expireIn),\n\t\t\t\tdeposit,\n\t\t\t],\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 { relistNft } from '../relistNft/relistNft';\nimport { addTradePortListTxHandler } from './addListTxs';\nimport { normalizeSuiAddress } from '@mysten/sui/utils';\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};\n\nexport type ListNft = {\n\tnftId: string;\n\tlistPriceInMist: number;\n\twalletAddress: string;\n};\n\nexport type ListNfts = {\n\tnfts: Array<{\n\t\tid: string;\n\t\tlistPriceInMist: number;\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\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\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// The NFT owner can also relist expired bids\n\t\tif (\n\t\t\tnft?.listed ||\n\t\t\tnft.listings.some(\n\t\t\t\t(listing: { nonce?: string; seller?: string }) =>\n\t\t\t\t\tlisting.nonce &&\n\t\t\t\t\tlisting.seller &&\n\t\t\t\t\tnormalizeSuiAddress(listing.seller) === normalizeSuiAddress(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\ttransferPolicies,\n\t\t\t\tnft,\n\t\t\t\tlistPrice: nfts?.find((n) => n.id === nft?.id)?.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\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: nfts?.find((n) => n.id === nft?.id)?.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\tnftsForTracking.push({\n\t\t\twalletAddress,\n\t\t\tnftType,\n\t\t\tcollectionId: nft?.collection_id,\n\t\t\tlistPrice: nfts?.find((n) => n.id === nft?.id)?.listPriceInMist,\n\t\t\tisRelist: nft?.listed,\n\t\t\tmarketRelistedFrom: nft?.listings?.[0]?.market_name,\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: 'LIST_NFTS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import {\n\tORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK,\n\tTRADEPORT_BENEFICIARY_ADDRESS,\n\tTRADEPORT_KIOSK_LISTING_STORE,\n\tTRADEPORT_LISTING_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 { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\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 { 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}: ListNftTx) {\n\tconst { orderbook } = sharedObjects;\n\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: sellerKiosk,\n\t\twalletAddress: seller,\n\t});\n\n\tconst { kiosk, isNewKiosk } = await getOrCreateOBKiosk({\n\t\ttx,\n\t\taddress: seller,\n\t\tkioskToUseIfExists: sellerKiosk,\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\tawait shareOriginByteKiosk({ tx, kiosk });\n\t}\n}\n\nexport function addTradePortListTx({\n\ttx,\n\tnftTokenId,\n\tborrowedItem,\n\tnftType,\n\tcollectionId,\n\tlistPrice,\n}: ListNftTx) {\n\tconst marketFeePrice = getMarketFeePrice({ price: listPrice, collectionId });\n\n\ttx.moveCall({\n\t\ttarget: '0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::listings::list',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTING_STORE),\n\t\t\tborrowedItem ? tx.object(borrowedItem) : tx.object(nftTokenId),\n\t\t\ttx.pure.u64(listPrice),\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\nexport async function addTradePortKioskListTx({\n\ttx,\n\tkioskTx,\n\ttransferPolicies,\n\tnftTokenId,\n\tnftType,\n\tcollectionId,\n\tlistPrice,\n}: ListNftTx) {\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\tconst marketFeePrice = getMarketFeePrice({ price: listPrice, collectionId });\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_listings::list',\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\ttx.pure.u64(listPrice + marketFeePrice),\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\nexport async function addTradePortListTxHandler(txData: ListNftTx) {\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\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\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\tasync runCommands(kioskTx) {\n\t\t\t\tawait addTradePortKioskListTx({\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 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\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 addTradePortKioskListTx({\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\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_BENEFICIARY_ADDRESS,\n\tTRADEPORT_LISTING_STORE,\n} from '../../constants';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\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({\n\ttx,\n\tnftType,\n\tcollectionId,\n\tlistingNonce,\n\tlistPrice,\n}: RelistNftTx) {\n\tconst marketFeePrice = getMarketFeePrice({ price: listPrice, collectionId });\n\n\ttx.moveCall({\n\t\ttarget: '0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::listings::relist',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTING_STORE),\n\t\t\ttx.pure.address(listingNonce),\n\t\t\ttx.pure.u64(listPrice),\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\nexport function addBlueMoveRelistTx(txData: RelistNftTx) {\n\tconst { tx, nftTokenId, nftType, listPrice, suiClient } = 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, suiClient });\n}\n\nexport function addTocenRelistTx(txData: RelistNftTx) {\n\tconst { tx, nftTokenId, nftType, listPrice, suiClient } = 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, suiClient });\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 { isNonKioskListing } from '../../helpers/isNonKioskListing';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { addTradePortKioskListTx, addTradePortListTxHandler } from '../listNfts/addListTxs';\nimport {\n\taddBlueMoveRelistTx,\n\taddTocenRelistTx,\n\taddTradePortRelistTx,\n} from '../listNfts/addRelistTxs';\nimport {\n\taddBluemoveUnlistTxHandler,\n\taddClutchyUnlistTxHandler,\n\taddHyperspaceUnlistTxHandler,\n\taddTradePortKioskUnlistTx,\n\taddTradePortUnlistTxHandler,\n} from '../unlistListings/addUnlistListingTxs';\nimport { type UnlistListingTx } from '../unlistListings/unlistListings';\n\ninterface Args {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\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\tnft,\n\tlistPrice,\n\ttransferPolicies,\n\twalletAddress,\n}: Args) {\n\tconst txData: UnlistListingTx = {\n\t\ttx,\n\t\tsuiClient,\n\t\tkioskClient,\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: nft?.listings?.[0]?.nonce,\n\t\tprice: nft?.listings?.[0]?.price,\n\t\tsellerKiosk: nft?.chain_state?.kiosk_id,\n\t\tcollectionId: nft?.collection_id,\n\t\tseller: walletAddress,\n\t};\n\n\tswitch (nft?.listings?.[0]?.market_name) {\n\t\tcase 'tradeport':\n\t\t\tif (\n\t\t\t\t(!isOriginByteCollection(txData?.transferPolicies) ||\n\t\t\t\t\tORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))) &&\n\t\t\t\ttxData?.listingNonce &&\n\t\t\t\t(await isNonKioskListing({\n\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\tlistingNonce: txData?.listingNonce,\n\t\t\t\t}))\n\t\t\t) {\n\t\t\t\taddTradePortRelistTx({ ...txData, listPrice });\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\ttxData?.listingNonce &&\n\t\t\t\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t\t\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t\t\t\t) {\n\t\t\t\t\tawait addTradePortUnlistTxHandler(txData);\n\t\t\t\t\tawait addTradePortListTxHandler({\n\t\t\t\t\t\t...txData,\n\t\t\t\t\t\tlistPrice,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\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\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addTradePortKioskUnlistTx({\n\t\t\t\t\t\t\t...txData,\n\t\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tawait addTradePortKioskListTx({\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\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 { 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 { 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\tlet globalKioskTx: any;\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\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\tkioskTx: globalKioskTx,\n\t\t\t\tshouldSkipFinalize: true,\n\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\texistingKioskTx = 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\n\t\t\tglobalKioskTx = existingKioskTx;\n\t\t}\n\t}\n\n\tglobalKioskTx?.finalize();\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 { type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport {\n\tMYSTEN_TRANFER_POLICY_RULES_PACKAGE_ID,\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 { 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}: TransferNftTx) {\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: senderKiosk,\n\t\twalletAddress: senderAddress,\n\t});\n\n\tconst recipientOBKiosk = await getOBKiosk(recipientAddress);\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},\n\tnfts: any[],\n\tsuiClient: SuiClient,\n) {\n\tconst { tx, recipientAddress, kioskClient, senderAddress } = txData;\n\tif (nfts.length === 0) {\n\t\treturn;\n\t}\n\n\tconst [receiverKiosk, receiverKioskCap] = tx.moveCall({\n\t\ttarget: '0x2::kiosk::new',\n\t\targuments: [],\n\t});\n\tconst recipientAddressWithPrefix = addLeadingZerosAfter0x(recipientAddress);\n\ttx.moveCall({\n\t\ttarget: '0x2::kiosk::set_owner_custom',\n\t\targuments: [\n\t\t\ttx.object(receiverKiosk),\n\t\t\ttx.object(receiverKioskCap),\n\t\t\ttx.pure.address(recipientAddressWithPrefix),\n\t\t],\n\t});\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\tasync runCommands(kioskTx) {\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget:\n\t\t\t\t\t\t'0xd0ad5bf7ac7d372cdcfee5273d5e487dabad724040e089c626cba2a01127ccd6::kiosk_transfers::direct_transfer',\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.object(receiverKiosk),\n\t\t\t\t\t\ttx.object(receiverKioskCap),\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\ttx.transferObjects([receiverKioskCap], tx.pure.address(recipientAddressWithPrefix));\n\ttx.moveCall({\n\t\ttarget: '0x2::transfer::public_share_object',\n\t\targuments: [receiverKiosk],\n\t\ttypeArguments: ['0x2::kiosk::Kiosk'],\n\t});\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) => rule.type !== 'kiosk_lock_rule' && rule.type !== 'royalty_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 (!ruleNames.every((name) => name.startsWith(MYSTEN_TRANFER_POLICY_RULES_PACKAGE_ID))) {\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};\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 = existingTx ? Transaction.from(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};\n\n\t\tconst numOfBids = collections?.find((c) => c.id === collection?.id)?.numOfBids;\n\t\tconsole.log('txData', txData);\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\t\t\tconsole.log('sharedObjects', sharedObjects);\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\tawait shareOriginByteKiosk({ 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 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 { fetchMultibidChainIdById } 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';\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} = 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\tif (existingMultiBidChainId) {\n\t\tmultiBidChainId = existingMultiBidChainId;\n\t} else {\n\t\tconst { chain_id: chainId, cancelled_at } = 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: fetchMultibidChainIdById,\n\t\t\t\t\t\tvariables: { multiBidId },\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}\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 [coin] = tx.splitCoins(tx.gas, [multiBidChainId ? 0n : price + fee + royalty]);\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}: 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] = splitCoins({ tx, amounts: [tx.pure.u64(bidAmount + marketFeePrice)] });\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};\n\nexport type PlaceNftBid = {\n\tnftId: string;\n\tbidAmountInMist: number;\n\twalletAddress: string;\n\tmultiBidId?: string;\n\tmultiBidChainId?: any;\n\ttx?: Transaction | string;\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 = existingTx ? Transaction.from(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};\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 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 { 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';\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\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 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} 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 { takeAndBorrowNftFromKiosk } from '../../helpers/kiosk/takeAndBorrowNftFromKiosk';\nimport { isOBKiosk } from '../../helpers/originByte/isOBKiosk';\nimport { getAccountBalance } from '../../helpers/rpc/getAcountBalance';\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\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\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\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 inside kiosk and has no transfer policy rule, take it out of the kiosk and transfer it directly\n\t\tif (txData?.senderKiosk && !hasNativeKioskTransferPolicyRules(txData?.transferPolicies)) {\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\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 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\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\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{ tx, kioskClient: context.kioskClient, senderAddress: walletAddress, recipientAddress },\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\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 {\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\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};\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\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 && listing?.seller && normalizeSuiAddress(listing?.seller) === normalizeSuiAddress(walletAddress))) {\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\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\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\tconst kiosksWithProfit = kiosks.filter((kiosk: any) => kiosk.profits > 0);\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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1B,IAAM,0CAA0C;AAAA,EACtD;AACD;AAEO,IAAM,wCAAwC;AAE9C,IAAM,gCAAgC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;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":["import_client","import_graphql_request","import_graphql_request","import_graphql_request","import_transactions","import_graphql_request","import_graphql_request","import_utils","import_graphql_request","import_kiosk","rule","import_kiosk","import_graphql_request","import_graphql_request","import_kiosk","import_graphql_request","import_utils","import_utils","import_graphql_request","transferPolicies","sharedObjects","sharedObjects","import_transactions","import_graphql_request","ERROR_UNLIST_FIRST","import_transactions","import_utils","import_transactions","import_graphql_request","import_graphql_request","import_utils","import_transactions","bid","transferRequest","import_transactions","import_utils","import_transactions","import_graphql_request","import_transactions","import_bcs","import_graphql_request","sharedObjects","import_utils","import_transactions","import_transactions","import_transactions","import_graphql_request","import_transactions","import_transactions","import_graphql_request","import_transactions","import_transactions","import_transactions","import_transactions","import_utils","import_transactions","import_graphql_request","res","import_transactions","import_graphql_request","import_utils","bcs","import_graphql_request","import_transactions","nft","import_transactions","import_utils","import_utils","import_transactions","import_transactions","import_transactions","import_utils","import_kiosk","import_transactions","tx"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../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/resolveTransferPolicies.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/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/buyAndExerciseLongLocks/buyAndExerciseLongLocks.ts","../src/methods/buyLocks/buyLocks.ts","../src/helpers/calculatePremium.ts","../src/helpers/calculateRoyaltyFee.ts","../src/graphql/queries/fetchLockById.ts","../src/helpers/getLockById.ts","../src/helpers/getMarketFeePrice.ts","../src/graphql/queries/fetchTransferPoliciesByType.ts","../src/helpers/kiosk/getNativeKioskTransferPoliciesByNftType.ts","../src/methods/exerciseLongLocks/exerciseLongLocks.ts","../src/methods/buyAndExerciseShortLocks/buyAndExerciseShortLocks.ts","../src/methods/exerciseShortLocks/exerciseShortLocks.ts","../src/graphql/queries/fetchListingsById.ts","../src/methods/buyListings/buyListings.ts","../src/helpers/addThirdPartyTxFee.ts","../src/methods/buyListings/addBuyListingTxs.ts","../src/graphql/queries/fetchCommissionByListingId.ts","../src/graphql/queries/getCommissionByListingId.ts","../src/helpers/destroyZeroCoin.ts","../src/helpers/splitCoins.ts","../src/methods/cancelLocks/cancelLocks.ts","../src/methods/cancelMultiBid/cancelMultiBid.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/methods/claimNfts/addClaimNftsTxs.ts","../src/methods/createLongLocks/createLongLocks.ts","../src/graphql/queries/fetchActiveLockStateByNftId.ts","../src/helpers/getActiveLockStateByNftId.ts","../src/methods/createMultiBid/createMultiBid.ts","../src/methods/updateMultiBid/updateMultiBid.ts","../src/methods/createShortLocks/createShortLocks.ts","../src/methods/listNfts/listNfts.ts","../src/methods/listNfts/addListTxs.ts","../src/methods/listNfts/addRelistTxs.ts","../src/methods/relistNft/relistNft.ts","../src/methods/migrateNftsFromUnsharedToSharedKiosks/migrateNftsFromUnsharedToSharedKiosks.ts","../src/graphql/queries/fetchNftsByKioskId.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/addRemoveNftBidTxs.ts","../src/methods/removeNftBids/removeNftBids.ts","../src/methods/transferNfts/transferNfts.ts","../src/methods/unlistListings/unlistListings.ts","../src/methods/withdrawProfitsFromKiosks/withdrawProfitsFromKiosks.ts"],"sourcesContent":["import SuiTradingClient from './SuiTradingClient';\n\nexport { SuiTradingClient };\n","import { getFullnodeUrl } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport { type 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 {\n\tbuyAndExerciseLongLocks,\n\ttype BuyAndExerciseLongLocks,\n} from './methods/buyAndExerciseLongLocks/buyAndExerciseLongLocks';\nimport {\n\tbuyAndExerciseShortLocks,\n\ttype BuyAndExerciseShortLocks,\n} from './methods/buyAndExerciseShortLocks/buyAndExerciseShortLocks';\nimport { buyListings, type BuyListings } from './methods/buyListings/buyListings';\nimport { buyLocks, type BuyLocks } from './methods/buyLocks/buyLocks';\nimport { cancelLocks, type CancelLocks } from './methods/cancelLocks/cancelLocks';\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 { createLongLocks, type CreateLongLocks } from './methods/createLongLocks/createLongLocks';\nimport { createMultiBid, type CreateMultiBid } from './methods/createMultiBid/createMultiBid';\nimport {\n\tcreateShortLocks,\n\ttype CreateShortLocks,\n} from './methods/createShortLocks/createShortLocks';\nimport {\n\texerciseLongLocks,\n\ttype ExerciseLongLocks,\n} from './methods/exerciseLongLocks/exerciseLongLocks';\nimport {\n\texerciseShortLocks,\n\ttype ExerciseShortLocks,\n} from './methods/exerciseShortLocks/exerciseShortLocks';\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';\n\ntype ApiConfig = {\n\tapiUser: string;\n\tapiKey: string;\n\tsuiNodeUrl?: string;\n\tgraphQLClient?: GraphQLClient;\n};\nexport interface RequestContext {\n\tapiUser: string;\n\tapiKey: 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 suiClient: ReturnType<typeof createSuiClient>;\n\tprivate readonly kioskClient: ReturnType<typeof createKioskClient>;\n\tprivate readonly allowedApiUsersForUnsharedKiosksMigration = ['tradeport.xyz', 'mercato.xyz'];\n\n\tconstructor({ apiUser, apiKey, suiNodeUrl, graphQLClient }: ApiConfig) {\n\t\tthis.apiUser = apiUser;\n\t\tthis.apiKey = apiKey;\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}\n\n\t\tgetGraphqlClient().setHeaders({\n\t\t\t'x-api-user': apiUser,\n\t\t\t'x-api-key': apiKey,\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\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\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\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\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\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\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\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\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\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\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\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\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 createLongLocks(args: CreateLongLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 createLongLocks(args, context);\n\t}\n\n\tpublic async createShortLocks(args: CreateShortLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 createShortLocks(args, context);\n\t}\n\n\tpublic async cancelLocks(args: CancelLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 cancelLocks(args, context);\n\t}\n\n\tpublic async buyLocks(args: BuyLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 buyLocks(args, context);\n\t}\n\n\tpublic async exerciseLongLocks(args: ExerciseLongLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 exerciseLongLocks(args, context);\n\t}\n\n\tpublic async exerciseShortLocks(args: ExerciseShortLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 exerciseShortLocks(args, context);\n\t}\n\n\tpublic async buyAndExerciseLongLocks(args: BuyAndExerciseLongLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 buyAndExerciseLongLocks(args, context);\n\t}\n\n\tpublic async buyAndExerciseShortLocks(args: BuyAndExerciseShortLocks) {\n\t\tconst context: RequestContext = {\n\t\t\tapiUser: this.apiUser,\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 buyAndExerciseShortLocks(args, context);\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\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\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\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 { GraphQLClient } from 'graphql-request';\n\nlet graphqlClient = new GraphQLClient('https://api.indexer.xyz/graphql');\n\nexport const getGraphqlClient = () => graphqlClient;\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]*)}/;\n\tconst matches = regex.exec(query);\n\n\tif (!matches || matches.length !== 4) {\n\t\tthrow new Error('Invalid query string format');\n\t}\n\n\tconst [, queryName, argsString, bodyString] = matches;\n\n\tif (!argsString || !bodyString) return '';\n\n\tconst args = argsString.trim().length ? `(${argsString.trim()})` : '';\n\tconst body = bodyString.trim();\n\tconst wrappedBody = `${chain} {\\n${body}\\n}`;\n\n\treturn gql`query ${queryName}${args} {\\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\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 {\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\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 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\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\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_TRANFER_POLICY_RULES_PACKAGE_ID = '0x434b5bd8f6a7b05fede0ff46c6e511d71ea326ed38056e3bcd681d2d7c2a7879';\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_LISTING_STORE = '0x47cba0b6309a12ce39f9306e28b899ed4b3698bce4f4911fd0c58ff2329a2ff6';\nexport const TRADEPORT_BIDDING_STORE = '0x3d3b0c6e616fdc1a45b2b73d022bc085448e78bd729d28081c7a340abb33cba1';\nexport const TRADEPORT_MARKETPLACE_OBJECT = '0xc5f87120e388b532ee774f7bac23347679f632a1f2d59f4ed2bbf2ffe5a61b6f';\n\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 = '0x6058c583a0c0c893006036cad0d4f5399479c7e140747cb703457aee8b158e9f';\nexport const TRADEPORT_MULTI_BID_PACKAGE_ORIGINAL = '0x53134eb544c5a0b5085e99efaf7eab13b28ad123de35d61f941f8c8c40b72033'; // V1\nexport const TRADEPORT_MULTI_BID_STORE = '0x8aaed7e884343fb8b222c721d02eaac2c6ae2abbb4ddcdf16cb55cf8754ee860';\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];\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\tawait shareOriginByteKiosk({ 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\tkioskTx: txData?.kioskTx,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldAssertNftInSharedKiosk: true,\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\tkioskTx: txData?.kioskTx,\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\tasync runCommands(kioskTx) {\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\tkioskTx: txData?.kioskTx,\n\t\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\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\tkioskTx: txData?.kioskTx,\n\t\t\t\tkioskOwner: txData?.itemOwner,\n\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\tshouldAssertNftInSharedKiosk: true,\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';\n\nexport const assertNftInSharedKiosk = async ({\n\tkioskId,\n\twalletAddress,\n\tkiosks,\n}: {\n\tkioskId: string;\n\twalletAddress: string;\n\tkiosks?: any;\n}): Promise<void> => {\n\tlet kiosksToCheck = kiosks;\n\n\tif (!kiosksToCheck) {\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\tkiosksToCheck = res?.kiosks;\n\t}\n\n\tconst nftKiosk = kiosksToCheck?.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\tconst transferPoliciesFromMystenSdk = await kioskClient.getTransferPolicies({\n\t\ttype: normalizedNftType(nftType),\n\t});\n\n\tlet rule: string | undefined;\n\n\tif (transferPoliciesFromMystenSdk.length > 0) {\n\t\trule = transferPoliciesFromMystenSdk\n\t\t\t.flatMap((policy) => policy.rules)\n\t\t\t.filter((rule) => rule?.split('::')?.[1] === ruleType)?.[0];\n\t} else if (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\tthrow new Error(`No transfer policy found for ${nftType}`);\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';\n\ntype Args = {\n\ttx: Transaction;\n\tkioskClient: KioskClient;\n\tkioskOwner: string;\n\tkioskTx?: KioskTransaction;\n\tkiosk?: any;\n\tkioskOwnerKiosks?: Array<{\n\t\tid: string;\n\t\tis_personal: boolean;\n\t\tis_origin_byte: boolean;\n\t\tis_shared: boolean;\n\t}>;\n\trunCommands: (kioskTx: KioskTransaction) => Promise<void>;\n\tshouldConvertToPersonalKiosk?: boolean;\n\tshouldAssertNftInSharedKiosk?: boolean;\n\tshouldAllowNftUnsharedKiosk?: boolean;\n\tshouldSkipFinalize?: boolean;\n\tkioskStrategy?: 'include' | 'exclude';\n\tfailIfNoKiosk?: boolean;\n};\n\nexport const kioskTxWrapper = async ({\n\ttx,\n\tkioskClient,\n\tkioskTx,\n\tkioskOwner,\n\tkiosk,\n\tkioskOwnerKiosks,\n\trunCommands,\n\tshouldConvertToPersonalKiosk,\n\tshouldAssertNftInSharedKiosk,\n\tshouldAllowNftUnsharedKiosk,\n\tshouldSkipFinalize,\n\tkioskStrategy,\n\tfailIfNoKiosk,\n}: Args) => {\n\tif (kioskTx) {\n\t\tawait runCommands(kioskTx);\n\t\treturn;\n\t}\n\n\tif (!kioskOwner) {\n\t\tthrow new Error('No kiosk owner provided');\n\t}\n\n\tlet kiosks =\n\t\tkioskOwnerKiosks ??\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 (shouldAssertNftInSharedKiosk) {\n\t\tawait assertNftInSharedKiosk({ kioskId: kiosk, walletAddress: kioskOwner, kiosks });\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\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\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\tawait runCommands(kioskTx);\n\n\tif (!shouldSkipFinalize) {\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 {\n\ttype Transaction,\n\ttype TransactionArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { getTransferPolicyRuleNamesFromSuiObject } from '../getTransferPolicyRuleNamesFromSuiObject';\nimport {\n\tgetNativeKioskTransferPolicies,\n\tknownTransferPolicyRules,\n} from './getNativeKioskTransferPolicies';\nimport { resolveFloorPriceRule } from './resolveFloorPriceRule';\nimport { resolveKioskLockRule } from './resolveKioskLockRule';\nimport { resolvePersonalKioskRule } from './resolvePersonalKioskRule';\nimport { resolveRoyaltyRule } from './resolveRoyaltyRule';\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};\n\nconst originByteRuleModules = ['royalty_strategy_bps', 'transfer_allowlist'];\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}: Props) => {\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\tdata: {\n\t\t\t\t\t\tid: transferPolicyId,\n\t\t\t\t\t\trules: ruleNames,\n\t\t\t\t\t},\n\t\t\t\t\ttransferRequest,\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\tpolicies = [\n\t\t\t\t{\n\t\t\t\t\tdata:\n\t\t\t\t\t\t// Find first policy with relevant rules, or fall back to first policy\n\t\t\t\t\t\ttransferPoliciesFromMystenSdk.find((policy) =>\n\t\t\t\t\t\t\tpolicy?.rules?.some((rule) =>\n\t\t\t\t\t\t\t\tknownTransferPolicyRules.some((ruleType) => rule?.includes(ruleType)),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t) ?? transferPoliciesFromMystenSdk[0],\n\t\t\t\t\ttransferRequest,\n\t\t\t\t\tisCustom: false,\n\t\t\t\t},\n\t\t\t];\n\t\t} else if (\n\t\t\t(customTransferPolicies ?? []).every(\n\t\t\t\t(p: { transferRequest: TransactionArgument }) => p.transferRequest !== transferRequest,\n\t\t\t)\n\t\t) {\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\tdata: customPolicy[0],\n\t\t\t\t\ttransferRequest: customTransferPolicy?.transferRequest,\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\tlet canTransferOutsideKiosk = true;\n\n\tfor (const policy of policies) {\n\t\tconst kioskLockRule = policy?.data?.rules.find((rule: any) =>\n\t\t\trule?.includes('kiosk_lock_rule'),\n\t\t);\n\t\tconst personalKioskRule = policy.data.rules.find((rule: any) =>\n\t\t\trule.includes('personal_kiosk_rule'),\n\t\t);\n\t\tconst otherRules = policy.data.rules.filter(\n\t\t\t(rule: any) => !rule?.includes('kiosk_lock_rule') && !rule?.includes('personal_kiosk_rule'),\n\t\t);\n\n\t\tconst sortedRules = [kioskLockRule, personalKioskRule, ...otherRules].filter(Boolean);\n\n\t\tfor (const rule of sortedRules) {\n\t\t\tconst ruleDefinition = kioskClient.rules.find(\n\t\t\t\t(x: any) => getNormalizedRuleType(x.rule) === getNormalizedRuleType(rule),\n\t\t\t);\n\n\t\t\tlet rulePackageId = ruleDefinition?.packageId;\n\t\t\tif (!rulePackageId) {\n\t\t\t\trulePackageId = rule?.split('::')?.[0];\n\t\t\t}\n\n\t\t\tconst moduleName = rule?.split('::')?.[1];\n\t\t\tif (originByteRuleModules.includes(moduleName)) {\n\t\t\t\tthrow new Error(`Using Origin Byte rule ${rule} inside the native kiosk transaction`);\n\t\t\t}\n\n\t\t\tswitch (moduleName) {\n\t\t\t\tcase 'kiosk_lock_rule':\n\t\t\t\t\tcanTransferOutsideKiosk = false;\n\t\t\t\t\tresolveKioskLockRule({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tpackageId: rulePackageId,\n\t\t\t\t\t\tpolicyId: policy.data.id,\n\t\t\t\t\t\ttransferRequest: policy.transferRequest,\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: 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: policy.transferRequest,\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: rulePackageId,\n\t\t\t\t\t\tmoduleName,\n\t\t\t\t\t\tpolicyId: policy.data.id,\n\t\t\t\t\t\ttransferRequest: policy.transferRequest,\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});\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: rulePackageId,\n\t\t\t\t\t\tnftType: policy.isCustom && policy.type ? policy.type : nftType,\n\t\t\t\t\t\tpolicyId: policy.data.id,\n\t\t\t\t\t\ttransferRequest: policy.transferRequest as any,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`No resolver for the following rule: ${rule}.`);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (canTransferOutsideKiosk && 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.data.id), policy.transferRequest],\n\t\t\ttypeArguments: [policy.isCustom && policy.type ? policy.type : nftType],\n\t\t});\n\t}\n};\n","import {\n\ttype Transaction,\n\ttype TransactionObjectArgument,\n\ttype TransactionObjectInput,\n} from '@mysten/sui/transactions';\n\ntype Args = {\n\ttx: Transaction;\n\tpackageId: string;\n\ttransferRequest: TransactionObjectArgument;\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};\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}: Args) {\n\tconst royaltyFeeAmount = await getKioskCollectionRoyaltyFeeAmount({\n\t\ttx,\n\t\tsuiClient,\n\t\twalletAddress,\n\t\troyaltyRulePackageId: packageId,\n\t\troyaltyRuleModule: moduleName,\n\t\ttransferPolicyId: policyId,\n\t\tprice,\n\t\tnftType,\n\t});\n\n\tconst feeCoin = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [royaltyFeeAmount]);\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 { 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';\n\nexport const getOBKiosk = async (wallet: string): 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\treturn res?.kiosks?.filter((kiosk: any) => kiosk?.is_origin_byte && kiosk?.is_shared)?.[0]?.id;\n};\n","import { createOBKiosk } from './createOBKiosk';\nimport { getOBKiosk } from './getOBKiosk';\n\ntype Args = {\n\ttx: any;\n\taddress: string;\n\tkioskToUseIfExists?: string;\n\tcreateMethod?: string;\n};\n\nexport const getOrCreateOBKiosk = async ({\n\ttx,\n\taddress,\n\tkioskToUseIfExists,\n\tcreateMethod,\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\tconst existingKiosk = await getOBKiosk(address);\n\tif (existingKiosk) {\n\t\treturn {\n\t\t\tkiosk: existingKiosk,\n\t\t\tisNewKiosk: false,\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 = async ({ 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 { normalizeStructTag, 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 { 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 { 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, kioskClient, nftTokenId, suiClient } = 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 && txData.sellerKiosk) {\n\t\t// Nft must be places inside the kiosk\n\t\tconst transferPolicies = await kioskClient.getTransferPolicies({\n\t\t\ttype: normalizeStructTag(nftType),\n\t\t});\n\t\tlet { rules: allRules } = transferPolicies.find((p) => p.id === transferPolicy.id);\n\n\t\tif (allRules.length === 0) {\n\t\t\tallRules = await getTransferPolicyRuleNamesFromSuiObject({\n\t\t\t\tsuiClient,\n\t\t\t\ttransferPolicyId: transferPolicy.id,\n\t\t\t});\n\t\t}\n\n\t\tconst unsupportedRule = allRules.find(\n\t\t\t(r) => !knownTransferPolicyRules.includes(r.split('::').at(1)),\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\tkioskTx: txData?.kioskTx,\n\t\t\tkioskOwner: txData?.seller,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tasync runCommands(kioskTx) {\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// Add here resolving custom transfer policy rules when they appear\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\tkioskTx: txData?.kioskTx,\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: true,\n\t\t\t\tasync runCommands(kioskTx) {\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","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} 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 addTradePortUnlistTx({ 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 addTradePortKioskUnlistTx({\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 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\tif (\n\t\ttxData?.listingNonce &&\n\t\t(await isNonKioskListing({ suiClient: txData?.suiClient, listingNonce: txData?.listingNonce }))\n\t) {\n\t\taddTradePortUnlistTx(txData);\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\tasync runCommands(kioskTx) {\n\t\t\t\tawait addTradePortKioskUnlistTx({\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\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\taddTradePortUnlistTx(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\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\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 { 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\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\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\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\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 { type RequestContext } from '../../SuiTradingClient';\nimport { buyLocks } from '../buyLocks/buyLocks';\nimport { exerciseLongLocks } from '../exerciseLongLocks/exerciseLongLocks';\n\nexport type BuyAndExerciseLongLocks = {\n\twalletAddress: string;\n\tlocks: Array<{\n\t\tid: string;\n\t\tbidId?: string;\n\t}>;\n\ttx?: Transaction;\n};\n\nexport async function buyAndExerciseLongLocks(\n\t{ walletAddress, locks, tx: existingTx }: BuyAndExerciseLongLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst transaction = existingTx ?? new Transaction();\n\n\tawait buyLocks({ lockIds: locks?.map((lock) => lock?.id), transaction }, context);\n\tawait exerciseLongLocks({ locks, walletAddress, transaction }, context);\n\n\treturn transaction;\n}\n","import { SUI_CLOCK_OBJECT_ID } from '@mysten/sui.js/utils';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_PRICE_LOCK_PACKAGE, TRADEPORT_PRICE_LOCK_STORE } from '../../constants';\nimport { calculatePremium } from '../../helpers/calculatePremium';\nimport { calculateRoyaltyFee } from '../../helpers/calculateRoyaltyFee';\nimport { getLockById } from '../../helpers/getLockById';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getNativeKioskTransferPoliciesByNftType } from '../../helpers/kiosk/getNativeKioskTransferPoliciesByNftType';\nimport { type RequestContext } from '../../SuiTradingClient';\n\nexport type BuyLocks = {\n\tlockIds: string[];\n\ttransaction?: Transaction;\n};\n\nexport async function buyLocks(\n\t{ lockIds, transaction }: BuyLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst tx = transaction ?? new Transaction();\n\n\tfor (const lockId of lockIds) {\n\t\tconst lock = await getLockById(lockId);\n\t\tif (!lock) {\n\t\t\tthrow new Error(`Lock ${lockId} is not found`);\n\t\t}\n\n\t\tif (lock.state !== 'active') {\n\t\t\tthrow new Error(`Lock ${lockId} must be in active state`);\n\t\t}\n\n\t\tconst transferPolicy = (await getNativeKioskTransferPoliciesByNftType(lock.nft_type))?.at(0);\n\t\tif (!transferPolicy) {\n\t\t\tthrow new Error(`Missing transfer policy for ${lock.nft_type}`);\n\t\t}\n\n\t\tconst marketplaceFee = BigInt(\n\t\t\tgetMarketFeePrice({\n\t\t\t\tprice: Number(lock.maker_price),\n\t\t\t\tcollectionId: lock.collection_id,\n\t\t\t}),\n\t\t);\n\n\t\tconst royalty = calculateRoyaltyFee(transferPolicy.rules, BigInt(lock.maker_price));\n\n\t\tconst premiumAmount = calculatePremium(lock.maker_price);\n\n\t\tconst [premium] = tx.splitCoins(tx.gas, [premiumAmount]);\n\n\t\ttx.moveCall({\n\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::buy_lock`,\n\t\t\ttypeArguments: [lock.nft_type],\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\ttx.object(SUI_CLOCK_OBJECT_ID),\n\t\t\t\ttx.pure.id(lock.lock_id),\n\t\t\t\ttx.pure.u64(lock.maker_price),\n\t\t\t\ttx.pure.u64(marketplaceFee),\n\t\t\t\ttx.pure.u64(royalty),\n\t\t\t\ttx.pure.u64(lock.expire_in),\n\t\t\t\tpremium,\n\t\t\t],\n\t\t});\n\t}\n\n\treturn tx;\n}\n","import { PREMIUM_FEE_NOMINATOR, PREMIUM_NOMINATOR } from '../constants';\n\nexport function calculatePremium(price: bigint): bigint {\n\treturn (BigInt(price) * PREMIUM_NOMINATOR) / 10_000n;\n}\n\nexport function calculatePremiumFee(premium: bigint): bigint {\n\treturn (BigInt(premium) * PREMIUM_FEE_NOMINATOR) / 10_000n;\n}\n","export function calculateRoyaltyFee(\n\ttransferPolicyRules: Array<{ type: string; amount_bp?: string; min_amount?: string }>,\n\tprice: bigint,\n): bigint {\n\tconst royaltyRule = transferPolicyRules?.filter(\n\t\t(rule: { type: string }) => rule.type === 'royalty_rule',\n\t)?.[0];\n\n\tif (!royaltyRule || (!royaltyRule.amount_bp && !royaltyRule.min_amount)) {\n\t\treturn 0n;\n\t}\n\n\tconst royaltyFee = royaltyRule.amount_bp ? (BigInt(royaltyRule.amount_bp) * price) / 10000n : 0n;\n\n\tif (royaltyRule.min_amount && BigInt(royaltyRule.min_amount) > royaltyFee) {\n\t\treturn BigInt(royaltyRule.min_amount);\n\t}\n\n\treturn royaltyFee;\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchLockById = gql`\n\tquery fetchLockById($lockId: uuid!) {\n\t\tlocks(where: { id: { _eq: $lockId } }) {\n\t\t\tid\n\t\t\ttype\n\t\t\tstate\n\t\t\tcollection_id\n\t\t\tlock_id\n\t\t\tnft_type\n\t\t\tmaker_price\n\t\t\tmaker\n\t\t\tchain_state\n\t\t\tcollection_id\n\t\t\texpire_in\n\t\t\tnft {\n\t\t\t\tid\n\t\t\t\ttoken_id\n\t\t\t}\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../graphql/gqlChainRequest';\nimport { fetchLockById } from '../graphql/queries/fetchLockById';\n\nexport type Lock = {\n\tid: string;\n\tlock_id: string;\n\tchain_state?: Record<string, any>;\n\tnft_type: string;\n\ttype: string;\n\tstate: string;\n\tmaker_price: bigint;\n\tmaker: string;\n\tcollection_id: string;\n\texpire_in: number;\n\tnft?: {\n\t\tid: string;\n\t\ttoken_id: string;\n\t};\n};\n\nexport const getLockById = async (lockId: string): Promise<Lock | undefined> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchLockById,\n\t\tvariables: { lockId },\n\t});\n\n\treturn res?.locks?.[0] ?? undefined;\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 { 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 { SUI_CLOCK_OBJECT_ID } from '@mysten/sui.js/utils';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport { TRADEPORT_PRICE_LOCK_PACKAGE, TRADEPORT_PRICE_LOCK_STORE } from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchBidsById } from '../../graphql/queries/fetchBidsById';\nimport { getLockById } from '../../helpers/getLockById';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getNativeKioskTransferPoliciesByNftType } from '../../helpers/kiosk/getNativeKioskTransferPoliciesByNftType';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { resolveTransferPolicies } from '../../helpers/kiosk/resolveTransferPolicies';\nimport { isOriginByteBid } from '../../helpers/originByte/isOriginByteBid';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { getObjectType } from '../../helpers/rpc/getObjectType';\nimport { acceptCollectionBid } from '../acceptCollectionBid/acceptCollectionBid';\n\nexport type ExerciseLongLocks = {\n\twalletAddress: string;\n\ttransaction?: Transaction;\n\tlocks: Array<{\n\t\tid: string;\n\t\tbidId?: string;\n\t}>;\n};\n\nexport async function exerciseLongLocks(\n\t{ walletAddress, transaction, locks }: ExerciseLongLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst tx = transaction ?? new Transaction();\n\n\tfor (const { id: lockId, bidId } of locks) {\n\t\tconst lock = await getLockById(lockId);\n\n\t\tif (!transaction && lock.state !== 'bought') {\n\t\t\tthrow new Error('Lock must be in bought state');\n\t\t}\n\n\t\tconst transferPolicies = await getNativeKioskTransferPoliciesByNftType(lock.nft_type);\n\t\tconst transferPolicy = transferPolicies?.at(0);\n\t\tif (!transferPolicy) {\n\t\t\tthrow new Error(`Transfer policy is not found for ${lock.nft_type}`);\n\t\t}\n\n\t\tconst transferPolicyId = transferPolicy?.id;\n\n\t\tawait kioskTxWrapper({\n\t\t\ttx,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tkioskOwner: walletAddress,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tif (!lock.nft?.token_id) {\n\t\t\t\t\tthrow new Error(`The long lock ${lockId} must have nft to be exercised`);\n\t\t\t\t}\n\n\t\t\t\tlet bid: { price: bigint; nft: { token_id: string }; nonce: string; type: string } = null;\n\t\t\t\tif (bidId) {\n\t\t\t\t\tconst res = await gqlChainRequest({\n\t\t\t\t\t\tchain: 'sui',\n\t\t\t\t\t\tquery: fetchBidsById,\n\t\t\t\t\t\tvariables: { bidIds: [bidId] },\n\t\t\t\t\t});\n\t\t\t\t\tbid = res.bids.find((bid: { status: string; type: string }) => bid.status === 'active');\n\t\t\t\t\tif (!bid) {\n\t\t\t\t\t\tthrow new Error(`Active bid ${bidId} is missing for ${lock.nft_type}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (bid) {\n\t\t\t\t\tconst bidType = await getObjectType({\n\t\t\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\t\t\tobjectId: bid?.nonce,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (isOriginByteBid(bidType) && isOriginByteCollection(transferPolicies)) {\n\t\t\t\t\t\tthrow new Error(`The bid ${bidId} must be for native kiosks`);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!lock.chain_state.makerKioskId) {\n\t\t\t\t\tthrow new Error('Missing makerKioskId in the lock data');\n\t\t\t\t}\n\n\t\t\t\tconst marketplaceFee = BigInt(\n\t\t\t\t\tgetMarketFeePrice({\n\t\t\t\t\t\tprice: Number(lock.maker_price),\n\t\t\t\t\t\tcollectionId: lock.collection_id,\n\t\t\t\t\t}),\n\t\t\t\t);\n\n\t\t\t\tconst [transferRequest, confirmLockRequest] = tx.moveCall({\n\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::start_confirm_long_lock`,\n\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\ttx.object(SUI_CLOCK_OBJECT_ID),\n\t\t\t\t\t\ttx.pure.id(lock.lock_id),\n\t\t\t\t\t\ttx.object(lock.chain_state.makerKioskId),\n\t\t\t\t\t\ttx.object((kioskTx.kiosk as any).value ?? kioskTx.kiosk),\n\t\t\t\t\t\ttx.object((kioskTx.kioskCap as any).value ?? kioskTx.kioskCap),\n\t\t\t\t\t\ttx.object(transferPolicyId),\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\tawait resolveTransferPolicies({\n\t\t\t\t\ttx,\n\t\t\t\t\ttransferPolicies,\n\t\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\t\twalletAddress,\n\t\t\t\t\tkioskTx,\n\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\tnftType: lock.nft_type,\n\t\t\t\t\tprice: '0',\n\t\t\t\t\ttransferRequest,\n\t\t\t\t\tshouldSkipKioskLocking: true,\n\t\t\t\t});\n\t\t\t\tif (bid) {\n\t\t\t\t\tconst beforeResolveKioskTransferRequest = (coin: any, transferRequest: any) => {\n\t\t\t\t\t\tconst [makerRewardWithFee] = tx.splitCoins(coin, [\n\t\t\t\t\t\t\tBigInt(lock.maker_price) + marketplaceFee,\n\t\t\t\t\t\t]);\n\n\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::end_confirm_long_lock_with_bid`,\n\t\t\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\t\t\tconfirmLockRequest,\n\t\t\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\t\t\tmakerRewardWithFee,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\t\t\t\t\t};\n\n\t\t\t\t\tswitch (bid.type) {\n\t\t\t\t\t\t// case 'solo': {\n\t\t\t\t\t\t// \tawait acceptNftBids(\n\t\t\t\t\t\t// \t\t{ bidIds: [bidId], tx, kioskTx, beforeResolveKioskTransferRequest },\n\t\t\t\t\t\t// \t\tcontext,\n\t\t\t\t\t\t// \t);\n\t\t\t\t\t\t// \tbreak;\n\t\t\t\t\t\t// }\n\n\t\t\t\t\t\tcase 'collection': {\n\t\t\t\t\t\t\tawait acceptCollectionBid(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbid,\n\t\t\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\t\t\tnftId: lock.nft?.id,\n\t\t\t\t\t\t\t\t\twalletAddress,\n\t\t\t\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\t\t\t\tbeforeResolveKioskTransferRequest,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tthrow new Error(`Unsupported bid type ${bid.type}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst [makerRewardWithFee] = tx.splitCoins(tx.gas, [\n\t\t\t\t\t\tBigInt(lock.maker_price) + marketplaceFee,\n\t\t\t\t\t]);\n\n\t\t\t\t\tconst [transferRequest] = tx.moveCall({\n\t\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::end_confirm_long_lock`,\n\t\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\t\tconfirmLockRequest,\n\t\t\t\t\t\t\ttx.object((kioskTx.kiosk as any).value ?? kioskTx.kiosk),\n\t\t\t\t\t\t\tmakerRewardWithFee,\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\n\t\t\t\t\tawait resolveTransferPolicies({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\ttransferPolicies,\n\t\t\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\t\t\twalletAddress,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\t\tnftType: lock.nft_type,\n\t\t\t\t\t\tprice: lock.maker_price.toString(),\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\tshouldSkipKioskLocking: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\treturn tx;\n}\n","import { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport { buyLocks } from '../buyLocks/buyLocks';\nimport { exerciseShortLocks } from '../exerciseShortLocks/exerciseShortLocks';\n\nexport type BuyAndExerciseShortLocks = {\n\twalletAddress: string;\n\tlocks: Array<{\n\t\tid: string;\n\t\tnftId: string;\n\t}>;\n\ttx?: Transaction;\n};\n\nexport async function buyAndExerciseShortLocks(\n\t{ walletAddress, locks, tx: existingTx }: BuyAndExerciseShortLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst transaction = existingTx ?? new Transaction();\n\n\tawait buyLocks({ lockIds: locks?.map((lock) => lock?.id), transaction }, context);\n\tawait exerciseShortLocks({ locks, walletAddress, transaction }, context);\n\n\treturn transaction;\n}\n","import { SUI_CLOCK_OBJECT_ID } from '@mysten/sui.js/utils';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { type RequestContext } from '../../SuiTradingClient';\nimport {\n\tTRADEPORT_KIOSK_TRANSFERS_STORE,\n\tTRADEPORT_PRICE_LOCK_PACKAGE,\n\tTRADEPORT_PRICE_LOCK_STORE,\n} from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchListingsById } from '../../graphql/queries/fetchListingsById';\nimport { fetchNftById } from '../../graphql/queries/fetchNftsById';\nimport { getLockById } from '../../helpers/getLockById';\nimport { getNativeKioskTransferPoliciesByNftType } from '../../helpers/kiosk/getNativeKioskTransferPoliciesByNftType';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { resolveTransferPolicies } from '../../helpers/kiosk/resolveTransferPolicies';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { buyListings } from '../buyListings/buyListings';\n\nexport type ExerciseShortLocks = {\n\twalletAddress: string;\n\ttransaction?: Transaction;\n\tlocks: Array<{\n\t\tid: string;\n\t\tlistingId?: string;\n\t\tnftId?: string;\n\t}>;\n};\n\nexport async function exerciseShortLocks(\n\t{ walletAddress, transaction, locks }: ExerciseShortLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst tx = transaction ?? new Transaction();\n\n\tfor (const { id: lockId, listingId, nftId: nftIdArg } of locks) {\n\t\tconst lock = await getLockById(lockId);\n\n\t\tif (!transaction && lock.state !== 'bought') {\n\t\t\tthrow new Error('Lock must be in bought state');\n\t\t}\n\n\t\tconst transferPolicies = await getNativeKioskTransferPoliciesByNftType(lock.nft_type);\n\t\tconst transferPolicy = transferPolicies?.at(0);\n\t\tif (!transferPolicy) {\n\t\t\tthrow new Error(`Transfer policy is not found for ${lock.nft_type}`);\n\t\t}\n\n\t\tif (lock.nft?.token_id) {\n\t\t\tthrow new Error(`The short lock ${lockId} must not have any nft`);\n\t\t}\n\n\t\tlet listing: {\n\t\t\tprice: bigint;\n\t\t\tnft: { id: string; token_id: string; chain_state: { kiosk_id: string } };\n\t\t\tnonce: string;\n\t\t} = null;\n\n\t\tif (listingId) {\n\t\t\tconst res = await gqlChainRequest({\n\t\t\t\tchain: 'sui',\n\t\t\t\tquery: fetchListingsById,\n\t\t\t\tvariables: { listingIds: [listingId] },\n\t\t\t});\n\n\t\t\tlisting = res.listings[0];\n\t\t\tif (!listing) {\n\t\t\t\tthrow new Error(`Missing listing ${listingId}`);\n\t\t\t}\n\t\t}\n\n\t\tlet nftId = nftIdArg;\n\t\tif (listing) {\n\t\t\tif (nftIdArg && listing.nft.id !== nftIdArg) {\n\t\t\t\tthrow new Error(`The listing ${listingId} must be for token ${listing.nft.token_id}`);\n\t\t\t}\n\n\t\t\tif (!nftIdArg) {\n\t\t\t\tnftId = listing.nft.id;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(listing.nonce && isOriginByteCollection(transferPolicies)) ||\n\t\t\t\t!listing.nft?.chain_state?.kiosk_id\n\t\t\t) {\n\t\t\t\tthrow new Error(`The listing ${listingId} must be for native kiosk`);\n\t\t\t}\n\t\t}\n\n\t\tif (!nftId) {\n\t\t\tthrow new Error(`nftId is required for shorts`);\n\t\t}\n\n\t\tconst nft: { id: string; token_id: string; owner: string; chain_state: { kiosk_id: string } } =\n\t\t\t(\n\t\t\t\tawait gqlChainRequest({\n\t\t\t\t\tchain: 'sui',\n\t\t\t\t\tquery: fetchNftById,\n\t\t\t\t\tvariables: { nftId },\n\t\t\t\t})\n\t\t\t)?.nfts?.[0];\n\n\t\tif (!nft) {\n\t\t\tthrow new Error(`No nft ${nftId} found`);\n\t\t}\n\n\t\tif (!listing && nft.owner !== walletAddress) {\n\t\t\tthrow new Error(`The nft ${nftId} must be owned by ${walletAddress}`);\n\t\t}\n\n\t\tawait kioskTxWrapper({\n\t\t\ttx,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tkioskOwner: walletAddress,\n\t\t\tkiosk: nftIdArg ? nft?.chain_state?.kiosk_id : null,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tconst [coin, confirmLockRequest] = tx.moveCall({\n\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::start_confirm_short_lock`,\n\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\ttx.object(SUI_CLOCK_OBJECT_ID),\n\t\t\t\t\t\ttx.pure.id(lock.lock_id),\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\tif (listing) {\n\t\t\t\t\tconst beforeResolveKioskTransferRequest = async (transferRequest: any) => {\n\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::end_confirm_short_lock_with_listing`,\n\t\t\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_STORE),\n\t\t\t\t\t\t\t\tconfirmLockRequest,\n\t\t\t\t\t\t\t\ttx.object((kioskTx.kiosk as any).value ?? kioskTx.kiosk),\n\t\t\t\t\t\t\t\ttx.object((kioskTx.kioskCap as any).value ?? kioskTx.kioskCap),\n\t\t\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\t\t\ttx.object(transferPolicy?.id),\n\t\t\t\t\t\t\t\ttx.object(coin),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\ttx.transferObjects(\n\t\t\t\t\t\t\t[tx.object(coin)],\n\t\t\t\t\t\t\ttx.pure.address(addLeadingZerosAfter0x(walletAddress)),\n\t\t\t\t\t\t);\n\t\t\t\t\t};\n\n\t\t\t\t\tawait buyListings(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlistingIds: [listingId],\n\t\t\t\t\t\t\twalletAddress,\n\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\t\tcoinToSplit: coin,\n\t\t\t\t\t\t\tbeforeResolveKioskTransferRequest,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst [transferRequest] = tx.moveCall({\n\t\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::end_confirm_short_lock`,\n\t\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\t\ttx.object(TRADEPORT_KIOSK_TRANSFERS_STORE),\n\t\t\t\t\t\t\tconfirmLockRequest,\n\t\t\t\t\t\t\ttx.object((kioskTx.kiosk as any).value ?? kioskTx.kiosk),\n\t\t\t\t\t\t\ttx.object((kioskTx.kioskCap as any).value ?? kioskTx.kioskCap),\n\t\t\t\t\t\t\ttx.pure.address(nft?.token_id),\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\t\t\t\t\tawait resolveTransferPolicies({\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\ttransferPolicies,\n\t\t\t\t\t\tsuiClient: context.suiClient,\n\t\t\t\t\t\twalletAddress,\n\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\tkioskClient: context.kioskClient,\n\t\t\t\t\t\tnftType: lock.nft_type,\n\t\t\t\t\t\tprice: lock.maker_price.toString(),\n\t\t\t\t\t\ttransferRequest,\n\t\t\t\t\t\tshouldSkipKioskLocking: true,\n\t\t\t\t\t\tcoinToSplit: coin,\n\t\t\t\t\t});\n\n\t\t\t\t\ttx.transferObjects(\n\t\t\t\t\t\t[tx.object(coin)],\n\t\t\t\t\t\ttx.pure.address(addLeadingZerosAfter0x(walletAddress)),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\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\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 { 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 { getSharedObjects } from '../../helpers/getSharedObjects';\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\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};\n\ntype NormalBuyTx = {\n\tnftTokenIds?: never;\n} & BuyTxBase;\n\nexport type TocenBuyTx = {\n\tnftTokenIds: string[];\n} & BuyTxBase;\n\nexport type BuyTx = (NormalBuyTx | TocenBuyTx) & {\n\tcoinToSplit?: any;\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\tconst tocenTokenIds: string[] = [];\n\tlet tocenNftType = '';\n\tlet tocenTotalPrice = 0;\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};\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\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 { 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 { 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_KIOSK_LISTING_STORE,\n\tTRADEPORT_LISTING_STORE,\n} from '../../constants';\nimport { getCommissionByNftContractId } from '../../graphql/queries/getCommissionByListingId';\nimport { destroyZeroCoin } from '../../helpers/destroyZeroCoin';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { assertNftInSharedKiosk } from '../../helpers/kiosk/assertNftInSharedKiosk';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\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 { splitCoins } from '../../helpers/splitCoins';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\nimport { type BuyTx, type TocenBuyTx } from './buyListings';\n\nexport function addTradePortBuyTx({ tx, nftType, listingNonce, price, sharedObjects }: BuyTx) {\n\tconst [coin] = splitCoins({ tx, amounts: [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 addTradeportKioskBuyTx = async ({\n\ttx,\n\ttransferPolicies,\n\tkioskTx,\n\tsuiClient,\n\tkioskClient,\n\tnftType,\n\tnftTokenId,\n\tprice,\n\tsellerKiosk,\n\tseller,\n\tcoinToSplit,\n\tbeforeResolveKioskTransferRequest,\n}: BuyTx) => {\n\tawait assertNftInSharedKiosk({ kioskId: sellerKiosk, walletAddress: seller });\n\n\tconst response = await suiClient.getDynamicFieldObject({\n\t\tparentId: TRADEPORT_KIOSK_LISTING_STORE,\n\t\tname: { type: '0x2::object::ID', value: nftTokenId },\n\t});\n\tif (response.error?.code === 'dynamicFieldNotFound') {\n\t\tthrow new Error(`Not found kiosk listing object of token ${nftTokenId}`);\n\t}\n\n\tconst coin = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [\n\t\ttx.pure.u64(price + Number((response.data.content as any).fields.commission)),\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(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});\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}: BuyTx) {\n\tawait assertNftInSharedKiosk({ kioskId: sellerKiosk, walletAddress: seller });\n\n\tconst { orderbook } = sharedObjects;\n\tconst { kiosk: buyerKiosk, isNewKiosk: isNewBuyerKiosk } = await getOrCreateOBKiosk({\n\t\ttx,\n\t\taddress: buyer,\n\t});\n\tconst [coin] = splitCoins({ tx, amounts: [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\tawait shareOriginByteKiosk({ 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}: BuyTx) => {\n\tawait assertNftInSharedKiosk({ kioskId: sellerKiosk, walletAddress: seller });\n\n\tconst [coin] = splitCoins({ tx, amounts: [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];\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 }: BuyTx) {\n\tconst [coin] = splitCoins({ tx, amounts: [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}: BuyTx) {\n\tawait assertNftInSharedKiosk({ kioskId: sellerKiosk, walletAddress: seller });\n\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [coin1, coin2] = splitCoins({\n\t\ttx,\n\t\tamounts: [tx.pure.u64(price), tx.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(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}: BuyTx) {\n\tconst [coin] = splitCoins({ tx, amounts: [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({ tx, sharedObjects, nftTokenId, nftType, price }: BuyTx) {\n\tconst [coin] = splitCoins({ tx, amounts: [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}: BuyTx) {\n\tconst { keepsakeRoyaltyStrategy } = sharedObjects;\n\tconst transferPolicyId = getNativeKioskTransferPolicies(transferPolicies)?.at(0)?.id;\n\n\tconst [coin1, coin2] = splitCoins({\n\t\ttx,\n\t\tamounts: [\n\t\t\ttx.pure.u64(price),\n\t\t\ttx.pure.u64((price * Number(royalty)) / 100 + price * Number(royalty) * 0.00005),\n\t\t],\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 }: TocenBuyTx) => {\n\tconst [coin] = splitCoins({ tx, amounts: [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\tif (txData?.listingNonce && isOriginByteCollection(txData?.transferPolicies)) {\n\t\tconst sharedObjects = await getSharedObjects(txData?.nftType);\n\t\tawait addOriginByteBuyTx({ ...txData, sharedObjects });\n\n\t\treturn;\n\t}\n\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 = await getSharedObjects(txData?.nftType);\n\t\t\taddTradePortBuyTx({ ...txData, sharedObjects });\n\t\t\treturn;\n\t\t}\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\tkioskTx: txData?.kioskTx,\n\t\t\tkioskOwner: txData?.buyer,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\tawait addTradeportKioskBuyTx({\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 = await getSharedObjects(txData?.nftType);\n\taddTradePortBuyTx({ ...txData, sharedObjects });\n}\n\nexport async function addHyperspaceBuyTxHandler(txData: BuyTx) {\n\tif (txData?.listingNonce && isOriginByteCollection(txData?.transferPolicies)) {\n\t\tconst sharedObjects = 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\tkioskTx: txData?.kioskTx,\n\t\tkioskOwner: txData?.buyer,\n\t\tkiosk: txData?.sellerKiosk,\n\t\tshouldConvertToPersonalKiosk: true,\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 = 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\tkioskTx: txData?.kioskTx,\n\t\t\tkioskOwner: txData?.buyer,\n\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\tshouldConvertToPersonalKiosk: true,\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 { 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 { SUI_CLOCK_OBJECT_ID } from '@mysten/sui.js/utils';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_PRICE_LOCK_PACKAGE, TRADEPORT_PRICE_LOCK_STORE } from '../../constants';\nimport { getLockById } from '../../helpers/getLockById';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport type { RequestContext } from '../../SuiTradingClient';\n\nexport type CancelLocks = {\n\tlockIds: string[];\n\twalletAddress: string;\n\ttx?: Transaction;\n};\n\nexport async function cancelLocks(\n\t{ lockIds, walletAddress, tx: existingTx }: CancelLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\tconst tx = existingTx ?? new Transaction();\n\n\tfor (const lockId of lockIds) {\n\t\tconst lock = await getLockById(lockId);\n\t\tif (!lock) {\n\t\t\tthrow new Error(`Lock ${lockId} is not found`);\n\t\t}\n\n\t\tif (!['active', 'expired'].includes(lock.state)) {\n\t\t\tthrow new Error(`Lock ${lockId} is not in state active or expired`);\n\t\t}\n\n\t\tawait kioskTxWrapper({\n\t\t\ttx,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tkioskOwner: walletAddress,\n\t\t\tkiosk: lock?.chain_state?.makerKioskId,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::cancel_lock`,\n\t\t\t\t\ttypeArguments: [lock.nft_type],\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\ttx.object(SUI_CLOCK_OBJECT_ID),\n\t\t\t\t\t\ttx.pure.id(lock.lock_id),\n\t\t\t\t\t\ttx.object((kioskTx.kiosk as any).value ?? kioskTx.kiosk),\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\treturn tx;\n}\n","import { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_MULTI_BID_PACKAGE, TRADEPORT_MULTI_BID_STORE } from '../../constants';\nimport { fetchMultibidChainIdById } from '../../graphql/queries/fetchMultibidById';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\n\nexport interface CancelMultiBid {\n\twalletAddress: string;\n\tmultiBidId: string;\n}\n\nexport async function cancelMultiBid({ multiBidId }: CancelMultiBid): Promise<Transaction> {\n\tconst { chain_id: multiBidChainId, cancelled_at } =\n\t\t(\n\t\t\tawait gqlChainRequest({\n\t\t\t\tchain: 'sui',\n\t\t\t\tquery: fetchMultibidChainIdById,\n\t\t\t\tvariables: { multiBidId },\n\t\t\t})\n\t\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\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 { 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 { 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};\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\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\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\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\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 { fetchKiosksByOwner } from '../../graphql/queries/fetchKiosksByOwner';\nimport { fetchNftsById } from '../../graphql/queries/fetchNftsById';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getSharedObjects } from '../../helpers/getSharedObjects';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { addLeadingZerosAfter0x } from '../../utils/addLeadingZerosAfter0x';\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\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\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\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 kiosksByOwnerRes = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchKiosksByOwner,\n\t\tvariables: { ownerAddress: addLeadingZerosAfter0x(walletAddress) },\n\t});\n\tconst walletAddressKiosks = kiosksByOwnerRes?.kiosks;\n\n\tlet globalKioskTx: any;\n\tfor (const nft of res.nfts) {\n\t\tlet existingKioskTx;\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};\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\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\tkioskOwnerKiosks: walletAddressKiosks,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tkioskTx: globalKioskTx,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tshouldSkipFinalize: true,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\texistingKioskTx = 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\tglobalKioskTx = existingKioskTx;\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\tkioskOwnerKiosks: walletAddressKiosks,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tkioskTx: globalKioskTx,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tshouldSkipFinalize: true,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\texistingKioskTx = 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\tkioskOwnerKiosks: walletAddressKiosks,\n\t\t\t\t\tkiosk: txData?.sellerKiosk,\n\t\t\t\t\tkioskTx: globalKioskTx,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAssertNftInSharedKiosk: true,\n\t\t\t\t\tshouldSkipFinalize: true,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\texistingKioskTx = 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\tglobalKioskTx = existingKioskTx;\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};\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\tkioskOwnerKiosks: walletAddressKiosks,\n\t\t\t\t\tkioskStrategy: 'exclude',\n\t\t\t\t\tkioskTx: globalKioskTx,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tshouldSkipFinalize: true,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\texistingKioskTx = 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\tkioskOwnerKiosks: walletAddressKiosks,\n\t\t\t\t\tkioskStrategy: 'exclude',\n\t\t\t\t\tkioskTx: globalKioskTx,\n\t\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\t\tshouldAllowNftUnsharedKiosk: true,\n\t\t\t\t\tshouldSkipFinalize: true,\n\t\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\t\texistingKioskTx = 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\n\t\tglobalKioskTx = existingKioskTx;\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: 'CLAIM_NFTS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\tglobalKioskTx?.finalize();\n\treturn Transaction.from(tx);\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_PRICE_LOCK_PACKAGE, TRADEPORT_PRICE_LOCK_STORE } from '../../constants';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\nimport { fetchNftById } from '../../graphql/queries/fetchNftsById';\nimport { calculatePremium } from '../../helpers/calculatePremium';\nimport { calculateRoyaltyFee } from '../../helpers/calculateRoyaltyFee';\nimport { getActiveLockStateByNftId } from '../../helpers/getActiveLockStateByNftId';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getNftType } from '../../helpers/getNftType';\nimport { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport type { RequestContext } from '../../SuiTradingClient';\nimport { cancelLocks } from '../cancelLocks/cancelLocks';\n\nexport interface CreateLongLocks {\n\twalletAddress: string;\n\tnfts: Array<{\n\t\tid: string;\n\t\tpriceInMist: number;\n\t}>;\n}\n\nexport async function createLongLocks(\n\t{ walletAddress, nfts }: CreateLongLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\t// the current version of smart contract support only these values valid now\n\tconst expireIn = 7 * 24 * 3600 * 1000;\n\n\tconst tx = new Transaction();\n\n\tfor (const argNft of nfts) {\n\t\tconst existingLock = await getActiveLockStateByNftId(argNft.id);\n\t\tif (existingLock) {\n\t\t\tif (existingLock.state === 'bought') {\n\t\t\t\tthrow new Error(`Nft ${argNft.id} is used by the lock ${existingLock.id}`);\n\t\t\t}\n\n\t\t\tawait cancelLocks({ lockIds: [existingLock.id], walletAddress, tx }, context);\n\t\t}\n\n\t\tconst premium = calculatePremium(BigInt(argNft.priceInMist));\n\n\t\tconst nft = (\n\t\t\tawait gqlChainRequest({\n\t\t\t\tchain: 'sui',\n\t\t\t\tquery: fetchNftById,\n\t\t\t\tvariables: { nftId: argNft.id },\n\t\t\t})\n\t\t)?.nfts?.[0];\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 = getNativeKioskTransferPolicies(\n\t\t\tnft?.collection?.chain_state?.transfer_policies,\n\t\t);\n\t\tconst transferPolicy = transferPolicies?.at(0);\n\t\tif (!transferPolicy) {\n\t\t\tthrow new Error(`Missing transfer policy for ${nftType}`);\n\t\t}\n\n\t\tconst royalty = calculateRoyaltyFee(transferPolicy.rules, BigInt(argNft.priceInMist));\n\n\t\tawait kioskTxWrapper({\n\t\t\ttx,\n\t\t\tkioskClient: context.kioskClient,\n\t\t\tkioskOwner: walletAddress,\n\t\t\tkiosk: nft?.chain_state?.kiosk_id,\n\t\t\tasync runCommands(kioskTx) {\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::create_long_lock`,\n\t\t\t\t\ttypeArguments: [nftType],\n\t\t\t\t\targuments: [\n\t\t\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\t\t\ttx.pure(nft.token_id),\n\t\t\t\t\t\ttx.object((kioskTx.kiosk as any).value ?? kioskTx.kiosk),\n\t\t\t\t\t\ttx.object((kioskTx.kioskCap as any).value ?? kioskTx.kioskCap),\n\t\t\t\t\t\ttx.pure.u64(BigInt(argNft.priceInMist)),\n\t\t\t\t\t\ttx.pure.u64(\n\t\t\t\t\t\t\tBigInt(\n\t\t\t\t\t\t\t\tgetMarketFeePrice({\n\t\t\t\t\t\t\t\t\tprice: Number(argNft.priceInMist),\n\t\t\t\t\t\t\t\t\tcollectionId: nft.collection_id,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttx.pure.u64(royalty),\n\t\t\t\t\t\ttx.pure.u64(premium),\n\t\t\t\t\t\ttx.pure.u64(expireIn),\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\treturn tx;\n}\n","import { gql } from 'graphql-request';\n\nexport const fetchActiveLockStateByNftId = gql`\n\tquery fetchActiveLockStateByNftId($nftId: uuid!) {\n\t\tlocks(\n\t\t\twhere: {\n\t\t\t\tstate: { _nin: [\"exercised\", \"canceled\", \"confirmed\"] }\n\t\t\t\tnft_meta_id: { _eq: $nftId }\n\t\t\t}\n\t\t) {\n\t\t\tid\n\t\t\tstate\n\t\t}\n\t}\n`;\n","import { gqlChainRequest } from '../graphql/gqlChainRequest';\nimport { type Lock } from './getLockById';\nimport { fetchActiveLockStateByNftId } from '../graphql/queries/fetchActiveLockStateByNftId';\n\nexport const getActiveLockStateByNftId = async (\n\tnftId: string,\n): Promise<Pick<Lock, 'id' | 'state'>> => {\n\tconst res = await gqlChainRequest({\n\t\tchain: 'sui',\n\t\tquery: fetchActiveLockStateByNftId,\n\t\tvariables: { nftId },\n\t});\n\n\treturn res?.locks?.[0] ?? undefined;\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\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 { fetchMultibidChainIdById } from '../../graphql/queries/fetchMultibidById';\nimport { gqlChainRequest } from '../../graphql/gqlChainRequest';\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}\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 = 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(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 { Transaction } from '@mysten/sui/transactions';\nimport { TRADEPORT_PRICE_LOCK_PACKAGE, TRADEPORT_PRICE_LOCK_STORE } from '../../constants';\nimport { calculatePremium } from '../../helpers/calculatePremium';\nimport { calculateRoyaltyFee } from '../../helpers/calculateRoyaltyFee';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\nimport { getNativeKioskTransferPoliciesByNftType } from '../../helpers/kiosk/getNativeKioskTransferPoliciesByNftType';\nimport type { RequestContext } from '../../SuiTradingClient';\n\nexport interface CreateShortLocks {\n\tnfts: Array<{\n\t\ttype: string;\n\t\tcollectionId: string;\n\t\tpriceInMist: number;\n\t}>;\n}\n\nexport async function createShortLocks(\n\t{ nfts }: CreateShortLocks,\n\tcontext: RequestContext,\n): Promise<Transaction> {\n\t// the current version of smart contract support only these values valid now\n\tconst expireIn = 7 * 24 * 3600 * 1000;\n\n\tconst tx = new Transaction();\n\n\tfor (const argNft of nfts) {\n\t\tconst premium = calculatePremium(BigInt(argNft.priceInMist));\n\n\t\tif (!argNft.type) {\n\t\t\tthrow new Error('Missing nftType');\n\t\t}\n\n\t\tconst transferPolicy = (await getNativeKioskTransferPoliciesByNftType(argNft.type))?.at(0);\n\t\tif (!transferPolicy) {\n\t\t\tthrow new Error(`Missing transfer policy for ${argNft.type}`);\n\t\t}\n\n\t\tconst marketplaceFee = BigInt(\n\t\t\tgetMarketFeePrice({\n\t\t\t\tprice: Number(argNft.priceInMist),\n\t\t\t\tcollectionId: argNft.collectionId,\n\t\t\t}),\n\t\t);\n\n\t\tconst royalty = calculateRoyaltyFee(transferPolicy.rules, BigInt(argNft.priceInMist));\n\n\t\tconst [deposit] = tx.splitCoins(tx.gas, [\n\t\t\tBigInt(argNft.priceInMist) + royalty + marketplaceFee,\n\t\t]);\n\n\t\ttx.moveCall({\n\t\t\ttarget: `${TRADEPORT_PRICE_LOCK_PACKAGE}::tradeport_price_lock::create_short_lock`,\n\t\t\ttypeArguments: [argNft.type],\n\t\t\targuments: [\n\t\t\t\ttx.object(TRADEPORT_PRICE_LOCK_STORE),\n\t\t\t\ttx.pure.u64(BigInt(argNft.priceInMist)),\n\t\t\t\ttx.pure.u64(marketplaceFee),\n\t\t\t\ttx.pure.u64(royalty),\n\t\t\t\ttx.pure.u64(premium),\n\t\t\t\ttx.pure.u64(expireIn),\n\t\t\t\tdeposit,\n\t\t\t],\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 { relistNft } from '../relistNft/relistNft';\nimport { addTradePortListTxHandler } from './addListTxs';\nimport { normalizeSuiAddress } from '@mysten/sui/utils';\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};\n\nexport type ListNft = {\n\tnftId: string;\n\tlistPriceInMist: number;\n\twalletAddress: string;\n};\n\nexport type ListNfts = {\n\tnfts: Array<{\n\t\tid: string;\n\t\tlistPriceInMist: number;\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\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\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// The NFT owner can also relist expired bids\n\t\tif (\n\t\t\tnft?.listed ||\n\t\t\tnft.listings.some(\n\t\t\t\t(listing: { nonce?: string; seller?: string }) =>\n\t\t\t\t\tlisting.nonce &&\n\t\t\t\t\tlisting.seller &&\n\t\t\t\t\tnormalizeSuiAddress(listing.seller) === normalizeSuiAddress(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\ttransferPolicies,\n\t\t\t\tnft,\n\t\t\t\tlistPrice: nfts?.find((n) => n.id === nft?.id)?.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\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: nfts?.find((n) => n.id === nft?.id)?.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\tnftsForTracking.push({\n\t\t\twalletAddress,\n\t\t\tnftType,\n\t\t\tcollectionId: nft?.collection_id,\n\t\t\tlistPrice: nfts?.find((n) => n.id === nft?.id)?.listPriceInMist,\n\t\t\tisRelist: nft?.listed,\n\t\t\tmarketRelistedFrom: nft?.listings?.[0]?.market_name,\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: 'LIST_NFTS',\n\t// \t\titems: nftsForTracking,\n\t// \t});\n\t// }\n\n\treturn Transaction.from(tx);\n};\n","import {\n\tORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK,\n\tTRADEPORT_BENEFICIARY_ADDRESS,\n\tTRADEPORT_KIOSK_LISTING_STORE,\n\tTRADEPORT_LISTING_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 { getNativeKioskTransferPolicies } from '../../helpers/kiosk/getNativeKioskTransferPolicies';\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 { 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}: ListNftTx) {\n\tconst { orderbook } = sharedObjects;\n\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: sellerKiosk,\n\t\twalletAddress: seller,\n\t});\n\n\tconst { kiosk, isNewKiosk } = await getOrCreateOBKiosk({\n\t\ttx,\n\t\taddress: seller,\n\t\tkioskToUseIfExists: sellerKiosk,\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\tawait shareOriginByteKiosk({ tx, kiosk });\n\t}\n}\n\nexport function addTradePortListTx({\n\ttx,\n\tnftTokenId,\n\tborrowedItem,\n\tnftType,\n\tcollectionId,\n\tlistPrice,\n}: ListNftTx) {\n\tconst marketFeePrice = getMarketFeePrice({ price: listPrice, collectionId });\n\n\ttx.moveCall({\n\t\ttarget: '0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::listings::list',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTING_STORE),\n\t\t\tborrowedItem ? tx.object(borrowedItem) : tx.object(nftTokenId),\n\t\t\ttx.pure.u64(listPrice),\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\nexport async function addTradePortKioskListTx({\n\ttx,\n\tkioskTx,\n\ttransferPolicies,\n\tnftTokenId,\n\tnftType,\n\tcollectionId,\n\tlistPrice,\n}: ListNftTx) {\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\tconst marketFeePrice = getMarketFeePrice({ price: listPrice, collectionId });\n\n\ttx.moveCall({\n\t\ttarget:\n\t\t\t'0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_listings::list',\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\ttx.pure.u64(listPrice + marketFeePrice),\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\nexport async function addTradePortListTxHandler(txData: ListNftTx) {\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\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\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\tasync runCommands(kioskTx) {\n\t\t\t\tawait addTradePortKioskListTx({\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 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\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 addTradePortKioskListTx({\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\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_BENEFICIARY_ADDRESS,\n\tTRADEPORT_LISTING_STORE,\n} from '../../constants';\nimport { getMarketFeePrice } from '../../helpers/getMarketFeePrice';\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({\n\ttx,\n\tnftType,\n\tcollectionId,\n\tlistingNonce,\n\tlistPrice,\n}: RelistNftTx) {\n\tconst marketFeePrice = getMarketFeePrice({ price: listPrice, collectionId });\n\n\ttx.moveCall({\n\t\ttarget: '0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::listings::relist',\n\t\targuments: [\n\t\t\ttx.object(TRADEPORT_LISTING_STORE),\n\t\t\ttx.pure.address(listingNonce),\n\t\t\ttx.pure.u64(listPrice),\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\nexport function addBlueMoveRelistTx(txData: RelistNftTx) {\n\tconst { tx, nftTokenId, nftType, listPrice, suiClient } = 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, suiClient });\n}\n\nexport function addTocenRelistTx(txData: RelistNftTx) {\n\tconst { tx, nftTokenId, nftType, listPrice, suiClient } = 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, suiClient });\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 { isNonKioskListing } from '../../helpers/isNonKioskListing';\nimport { kioskTxWrapper } from '../../helpers/kiosk/kioskTxWrapper';\nimport { isOriginByteCollection } from '../../helpers/originByte/isOriginByteCollection';\nimport { normalizedNftType } from '../../utils/normalizeNftType';\nimport { addTradePortKioskListTx, addTradePortListTxHandler } from '../listNfts/addListTxs';\nimport {\n\taddBlueMoveRelistTx,\n\taddTocenRelistTx,\n\taddTradePortRelistTx,\n} from '../listNfts/addRelistTxs';\nimport {\n\taddBluemoveUnlistTxHandler,\n\taddClutchyUnlistTxHandler,\n\taddHyperspaceUnlistTxHandler,\n\taddTradePortKioskUnlistTx,\n\taddTradePortUnlistTxHandler,\n} from '../unlistListings/addUnlistListingTxs';\nimport { type UnlistListingTx } from '../unlistListings/unlistListings';\n\ninterface Args {\n\ttx: Transaction;\n\tsuiClient: SuiClient;\n\tkioskClient: KioskClient;\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\tnft,\n\tlistPrice,\n\ttransferPolicies,\n\twalletAddress,\n}: Args) {\n\tconst txData: UnlistListingTx = {\n\t\ttx,\n\t\tsuiClient,\n\t\tkioskClient,\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: nft?.listings?.[0]?.nonce,\n\t\tprice: nft?.listings?.[0]?.price,\n\t\tsellerKiosk: nft?.chain_state?.kiosk_id,\n\t\tcollectionId: nft?.collection_id,\n\t\tseller: walletAddress,\n\t};\n\n\tswitch (nft?.listings?.[0]?.market_name) {\n\t\tcase 'tradeport':\n\t\t\tif (\n\t\t\t\t(!isOriginByteCollection(txData?.transferPolicies) ||\n\t\t\t\t\tORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))) &&\n\t\t\t\ttxData?.listingNonce &&\n\t\t\t\t(await isNonKioskListing({\n\t\t\t\t\tsuiClient: txData?.suiClient,\n\t\t\t\t\tlistingNonce: txData?.listingNonce,\n\t\t\t\t}))\n\t\t\t) {\n\t\t\t\taddTradePortRelistTx({ ...txData, listPrice });\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\ttxData?.listingNonce &&\n\t\t\t\t\tisOriginByteCollection(txData?.transferPolicies) &&\n\t\t\t\t\t!ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))\n\t\t\t\t) {\n\t\t\t\t\tawait addTradePortUnlistTxHandler(txData);\n\t\t\t\t\tawait addTradePortListTxHandler({\n\t\t\t\t\t\t...txData,\n\t\t\t\t\t\tlistPrice,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\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\tasync runCommands(kioskTx) {\n\t\t\t\t\t\tawait addTradePortKioskUnlistTx({\n\t\t\t\t\t\t\t...txData,\n\t\t\t\t\t\t\tkioskTx,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tawait addTradePortKioskListTx({\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\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 { 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 { 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\tlet globalKioskTx: any;\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\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\tkioskTx: globalKioskTx,\n\t\t\t\tshouldSkipFinalize: true,\n\t\t\t\tshouldConvertToPersonalKiosk: true,\n\t\t\t\tasync runCommands(kioskTx) {\n\t\t\t\t\texistingKioskTx = 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\n\t\t\tglobalKioskTx = existingKioskTx;\n\t\t}\n\t}\n\n\tglobalKioskTx?.finalize();\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 { type KioskClient } from '@mysten/kiosk';\nimport { type SuiClient } from '@mysten/sui/client';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport {\n\tMYSTEN_TRANFER_POLICY_RULES_PACKAGE_ID,\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 { 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}: TransferNftTx) {\n\tawait assertNftInSharedKiosk({\n\t\tkioskId: senderKiosk,\n\t\twalletAddress: senderAddress,\n\t});\n\n\tconst recipientOBKiosk = await getOBKiosk(recipientAddress);\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},\n\tnfts: any[],\n\tsuiClient: SuiClient,\n) {\n\tconst { tx, recipientAddress, kioskClient, senderAddress } = txData;\n\tif (nfts.length === 0) {\n\t\treturn;\n\t}\n\n\tconst [receiverKiosk, receiverKioskCap] = tx.moveCall({\n\t\ttarget: '0x2::kiosk::new',\n\t\targuments: [],\n\t});\n\tconst recipientAddressWithPrefix = addLeadingZerosAfter0x(recipientAddress);\n\ttx.moveCall({\n\t\ttarget: '0x2::kiosk::set_owner_custom',\n\t\targuments: [\n\t\t\ttx.object(receiverKiosk),\n\t\t\ttx.object(receiverKioskCap),\n\t\t\ttx.pure.address(recipientAddressWithPrefix),\n\t\t],\n\t});\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\tasync runCommands(kioskTx) {\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget:\n\t\t\t\t\t\t'0xd0ad5bf7ac7d372cdcfee5273d5e487dabad724040e089c626cba2a01127ccd6::kiosk_transfers::direct_transfer',\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.object(receiverKiosk),\n\t\t\t\t\t\ttx.object(receiverKioskCap),\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\ttx.transferObjects([receiverKioskCap], tx.pure.address(recipientAddressWithPrefix));\n\ttx.moveCall({\n\t\ttarget: '0x2::transfer::public_share_object',\n\t\targuments: [receiverKiosk],\n\t\ttypeArguments: ['0x2::kiosk::Kiosk'],\n\t});\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) => rule.type !== 'kiosk_lock_rule' && rule.type !== 'royalty_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 (!ruleNames.every((name) => name.startsWith(MYSTEN_TRANFER_POLICY_RULES_PACKAGE_ID))) {\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};\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 = existingTx ? Transaction.from(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};\n\n\t\tconst numOfBids = collections?.find((c) => c.id === collection?.id)?.numOfBids;\n\t\tconsole.log('txData', txData);\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\t\t\tconsole.log('sharedObjects', sharedObjects);\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\tawait shareOriginByteKiosk({ 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 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 { fetchMultibidChainIdById } 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';\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} = 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\tif (existingMultiBidChainId) {\n\t\tmultiBidChainId = existingMultiBidChainId;\n\t} else {\n\t\tconst { chain_id: chainId, cancelled_at } = 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: fetchMultibidChainIdById,\n\t\t\t\t\t\tvariables: { multiBidId },\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}\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 [coin] = tx.splitCoins(tx.gas, [multiBidChainId ? 0n : price + fee + royalty]);\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}: 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] = splitCoins({ tx, amounts: [tx.pure.u64(bidAmount + marketFeePrice)] });\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};\n\nexport type PlaceNftBid = {\n\tnftId: string;\n\tbidAmountInMist: number;\n\twalletAddress: string;\n\tmultiBidId?: string;\n\tmultiBidChainId?: any;\n\ttx?: Transaction | string;\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 = existingTx ? Transaction.from(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};\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 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 { 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';\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\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 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} 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 { takeAndBorrowNftFromKiosk } from '../../helpers/kiosk/takeAndBorrowNftFromKiosk';\nimport { isOBKiosk } from '../../helpers/originByte/isOBKiosk';\nimport { getAccountBalance } from '../../helpers/rpc/getAcountBalance';\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\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\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\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, take it out of the kiosk and transfer it directly\n\t\tif (txData?.senderKiosk && !hasNativeKioskTransferPolicyRules(txData?.transferPolicies)) {\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\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 is inside native kiosk\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\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{ tx, kioskClient: context.kioskClient, senderAddress: walletAddress, recipientAddress },\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\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 {\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\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};\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\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 && listing?.seller && normalizeSuiAddress(listing?.seller) === normalizeSuiAddress(walletAddress))) {\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\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\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\tconst kiosksWithProfit = kiosks.filter((kiosk: any) => kiosk.profits > 0);\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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1B,IAAM,0CAA0C;AAAA,EACtD;AACD;AAEO,IAAM,wCAAwC;AAE9C,IAAM,gCAAgC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;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":["import_client","import_graphql_request","import_graphql_request","import_graphql_request","import_transactions","import_graphql_request","import_graphql_request","import_utils","import_graphql_request","import_kiosk","rule","import_kiosk","import_graphql_request","import_graphql_request","import_kiosk","import_graphql_request","import_utils","import_utils","import_graphql_request","transferPolicies","sharedObjects","sharedObjects","import_transactions","import_graphql_request","ERROR_UNLIST_FIRST","import_transactions","import_utils","import_transactions","import_graphql_request","import_graphql_request","import_utils","import_transactions","bid","transferRequest","import_transactions","import_utils","import_transactions","import_graphql_request","import_transactions","import_bcs","import_graphql_request","sharedObjects","import_utils","import_transactions","import_transactions","import_transactions","import_graphql_request","import_transactions","import_transactions","import_graphql_request","import_transactions","import_transactions","import_transactions","import_transactions","import_utils","import_transactions","import_graphql_request","res","import_transactions","import_graphql_request","import_utils","bcs","import_graphql_request","import_transactions","nft","import_transactions","import_utils","import_utils","import_transactions","import_transactions","import_transactions","import_utils","import_kiosk","import_transactions","tx"]}
|