@tradeport/sui-trading-sdk 0.4.35 → 0.4.37

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 CHANGED
@@ -149,7 +149,7 @@ var TRADEPORT_KIOSK_BIDDING_ESCROW_KIOSK = "0x151fbe627d3f8de855f424c879ea2176d8
149
149
  var TRADEPORT_KIOSK_BID_NONCE_TYPE = "0xec175e537be9e48f75fa6929291de6454d2502f1091feb22c0d26a22821bbf28::kiosk_biddings::Bid";
150
150
  var TRADEPORT_PRICE_LOCK_PACKAGE = "0x3cb532a2548290780a3d70ad6f4f06abc5bebb75ec6f8dd0197d4d2b2860c5d8";
151
151
  var TRADEPORT_PRICE_LOCK_STORE = "0x4b705de46a79b29276baf45009bc7d6f70cc0f1407f0c9e03cac5729c0c47946";
152
- var TRADEPORT_MULTI_BID_PACKAGE = "0x6058c583a0c0c893006036cad0d4f5399479c7e140747cb703457aee8b158e9f";
152
+ var TRADEPORT_MULTI_BID_PACKAGE = "0xd1dedf8379f1781469e95cb92eed7e155c8ad141c8528c3855f59ce2a5d9d659";
153
153
  var TRADEPORT_MULTI_BID_PACKAGE_ORIGINAL = "0x53134eb544c5a0b5085e99efaf7eab13b28ad123de35d61f941f8c8c40b72033";
154
154
  var TRADEPORT_MULTI_BID_STORE = "0x8aaed7e884343fb8b222c721d02eaac2c6ae2abbb4ddcdf16cb55cf8754ee860";
155
155
  var COLLECTION_IDS_WITH_ZERO_COMMISSION = [
@@ -2166,6 +2166,28 @@ var fetchMultibidChainIdById = import_graphql_request11.gql`
2166
2166
  }
2167
2167
  }
2168
2168
  `;
2169
+ var fetchMultibidChainIdAndSingleBidsById = import_graphql_request11.gql`
2170
+ query fetchMultibidChainIdAndSingleBidsById($multiBidId: uuid!) {
2171
+ multi_bids(where: { id: { _eq: $multiBidId } }) {
2172
+ chain_id
2173
+ cancelled_at
2174
+ bids(where: { status: { _in: ["active", "inactive", "expired"] } }) {
2175
+ nonce
2176
+ }
2177
+ }
2178
+ }
2179
+ `;
2180
+ var fetchMultibidChainIdAndExpiredSingleBidsById = import_graphql_request11.gql`
2181
+ query fetchMultibidChainIdAndExpiredSingleBidsById($multiBidId: uuid!) {
2182
+ multi_bids(where: { id: { _eq: $multiBidId } }) {
2183
+ chain_id
2184
+ cancelled_at
2185
+ bids(where: { status: { _eq: "expired" } }, limit: 1021) {
2186
+ nonce
2187
+ }
2188
+ }
2189
+ }
2190
+ `;
2169
2191
 
2170
2192
  // src/helpers/kiosk/lockNftInsideKioskIfNotLocked.ts
2171
2193
  var lockNftInsideKioskIfNotLocked = async ({
@@ -4722,11 +4744,100 @@ async function cancelLocks({ lockIds, walletAddress, tx: existingTx }, context)
4722
4744
 
4723
4745
  // src/methods/cancelMultiBid/cancelMultiBid.ts
4724
4746
  var import_transactions13 = require("@mysten/sui/transactions");
4725
- async function cancelMultiBid({ multiBidId }) {
4726
- const { chain_id: multiBidChainId, cancelled_at } = (await gqlChainRequest({
4747
+
4748
+ // src/methods/removeNftBids/addRemoveNftBidTxs.ts
4749
+ var import_utils9 = require("@mysten/sui/utils");
4750
+ function addTradeportRemoveNftBidTx({ tx, bidNonce, nftType }) {
4751
+ tx.moveCall({
4752
+ target: "0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::cancel_bid",
4753
+ arguments: [tx.object(TRADEPORT_BIDDING_STORE), tx.pure.address(bidNonce)],
4754
+ typeArguments: [nftType]
4755
+ });
4756
+ }
4757
+ function addTradeportKioskRemoveNftBidTx({ tx, bidNonce, nftType }) {
4758
+ tx.moveCall({
4759
+ target: "0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::cancel_bid",
4760
+ arguments: [tx.object(TRADEPORT_KIOSK_BIDDING_STORE), tx.pure.address(bidNonce)],
4761
+ typeArguments: [nftType]
4762
+ });
4763
+ }
4764
+ function addOriginByteRemoveNftBidTx({ tx, bidNonce }) {
4765
+ tx.moveCall({
4766
+ target: "0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::bidding::close_bid",
4767
+ arguments: [tx.object(bidNonce)],
4768
+ typeArguments: ["0x2::sui::SUI"]
4769
+ });
4770
+ }
4771
+ function addBluemoveRemoveNftBidTx({ tx, bidNonce, nftTokenId, nftType }) {
4772
+ tx.moveCall({
4773
+ target: "0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::offer_item::cancel_offer_nft",
4774
+ arguments: [
4775
+ tx.object(BLUEMOVE_OFFER_DATA_OBJECT),
4776
+ tx.pure.address(nftTokenId),
4777
+ tx.pure.u64(bidNonce)
4778
+ ],
4779
+ typeArguments: [nftType]
4780
+ });
4781
+ }
4782
+ function addTocenRemoveNftBidTx({ tx, nftTokenId, bidAmount }) {
4783
+ tx.moveCall({
4784
+ target: "0x3605d91c559e80cf8fdeabae9abaccb0bc38f96eac0b32bf47e95a9159a5277f::tocen_marketplace::cancel_offer",
4785
+ arguments: [
4786
+ tx.object(TOCEN_MARKETPLACE_OBJECT),
4787
+ tx.pure.address(nftTokenId),
4788
+ tx.pure.u64(bidAmount)
4789
+ ],
4790
+ typeArguments: []
4791
+ });
4792
+ }
4793
+ async function addSingleBidRemoveNftBidTx({ tx, bidNonce, multiBidId }) {
4794
+ const multiBidChainId = multiBidId ? (await gqlChainRequest({
4727
4795
  chain: "sui",
4728
4796
  query: fetchMultibidChainIdById,
4729
4797
  variables: { multiBidId }
4798
+ }))?.multi_bids?.[0]?.chain_id : void 0;
4799
+ addCancelSingleBidForMultibidChainId(tx, bidNonce, multiBidChainId);
4800
+ }
4801
+ function addCancelSingleBidForMultibidChainId(tx, bidNonce, multiBidChainId) {
4802
+ tx.moveCall({
4803
+ target: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::cancel_bid`,
4804
+ arguments: [
4805
+ tx.object(TRADEPORT_MULTI_BID_STORE),
4806
+ tx.pure.id((0, import_utils9.normalizeSuiObjectId)(bidNonce)),
4807
+ tx.pure.option("id", multiBidChainId)
4808
+ ]
4809
+ });
4810
+ }
4811
+ async function addTradePortRemoveNftBidTxHandler(txData) {
4812
+ const bidType = await getObjectType({
4813
+ suiClient: txData?.suiClient,
4814
+ objectId: (0, import_utils9.normalizeSuiObjectId)(txData?.bidNonce)
4815
+ });
4816
+ if (isSingleBid(bidType)) {
4817
+ await addSingleBidRemoveNftBidTx(txData);
4818
+ return;
4819
+ }
4820
+ if (isOriginByteBid(bidType)) {
4821
+ addOriginByteRemoveNftBidTx(txData);
4822
+ return;
4823
+ }
4824
+ if (isTradePortKioskBid(bidType)) {
4825
+ addTradeportKioskRemoveNftBidTx(txData);
4826
+ return;
4827
+ }
4828
+ addTradeportRemoveNftBidTx(txData);
4829
+ }
4830
+
4831
+ // src/methods/cancelMultiBid/cancelMultiBid.ts
4832
+ async function cancelMultiBid({ multiBidId }) {
4833
+ const {
4834
+ chain_id: multiBidChainId,
4835
+ cancelled_at,
4836
+ bids
4837
+ } = (await gqlChainRequest({
4838
+ chain: "sui",
4839
+ query: fetchMultibidChainIdAndSingleBidsById,
4840
+ variables: { multiBidId }
4730
4841
  }))?.multi_bids?.[0] ?? {};
4731
4842
  if (!multiBidChainId) {
4732
4843
  throw new Error(`MultiBid ${multiBidId} not found`);
@@ -4735,6 +4846,12 @@ async function cancelMultiBid({ multiBidId }) {
4735
4846
  throw new Error(`MultiBid ${multiBidId} already cancelled`);
4736
4847
  }
4737
4848
  const tx = new import_transactions13.Transaction();
4849
+ if (bids.length > 1022) {
4850
+ throw new Error(`Too many bids to cancel in one transaction`);
4851
+ }
4852
+ for (const bid of bids ?? []) {
4853
+ addCancelSingleBidForMultibidChainId(tx, bid.nonce, multiBidChainId);
4854
+ }
4738
4855
  tx.moveCall({
4739
4856
  target: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::cancel_multi_bid`,
4740
4857
  arguments: [tx.object(TRADEPORT_MULTI_BID_STORE), tx.pure.id(multiBidChainId)]
@@ -5416,7 +5533,7 @@ async function createShortLocks({ nfts }, context) {
5416
5533
 
5417
5534
  // src/methods/listNfts/listNfts.ts
5418
5535
  var import_transactions18 = require("@mysten/sui/transactions");
5419
- var import_utils9 = require("@mysten/sui/utils");
5536
+ var import_utils10 = require("@mysten/sui/utils");
5420
5537
 
5421
5538
  // src/methods/listNfts/addListTxs.ts
5422
5539
  async function addOriginByteListTx({
@@ -5761,7 +5878,7 @@ var listNfts = async ({ nfts, walletAddress }, context) => {
5761
5878
  });
5762
5879
  const transferPolicies = nft?.collection?.chain_state?.transfer_policies;
5763
5880
  if (nft?.listed || nft.listings.some(
5764
- (listing) => listing.nonce && listing.seller && (0, import_utils9.normalizeSuiAddress)(listing.seller) === (0, import_utils9.normalizeSuiAddress)(walletAddress)
5881
+ (listing) => listing.nonce && listing.seller && (0, import_utils10.normalizeSuiAddress)(listing.seller) === (0, import_utils10.normalizeSuiAddress)(walletAddress)
5765
5882
  )) {
5766
5883
  await relistNft({
5767
5884
  tx,
@@ -6217,7 +6334,7 @@ var fetchCollectionsBySlug = import_graphql_request20.gql`
6217
6334
  `;
6218
6335
 
6219
6336
  // src/methods/placeNftBids/addPlaceNftBidTxs.ts
6220
- var import_utils10 = require("@mysten/sui/utils");
6337
+ var import_utils11 = require("@mysten/sui/utils");
6221
6338
  async function addTradePortPlaceNftBidTxHandler(txData) {
6222
6339
  if (isOriginByteCollection(txData?.transferPolicies) && !ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))) {
6223
6340
  throw new Error("OriginByte bidding not supported currently");
@@ -6238,21 +6355,27 @@ async function addTradePortPlaceNftBidTxHandler(txData) {
6238
6355
  if (!bcsHex) {
6239
6356
  throw new Error(`No BCS found for token ${nftTokenId}`);
6240
6357
  }
6241
- bcs4 = (0, import_utils10.fromHex)(bcsHex);
6358
+ bcs4 = (0, import_utils11.fromHex)(bcsHex);
6242
6359
  }
6243
6360
  let multiBidChainId;
6361
+ let expiredBids;
6244
6362
  if (existingMultiBidChainId) {
6245
6363
  multiBidChainId = existingMultiBidChainId;
6246
6364
  } else {
6247
- const { chain_id: chainId, cancelled_at } = multiBidId ? (await gqlChainRequest({
6365
+ const {
6366
+ chain_id: chainId,
6367
+ cancelled_at,
6368
+ bids
6369
+ } = multiBidId ? (await gqlChainRequest({
6248
6370
  chain: "sui",
6249
- query: fetchMultibidChainIdById,
6371
+ query: fetchMultibidChainIdAndExpiredSingleBidsById,
6250
6372
  variables: { multiBidId }
6251
6373
  }))?.multi_bids?.[0] ?? {} : {};
6252
6374
  if (chainId && cancelled_at) {
6253
6375
  throw new Error(`MultiBid ${chainId} already cancelled`);
6254
6376
  }
6255
6377
  multiBidChainId = chainId;
6378
+ expiredBids = bids;
6256
6379
  }
6257
6380
  const transferPolicies = getNativeKioskTransferPolicies(txData?.transferPolicies);
6258
6381
  const transferPolicy = transferPolicies?.find(
@@ -6271,6 +6394,11 @@ async function addTradePortPlaceNftBidTxHandler(txData) {
6271
6394
  royalty = BigInt(min_amount ?? 0n);
6272
6395
  }
6273
6396
  }
6397
+ if (multiBidChainId) {
6398
+ for (const { nonce } of expiredBids ?? []) {
6399
+ addCancelSingleBidForMultibidChainId(tx, nonce, multiBidChainId);
6400
+ }
6401
+ }
6274
6402
  const [coin] = tx.splitCoins(coinToSplit ? coinToSplit : tx.gas, [
6275
6403
  multiBidChainId ? 0n : price + fee + royalty
6276
6404
  ]);
@@ -6280,12 +6408,12 @@ async function addTradePortPlaceNftBidTxHandler(txData) {
6280
6408
  arguments: [
6281
6409
  tx.object(TRADEPORT_MULTI_BID_STORE),
6282
6410
  tx.pure.u64(nftTokenId ? 1 : 0),
6283
- multiBidChainId ? typeof multiBidChainId === "string" ? tx.pure.option("id", (0, import_utils10.normalizeSuiObjectId)(multiBidChainId)) : tx.moveCall({
6411
+ multiBidChainId ? typeof multiBidChainId === "string" ? tx.pure.option("id", (0, import_utils11.normalizeSuiObjectId)(multiBidChainId)) : tx.moveCall({
6284
6412
  target: "0x1::option::some",
6285
6413
  typeArguments: ["0x2::object::ID"],
6286
6414
  arguments: [multiBidChainId]
6287
6415
  }) : void 0,
6288
- tx.pure.option("id", nftTokenId ? (0, import_utils10.normalizeSuiObjectId)(nftTokenId) : void 0),
6416
+ tx.pure.option("id", nftTokenId ? (0, import_utils11.normalizeSuiObjectId)(nftTokenId) : void 0),
6289
6417
  tx.pure.option("vector<u8>", bcs4 ? [...bcs4] : void 0),
6290
6418
  tx.pure.option("u64", expireAt?.getTime()),
6291
6419
  tx.pure.u64(price),
@@ -6499,88 +6627,6 @@ var import_transactions22 = require("@mysten/sui/transactions");
6499
6627
 
6500
6628
  // src/methods/removeCollectionBids/addRemoveCollectionBidsTxs.ts
6501
6629
  var import_utils12 = require("@mysten/sui/utils");
6502
-
6503
- // src/methods/removeNftBids/addRemoveNftBidTxs.ts
6504
- var import_utils11 = require("@mysten/sui/utils");
6505
- function addTradeportRemoveNftBidTx({ tx, bidNonce, nftType }) {
6506
- tx.moveCall({
6507
- target: "0xb42dbb7413b79394e1a0175af6ae22b69a5c7cc5df259cd78072b6818217c027::biddings::cancel_bid",
6508
- arguments: [tx.object(TRADEPORT_BIDDING_STORE), tx.pure.address(bidNonce)],
6509
- typeArguments: [nftType]
6510
- });
6511
- }
6512
- function addTradeportKioskRemoveNftBidTx({ tx, bidNonce, nftType }) {
6513
- tx.moveCall({
6514
- target: "0x475e98e9c436ec118909f3b9e241d86bcbbc2cf9fba05e99a934823fefb375b7::kiosk_biddings::cancel_bid",
6515
- arguments: [tx.object(TRADEPORT_KIOSK_BIDDING_STORE), tx.pure.address(bidNonce)],
6516
- typeArguments: [nftType]
6517
- });
6518
- }
6519
- function addOriginByteRemoveNftBidTx({ tx, bidNonce }) {
6520
- tx.moveCall({
6521
- target: "0x8534e4cdfd28709c94330a9783c3d5fe6f5daba0bffb69102ce303c5b38aed5a::bidding::close_bid",
6522
- arguments: [tx.object(bidNonce)],
6523
- typeArguments: ["0x2::sui::SUI"]
6524
- });
6525
- }
6526
- function addBluemoveRemoveNftBidTx({ tx, bidNonce, nftTokenId, nftType }) {
6527
- tx.moveCall({
6528
- target: "0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::offer_item::cancel_offer_nft",
6529
- arguments: [
6530
- tx.object(BLUEMOVE_OFFER_DATA_OBJECT),
6531
- tx.pure.address(nftTokenId),
6532
- tx.pure.u64(bidNonce)
6533
- ],
6534
- typeArguments: [nftType]
6535
- });
6536
- }
6537
- function addTocenRemoveNftBidTx({ tx, nftTokenId, bidAmount }) {
6538
- tx.moveCall({
6539
- target: "0x3605d91c559e80cf8fdeabae9abaccb0bc38f96eac0b32bf47e95a9159a5277f::tocen_marketplace::cancel_offer",
6540
- arguments: [
6541
- tx.object(TOCEN_MARKETPLACE_OBJECT),
6542
- tx.pure.address(nftTokenId),
6543
- tx.pure.u64(bidAmount)
6544
- ],
6545
- typeArguments: []
6546
- });
6547
- }
6548
- async function addSingleBidRemoveNftBidTx({ tx, bidNonce, multiBidId }) {
6549
- const multiBidChainId = multiBidId ? (await gqlChainRequest({
6550
- chain: "sui",
6551
- query: fetchMultibidChainIdById,
6552
- variables: { multiBidId }
6553
- }))?.multi_bids?.[0]?.chain_id : void 0;
6554
- tx.moveCall({
6555
- target: `${TRADEPORT_MULTI_BID_PACKAGE}::tradeport_biddings::cancel_bid`,
6556
- arguments: [
6557
- tx.object(TRADEPORT_MULTI_BID_STORE),
6558
- tx.pure.id((0, import_utils11.normalizeSuiObjectId)(bidNonce)),
6559
- tx.pure.option("id", multiBidChainId)
6560
- ]
6561
- });
6562
- }
6563
- async function addTradePortRemoveNftBidTxHandler(txData) {
6564
- const bidType = await getObjectType({
6565
- suiClient: txData?.suiClient,
6566
- objectId: (0, import_utils11.normalizeSuiObjectId)(txData?.bidNonce)
6567
- });
6568
- if (isSingleBid(bidType)) {
6569
- await addSingleBidRemoveNftBidTx(txData);
6570
- return;
6571
- }
6572
- if (isOriginByteBid(bidType)) {
6573
- addOriginByteRemoveNftBidTx(txData);
6574
- return;
6575
- }
6576
- if (isTradePortKioskBid(bidType)) {
6577
- addTradeportKioskRemoveNftBidTx(txData);
6578
- return;
6579
- }
6580
- addTradeportRemoveNftBidTx(txData);
6581
- }
6582
-
6583
- // src/methods/removeCollectionBids/addRemoveCollectionBidsTxs.ts
6584
6630
  function addTradeportRemoveCollectionBidTx({
6585
6631
  tx,
6586
6632
  nftType,
@@ -7020,7 +7066,10 @@ async function withdrawProfitsFromKiosks({ walletAddress }, context) {
7020
7066
  if (kiosks.length === 0) {
7021
7067
  throw new Error(`No kiosks found for ${walletAddress}`);
7022
7068
  }
7023
- const kiosksWithProfit = kiosks.filter((kiosk) => kiosk.profits > 0);
7069
+ let kiosksWithProfit = kiosks.filter((kiosk) => kiosk.profits > 0);
7070
+ if (walletAddress === "0xf4fc8a9192266540ce12f4062c3e00aa91f91e5ec8a6a029ebee7970ea0f0ffb") {
7071
+ kiosksWithProfit = kiosksWithProfit.slice(0, 10);
7072
+ }
7024
7073
  if (kiosksWithProfit.length === 0) {
7025
7074
  throw new Error(`No kiosks with profit to withdraw found for ${walletAddress}`);
7026
7075
  }