@tradeport/sui-trading-sdk 0.1.0 → 0.1.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @tradeport/sui-trading-sdk
2
2
 
3
+ ## 0.1.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 73006f7: Fixed S Card trading issues
8
+
9
+ ## 0.1.1
10
+
11
+ ### Patch Changes
12
+
13
+ - 6ef2c2b: Fixed Goats of Sui collection trading
14
+
3
15
  ## 0.1.0
4
16
 
5
17
  ### Minor Changes
package/dist/index.js CHANGED
@@ -243,6 +243,9 @@ var BASC_ROYALTY_DECIMAL_PERCENT = 0.055;
243
243
  var DSL_LEGACY_ROYALTY_DECIMAL_PERCENT = 0.05;
244
244
  var PREMIUM_NOMINATOR = 300n;
245
245
  var PREMIUM_FEE_NOMINATOR = 2500n;
246
+ var ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK = [
247
+ "0xc4fc5b341858ac6fff4859d8105e345b195847cd230e8538d61a2f319ae8093c::bluemove_launchpad::GOATsOfSui"
248
+ ];
246
249
 
247
250
  // src/graphql/queries/fetchSharedObjectsByType.ts
248
251
  var import_graphql_request6 = require("graphql-request");
@@ -296,18 +299,15 @@ var getSharedObjects = async (nftType) => {
296
299
  if (nftType === "0x5fe8e884960f6977f813d871a3d43049d72d19d4ad07819b979c06434f60af4d::mint::SuiEcosystemNFT") {
297
300
  allowList = SUI_ECOSYSTEM_ORIGIN_BYTE_ALLOW_LIST_OBJECT;
298
301
  }
299
- let transferPolicy = res?.sharedObjects?.filter(
302
+ const transferPolicy = res?.sharedObjects?.filter(
300
303
  (object) => object?.module === "transfer_policy"
301
304
  )?.[0]?.id;
305
+ let orderbook = res?.sharedObjects?.filter((object) => object?.module === "orderbook")?.[0]?.id;
302
306
  if (nftTypeSplit?.join("::")?.includes("keepsake_nft::KEEPSAKE")) {
303
- transferPolicy = res?.sharedObjects?.filter(
304
- (object) => object?.type?.includes(
305
- "0x02be8c4a1a3cea4d3255d870d367c87838a8cc2bfe4f216a6b67b153027087a7::transfer_policy::TransferPolicy"
306
- )
307
- )?.[0]?.id;
307
+ orderbook = null;
308
308
  }
309
309
  return {
310
- orderbook: res?.sharedObjects?.filter((object) => object?.module === "orderbook")?.[0]?.id,
310
+ orderbook,
311
311
  collection: res?.sharedObjects?.filter((object) => object?.module === "collection")?.[0]?.id,
312
312
  marketplace: res?.sharedObjects?.filter((object) => object?.module === "marketplace")?.[0]?.id,
313
313
  royaltyStrategy: res?.sharedObjects?.filter(
@@ -321,6 +321,17 @@ var getSharedObjects = async (nftType) => {
321
321
  };
322
322
  };
323
323
 
324
+ // src/utils/normalizeNftType.ts
325
+ var normalizedNftType = (nftType) => {
326
+ const nftTypeSplit = nftType?.split("::");
327
+ if (nftTypeSplit?.[0])
328
+ nftTypeSplit[0] = addLeadingZerosAfter0x(nftTypeSplit[0]);
329
+ return nftTypeSplit?.join("::");
330
+ };
331
+
332
+ // src/helpers/getRoyaltyRuleModule.ts
333
+ var getRoyaltyRuleModule = (nftType) => normalizedNftType(nftType) === "0xe7e651e4974fe367aa2837712d68081efb299c470242a15e2b9c26ea326159ec::card::SudoCard" ? "kiosk_royalty_rule" : "royalty_rule";
334
+
324
335
  // src/graphql/queries/fetchTransferPoliciesByType.ts
325
336
  var import_graphql_request7 = require("graphql-request");
326
337
  var fetchTransferPoliciesByType = import_graphql_request7.gql`
@@ -334,14 +345,6 @@ var fetchTransferPoliciesByType = import_graphql_request7.gql`
334
345
  }
335
346
  `;
336
347
 
337
- // src/utils/normalizeNftType.ts
338
- var normalizedNftType = (nftType) => {
339
- const nftTypeSplit = nftType?.split("::");
340
- if (nftTypeSplit?.[0])
341
- nftTypeSplit[0] = addLeadingZerosAfter0x(nftTypeSplit[0]);
342
- return nftTypeSplit?.join("::");
343
- };
344
-
345
348
  // src/helpers/kiosk/getKioskTransferPolicies.ts
346
349
  var getKioskTransferPolicies = async (nftType) => {
347
350
  const res = await gqlChainRequest({
@@ -865,7 +868,8 @@ async function addTradeportKioskAcceptNftBidTx({
865
868
  bidNonce,
866
869
  nftTokenId,
867
870
  nftType,
868
- royaltyRulePackageId
871
+ royaltyRulePackageId,
872
+ royaltyRuleModule
869
873
  }) {
870
874
  const { transferPolicy } = sharedObjects;
871
875
  const [feeCoin, transferRequest] = tx.moveCall({
@@ -882,7 +886,7 @@ async function addTradeportKioskAcceptNftBidTx({
882
886
  typeArguments: [nftType]
883
887
  });
884
888
  tx.moveCall({
885
- target: `${royaltyRulePackageId}::royalty_rule::pay`,
889
+ target: `${royaltyRulePackageId}::${royaltyRuleModule}::pay`,
886
890
  typeArguments: [nftType],
887
891
  arguments: [tx.object(transferPolicy), transferRequest, feeCoin]
888
892
  });
@@ -970,7 +974,8 @@ async function addTradePortAcceptNftBidTxHandler(txData) {
970
974
  }
971
975
  if (isTradePortKioskBid(bidType)) {
972
976
  if (txData?.sellerKiosk) {
973
- const royaltyRulePackageId = await getRulePackageId(txData.nftType, "royalty_rule");
977
+ const royaltyRuleModule = getRoyaltyRuleModule(txData?.nftType);
978
+ const royaltyRulePackageId = await getRulePackageId(txData.nftType, royaltyRuleModule);
974
979
  return kioskTxWrapper({
975
980
  tx: txData?.tx,
976
981
  kioskTx: txData?.kioskTx,
@@ -980,7 +985,8 @@ async function addTradePortAcceptNftBidTxHandler(txData) {
980
985
  await addTradeportKioskAcceptNftBidTx({
981
986
  ...txData,
982
987
  kioskTx,
983
- royaltyRulePackageId
988
+ royaltyRulePackageId,
989
+ royaltyRuleModule
984
990
  });
985
991
  }
986
992
  });
@@ -1130,7 +1136,7 @@ function addSomisUnlistTx({
1130
1136
  });
1131
1137
  }
1132
1138
  async function addTradePortUnlistTxHandler(txData) {
1133
- if (txData?.listingNonce && isOriginByteTx(txData?.sharedObjects)) {
1139
+ if (txData?.listingNonce && isOriginByteTx(txData?.sharedObjects) && !ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))) {
1134
1140
  addOriginByteUnlistTx(txData);
1135
1141
  return;
1136
1142
  }
@@ -1154,7 +1160,7 @@ async function addTradePortUnlistTxHandler(txData) {
1154
1160
  addTradePortUnlistTx(txData);
1155
1161
  }
1156
1162
  async function addHyperspaceUnlistTxHandler(txData) {
1157
- if (txData?.listingNonce && isOriginByteTx(txData?.sharedObjects)) {
1163
+ if (txData?.listingNonce && isOriginByteTx(txData?.sharedObjects) && !ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))) {
1158
1164
  addOriginByteUnlistTx(txData);
1159
1165
  return;
1160
1166
  }
@@ -1171,7 +1177,7 @@ async function addHyperspaceUnlistTxHandler(txData) {
1171
1177
  });
1172
1178
  }
1173
1179
  async function addBluemoveUnlistTxHandler(txData) {
1174
- if (txData?.listingNonce && isOriginByteTx(txData?.sharedObjects)) {
1180
+ if (txData?.listingNonce && isOriginByteTx(txData?.sharedObjects) && !ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))) {
1175
1181
  addOriginByteUnlistTx(txData);
1176
1182
  return;
1177
1183
  }
@@ -1399,7 +1405,8 @@ async function addTradePortAcceptCollectionBidTxHandler(txData) {
1399
1405
  }
1400
1406
  if (isTradePortKioskBid(bidType)) {
1401
1407
  if (txData?.sellerKiosk) {
1402
- const royaltyRulePackageId = await getRulePackageId(txData.nftType, "royalty_rule");
1408
+ const royaltyRuleModule = getRoyaltyRuleModule(txData?.nftType);
1409
+ const royaltyRulePackageId = await getRulePackageId(txData.nftType, royaltyRuleModule);
1403
1410
  return kioskTxWrapper({
1404
1411
  tx: txData?.tx,
1405
1412
  kioskOwner: txData?.itemOwner,
@@ -1408,13 +1415,15 @@ async function addTradePortAcceptCollectionBidTxHandler(txData) {
1408
1415
  await addTradeportKioskAcceptCollectionBidTx({
1409
1416
  ...txData,
1410
1417
  kioskTx,
1411
- royaltyRulePackageId
1418
+ royaltyRulePackageId,
1419
+ royaltyRuleModule
1412
1420
  });
1413
1421
  }
1414
1422
  });
1415
1423
  }
1416
1424
  if (await hasTransferPolicyRules(txData?.nftType) && !txData?.sellerKiosk) {
1417
- const royaltyRulePackageId = await getRulePackageId(txData.nftType, "royalty_rule");
1425
+ const royaltyRuleModule = getRoyaltyRuleModule(txData?.nftType);
1426
+ const royaltyRulePackageId = await getRulePackageId(txData.nftType, royaltyRuleModule);
1418
1427
  return kioskTxWrapper({
1419
1428
  tx: txData?.tx,
1420
1429
  kioskOwner: txData?.seller,
@@ -1427,7 +1436,8 @@ async function addTradePortAcceptCollectionBidTxHandler(txData) {
1427
1436
  await addTradeportKioskAcceptCollectionBidTx({
1428
1437
  ...txData,
1429
1438
  kioskTx,
1430
- royaltyRulePackageId
1439
+ royaltyRulePackageId,
1440
+ royaltyRuleModule
1431
1441
  });
1432
1442
  }
1433
1443
  });
@@ -2521,7 +2531,7 @@ async function addTradePortKioskListTx({
2521
2531
  });
2522
2532
  }
2523
2533
  async function addTradePortListTxHandler(txData) {
2524
- if (isOriginByteTx(txData?.sharedObjects)) {
2534
+ if (isOriginByteTx(txData?.sharedObjects) && !ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))) {
2525
2535
  await addOriginByteListTx(txData);
2526
2536
  return;
2527
2537
  }
@@ -2627,7 +2637,7 @@ async function relistNft({ tx, nft, listPrice, sharedObjects, walletAddress }) {
2627
2637
  };
2628
2638
  switch (nft?.listings?.[0]?.market_name) {
2629
2639
  case "tradeport":
2630
- if (!isOriginByteTx(txData?.sharedObjects) && txData?.listingNonce && await isNonKioskListing(txData?.listingNonce)) {
2640
+ if ((!isOriginByteTx(txData?.sharedObjects) || ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))) && txData?.listingNonce && await isNonKioskListing(txData?.listingNonce)) {
2631
2641
  addTradePortRelistTx({ ...txData, listPrice });
2632
2642
  } else {
2633
2643
  return kioskTxWrapper({
@@ -2653,7 +2663,7 @@ async function relistNft({ tx, nft, listPrice, sharedObjects, walletAddress }) {
2653
2663
  await addTradePortListTxHandler({ ...txData, listPrice });
2654
2664
  break;
2655
2665
  case "bluemove":
2656
- if (!isOriginByteTx(txData?.sharedObjects) && !txData?.sellerKiosk) {
2666
+ if (!isOriginByteTx(txData?.sharedObjects) || ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType)) && !txData?.sellerKiosk) {
2657
2667
  addBlueMoveRelistTx({ ...txData, listPrice });
2658
2668
  } else {
2659
2669
  await addBluemoveUnlistTxHandler(txData);
@@ -2880,8 +2890,11 @@ async function addOriginByteCollectionBidTx({
2880
2890
  }
2881
2891
  async function addTradePortPlaceCollectionBidTxHandler(txData) {
2882
2892
  if (await hasRoyaltyRule(txData?.nftType)) {
2883
- const royaltyRuleModule = txData?.collectionId === "fa58ae52-b18d-4179-a2d4-c2471ede5f14" ? "kiosk_royalty_rule" : "royalty_rule";
2884
- const royaltyRulePackageId = await getRulePackageId(txData.nftType, royaltyRuleModule);
2893
+ const royaltyRuleModule = getRoyaltyRuleModule(txData?.nftType);
2894
+ const royaltyRulePackageId = await getRulePackageId(
2895
+ txData.nftType,
2896
+ getRoyaltyRuleModule(txData?.collectionId)
2897
+ );
2885
2898
  addTradePortKioskCollectionBidTx({ ...txData, royaltyRulePackageId, royaltyRuleModule });
2886
2899
  return;
2887
2900
  }
@@ -2929,7 +2942,7 @@ var placeCollectionBids = async ({
2929
2942
  bidAmount: collections?.find((c) => c.id === collection?.id)?.bidAmountInMist
2930
2943
  };
2931
2944
  const numOfBids = collections?.find((c) => c.id === collection?.id)?.numOfBids;
2932
- if (isOriginByteTx(txData?.sharedObjects)) {
2945
+ if (isOriginByteTx(txData?.sharedObjects) && !ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))) {
2933
2946
  const { kiosk: bidderKiosk, isNewKiosk: isNewBidderKiosk } = await getOrCreateOBKiosk({
2934
2947
  tx,
2935
2948
  address: txData.bidder
@@ -2984,12 +2997,13 @@ function addTradePortKioskPlaceNftBidTx({
2984
2997
  nftTokenId,
2985
2998
  nftType,
2986
2999
  bidAmount,
2987
- royaltyRulePackageId
3000
+ royaltyRulePackageId,
3001
+ royaltyRuleModule
2988
3002
  }) {
2989
3003
  const { transferPolicy } = sharedObjects;
2990
3004
  const marketFeePrice = getMarketFeePrice({ price: bidAmount, collectionId });
2991
3005
  const royaltyCoin = tx.moveCall({
2992
- target: `${royaltyRulePackageId}::royalty_rule::fee_amount`,
3006
+ target: `${royaltyRulePackageId}::${royaltyRuleModule}::fee_amount`,
2993
3007
  arguments: [tx.object(transferPolicy), tx.pure.u64(bidAmount?.toString())],
2994
3008
  typeArguments: [nftType]
2995
3009
  });
@@ -3041,13 +3055,14 @@ async function addOriginBytePlaceNftBidTx({
3041
3055
  destroyZeroCoin({ tx, coin });
3042
3056
  }
3043
3057
  async function addTradePortPlaceNftBidTxHandler(txData) {
3044
- if (isOriginByteTx(txData?.sharedObjects)) {
3058
+ if (isOriginByteTx(txData?.sharedObjects) && !ORIGIN_BYTE_NFT_TYPES_MISSING_ORDERBOOK?.includes(normalizedNftType(txData?.nftType))) {
3045
3059
  await addOriginBytePlaceNftBidTx(txData);
3046
3060
  return;
3047
3061
  }
3048
3062
  if (await hasTransferPolicyRules(txData?.nftType) && txData?.sellerKiosk) {
3049
- const royaltyRulePackageId = await getRulePackageId(txData.nftType, "royalty_rule");
3050
- addTradePortKioskPlaceNftBidTx({ ...txData, royaltyRulePackageId });
3063
+ const royaltyRuleModule = getRoyaltyRuleModule(txData?.nftType);
3064
+ const royaltyRulePackageId = await getRulePackageId(txData.nftType, royaltyRuleModule);
3065
+ addTradePortKioskPlaceNftBidTx({ ...txData, royaltyRulePackageId, royaltyRuleModule });
3051
3066
  return;
3052
3067
  }
3053
3068
  addTradePortPlaceNftBidTx(txData);