@tradeport/sui-trading-sdk 0.4.15 → 0.4.16

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
@@ -1319,7 +1319,10 @@ var hasPersonalKioskRule = (transferPolicies) => getNativeKioskTransferPolicies(
1319
1319
  );
1320
1320
 
1321
1321
  // src/helpers/hasTransferPolicyRules.ts
1322
- var hasNativeKioskTransferPolicyRules = (transferPolicies) => getNativeKioskTransferPolicies(transferPolicies)?.length > 0;
1322
+ var hasNativeKioskTransferPolicyRules = (transferPolicies) => {
1323
+ const nativeKioskTransferPolicies = getNativeKioskTransferPolicies(transferPolicies);
1324
+ return nativeKioskTransferPolicies?.some((policy) => policy?.rules?.length > 0);
1325
+ };
1323
1326
 
1324
1327
  // src/helpers/isSIngleBid.ts
1325
1328
  var isSingleBid = (bidType) => {
@@ -1561,211 +1564,16 @@ var kioskTxWrapper = async ({
1561
1564
  }
1562
1565
  };
1563
1566
 
1564
- // src/helpers/originByte/confirmOBTranfer.ts
1565
- var confirmOBTranfer = ({ tx, sharedObjects, transferRequest, nftType }) => {
1566
- tx.moveCall({
1567
- target: "0x6f42ec2355fcda5ebeee2399d901ae9f71cb214e640a45a0007f1f1cdf9f7b5e::transfer_allowlist::confirm_transfer",
1568
- arguments: [tx.object(sharedObjects?.allowList), tx.object(transferRequest)],
1569
- typeArguments: [nftType]
1570
- });
1571
- if (sharedObjects?.royaltyStrategy) {
1572
- tx.moveCall({
1573
- target: "0x6f42ec2355fcda5ebeee2399d901ae9f71cb214e640a45a0007f1f1cdf9f7b5e::royalty_strategy_bps::confirm_transfer",
1574
- arguments: [tx.object(sharedObjects?.royaltyStrategy), tx.object(transferRequest)],
1575
- typeArguments: [nftType, "0x2::sui::SUI"]
1576
- });
1577
- }
1578
- tx.moveCall({
1579
- target: "0xadf32ebafc587cc86e1e56e59f7b17c7e8cbeb3315193be63c6f73157d4e88b9::transfer_request::confirm",
1580
- arguments: [tx.object(transferRequest), tx.object(sharedObjects?.transferPolicy)],
1581
- typeArguments: [nftType, "0x2::sui::SUI"]
1582
- });
1583
- };
1584
-
1585
- // src/helpers/originByte/depositNftIntoOBKiosk.ts
1586
- var depositItemIntoOBKiosk = ({ tx, kiosk, nftTokenId, nftType }) => {
1587
- tx.moveCall({
1588
- target: "0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::deposit",
1589
- arguments: [tx.object(kiosk), tx.object(nftTokenId)],
1590
- typeArguments: [nftType]
1591
- });
1592
- };
1593
-
1594
- // src/helpers/originByte/createOBKiosk.ts
1595
- var createOBKiosk = async ({ tx, createMethod = "new" }) => {
1596
- const [kiosk] = tx.moveCall({
1597
- target: `0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::${createMethod}`,
1598
- arguments: [],
1599
- typeArguments: []
1600
- });
1601
- return [kiosk];
1602
- };
1603
-
1604
- // src/graphql/queries/fetchWalletKiosks.ts
1605
- var import_graphql_request10 = require("graphql-request");
1606
- var fetchWalletKiosks = import_graphql_request10.gql`
1607
- query fetchWalletKiosks($wallet: String!) {
1608
- kiosks: kiosks_by_owner_address(owner_address: $wallet) {
1609
- id
1610
- is_origin_byte
1611
- is_personal
1612
- owner_address
1613
- profits
1614
- is_shared
1615
- }
1616
- }
1617
- `;
1618
-
1619
- // src/helpers/originByte/getOBKiosk.ts
1620
- var getOBKiosk = async (wallet) => {
1621
- const res = await gqlChainRequest({
1622
- chain: "sui",
1623
- query: fetchWalletKiosks,
1624
- variables: { wallet: addLeadingZerosAfter0x(wallet) }
1625
- });
1626
- return res?.kiosks?.filter((kiosk) => kiosk?.is_origin_byte && kiosk?.is_shared)?.[0]?.id;
1627
- };
1628
-
1629
- // src/helpers/originByte/getOrCreateOBKiosk.ts
1630
- var getOrCreateOBKiosk = async ({
1631
- tx,
1632
- address,
1633
- kioskToUseIfExists,
1634
- createMethod
1635
- }) => {
1636
- if (kioskToUseIfExists) {
1637
- return {
1638
- kiosk: kioskToUseIfExists,
1639
- isNewKiosk: false
1640
- };
1641
- }
1642
- const existingKiosk = await getOBKiosk(address);
1643
- if (existingKiosk) {
1644
- return {
1645
- kiosk: existingKiosk,
1646
- isNewKiosk: false
1647
- };
1648
- }
1649
- const [newKiosk] = await createOBKiosk({ tx, createMethod });
1650
- return {
1651
- kiosk: newKiosk,
1652
- isNewKiosk: true
1653
- };
1654
- };
1655
-
1656
- // src/helpers/originByte/isOriginByteBid.ts
1657
- var isOriginByteBid = (bidType) => bidType === ORIGIN_BYTE_BID_NONCE_TYPE || bidType === "0x2::Kiosk::Kiosk" || bidType === "0x2::kiosk::Kiosk";
1658
-
1659
- // src/helpers/originByte/isOriginByteCollection.ts
1660
- var isOriginByteCollection = (transferPolicies) => {
1661
- const hasOriginBytePolicies = transferPolicies?.filter((policy) => policy?.is_origin_byte)?.length > 0;
1662
- const hasNonOriginBytePoliciesWithRules = transferPolicies?.filter((policy) => !policy?.is_origin_byte)?.some((policy) => policy?.rules?.length > 0);
1663
- return Boolean(hasOriginBytePolicies && !hasNonOriginBytePoliciesWithRules);
1664
- };
1665
-
1666
- // src/helpers/originByte/shareOriginByteKiosk.ts
1667
- var shareOriginByteKiosk = async ({ tx, kiosk }) => {
1668
- tx.moveCall({
1669
- target: "0x2::transfer::public_share_object",
1670
- arguments: [tx.object(kiosk)],
1671
- typeArguments: ["0x2::kiosk::Kiosk"]
1672
- });
1673
- };
1674
-
1675
- // src/helpers/rpc/getObjectType.ts
1676
- var import_utils2 = require("@mysten/sui/utils");
1677
- var getObjectType = async ({
1678
- suiClient,
1679
- objectId
1680
- }) => {
1681
- const normalizedObjectId = objectId.startsWith("0x") ? addLeadingZerosAfter0x(objectId) : objectId;
1682
- if ((0, import_utils2.isValidSuiObjectId)(normalizedObjectId)) {
1683
- const res = await suiClient.getObject({ id: normalizedObjectId, options: { showType: true } });
1684
- return res.data.type;
1685
- }
1686
- return "";
1687
- };
1688
-
1689
- // src/methods/acceptNftBids/addAcceptNftBidTxs.ts
1690
- var import_utils3 = require("@mysten/sui/utils");
1691
-
1692
- // src/graphql/queries/fetchMultibidById.ts
1693
- var import_graphql_request11 = require("graphql-request");
1694
- var fetchMultibidChainIdById = import_graphql_request11.gql`
1695
- query fetchMultibidById($multiBidId: uuid!) {
1696
- multi_bids(where: { id: { _eq: $multiBidId } }) {
1697
- chain_id
1698
- cancelled_at
1699
- }
1700
- }
1701
- `;
1702
-
1703
- // src/helpers/kiosk/lockNftInsideKioskIfNotLocked.ts
1704
- var lockNftInsideKioskIfNotLocked = async ({
1705
- tx,
1706
- kioskClient,
1567
+ // src/helpers/kiosk/getKioskIdFromKioskTx.ts
1568
+ var getKioskIdFromKioskTx = ({
1707
1569
  kioskTx,
1708
- nftTokenId,
1709
- nftType,
1710
- transferPolicyId
1570
+ tx
1711
1571
  }) => {
1712
- if (lockNftInsideKioskIfKioskCreatedInThisTx({ tx, kioskTx, nftTokenId, nftType, transferPolicyId })) {
1713
- return;
1714
- }
1715
1572
  const kioskId = "value" in kioskTx.kiosk ? kioskTx.kiosk.value : "Input" in kioskTx.kiosk ? tx.blockData.inputs[kioskTx.kiosk.Input].value : (() => {
1716
1573
  throw new Error("Invalid kiosk transaction structure");
1717
1574
  })();
1718
- const res = await kioskClient.getKiosk({ id: kioskId });
1719
- const nftInKiosk = res.items.find((i) => i.objectId === nftTokenId);
1720
- let takeFromKiosk = true;
1721
- if (!nftInKiosk) {
1722
- const result = await kioskClient.client.getObject({
1723
- id: nftTokenId,
1724
- options: { showOwner: true }
1725
- });
1726
- if (result.data.owner.AddressOwner) {
1727
- takeFromKiosk = false;
1728
- } else {
1729
- throw new Error(`NFT ${nftTokenId} is not found in kiosk ${kioskId}`);
1730
- }
1731
- }
1732
- if (!nftInKiosk?.isLocked) {
1733
- let takenNftId;
1734
- if (takeFromKiosk) {
1735
- const takenNft = kioskTx.take({
1736
- itemId: nftTokenId,
1737
- itemType: nftType
1738
- });
1739
- takenNftId = "value" in takenNft ? takenNft.value : takenNft;
1740
- }
1741
- kioskTx.lock({
1742
- itemId: takenNftId ?? nftTokenId,
1743
- itemType: nftType,
1744
- policy: transferPolicyId
1745
- });
1746
- }
1575
+ return kioskId;
1747
1576
  };
1748
- function lockNftInsideKioskIfKioskCreatedInThisTx({
1749
- tx,
1750
- kioskTx,
1751
- nftTokenId,
1752
- nftType,
1753
- transferPolicyId
1754
- }) {
1755
- if (Array.isArray(kioskTx.kiosk.NestedResult)) {
1756
- const transaction = tx.blockData.transactions[kioskTx.kiosk.NestedResult[0]];
1757
- if (transaction.target === "0x0000000000000000000000000000000000000000000000000000000000000002::kiosk::new" || transaction.target === "0x0000000000000000000000000000000000000000000000000000000000000002::personal_kiosk::new") {
1758
- kioskTx.lock({
1759
- itemId: nftTokenId,
1760
- itemType: nftType,
1761
- policy: transferPolicyId
1762
- });
1763
- return true;
1764
- }
1765
- throw new Error(`Unsupported kiosk move call ${transaction.target}`);
1766
- }
1767
- return false;
1768
- }
1769
1577
 
1770
1578
  // src/helpers/kiosk/resolveTransferPolicies.ts
1771
1579
  var import_kiosk4 = require("@mysten/kiosk");
@@ -2069,6 +1877,302 @@ var resolveTransferPolicies = async ({
2069
1877
  }
2070
1878
  };
2071
1879
 
1880
+ // src/helpers/kiosk/takeLockedNftFromKiosk.ts
1881
+ var takeLockedNftFromKiosk = async ({
1882
+ tx,
1883
+ transferPolicies,
1884
+ suiClient,
1885
+ kioskTx,
1886
+ kioskClient,
1887
+ nftTokenId,
1888
+ nftType,
1889
+ kioskOwner
1890
+ }) => {
1891
+ const transferPolicy = getNativeKioskTransferPolicies(transferPolicies)?.at(0);
1892
+ const hasFloorPriceRule = transferPolicy?.rules?.some(
1893
+ (rule) => rule.type === "floor_price_rule"
1894
+ );
1895
+ if (hasFloorPriceRule) {
1896
+ throw new Error("Cannot take locked NFT from kiosk with a minimum floor price rule");
1897
+ }
1898
+ const [purchase_cap] = tx.moveCall({
1899
+ target: "0x2::kiosk::list_with_purchase_cap",
1900
+ arguments: [
1901
+ tx.object("value" in kioskTx.kiosk ? kioskTx.kiosk.value : kioskTx.kiosk),
1902
+ tx.object("value" in kioskTx.kioskCap ? kioskTx.kioskCap.value : kioskTx.kioskCap),
1903
+ tx.pure.address(nftTokenId),
1904
+ tx.pure.u64(0)
1905
+ ],
1906
+ typeArguments: [nftType]
1907
+ });
1908
+ const [zeroCoin] = tx.moveCall({
1909
+ target: "0x2::coin::zero",
1910
+ arguments: [],
1911
+ typeArguments: ["0x2::sui::SUI"]
1912
+ });
1913
+ const [nft, transferRequest] = tx.moveCall({
1914
+ target: "0x2::kiosk::purchase_with_cap",
1915
+ arguments: [
1916
+ tx.object("value" in kioskTx.kiosk ? kioskTx.kiosk.value : kioskTx.kiosk),
1917
+ purchase_cap,
1918
+ zeroCoin
1919
+ ],
1920
+ typeArguments: [nftType]
1921
+ });
1922
+ await resolveTransferPolicies({
1923
+ tx,
1924
+ transferPolicies,
1925
+ suiClient,
1926
+ walletAddress: kioskOwner,
1927
+ kioskTx,
1928
+ kioskClient,
1929
+ nftType,
1930
+ price: "0",
1931
+ transferRequest,
1932
+ shouldSkipKioskLocking: true
1933
+ });
1934
+ return nft;
1935
+ };
1936
+
1937
+ // src/helpers/kiosk/takeAndBorrowNftFromKiosk.ts
1938
+ var takeAndBorrowNftFromKiosk = async ({
1939
+ tx,
1940
+ transferPolicies,
1941
+ kioskTx,
1942
+ kioskClient,
1943
+ nftTokenId,
1944
+ nftType,
1945
+ suiClient,
1946
+ kioskOwner
1947
+ }) => {
1948
+ const kioskId = getKioskIdFromKioskTx({ kioskTx, tx });
1949
+ const res = await kioskClient.getKiosk({ id: kioskId });
1950
+ const nftInKiosk = res.items.find((i) => i.objectId === nftTokenId);
1951
+ let borrowedNft = null;
1952
+ if (nftInKiosk?.isLocked) {
1953
+ borrowedNft = await takeLockedNftFromKiosk({
1954
+ tx,
1955
+ transferPolicies,
1956
+ kioskTx,
1957
+ nftTokenId,
1958
+ nftType,
1959
+ suiClient,
1960
+ kioskClient,
1961
+ kioskOwner
1962
+ });
1963
+ } else {
1964
+ borrowedNft = kioskTx.take({
1965
+ itemId: nftTokenId,
1966
+ itemType: nftType
1967
+ });
1968
+ }
1969
+ return borrowedNft;
1970
+ };
1971
+
1972
+ // src/helpers/originByte/confirmOBTranfer.ts
1973
+ var confirmOBTranfer = ({ tx, sharedObjects, transferRequest, nftType }) => {
1974
+ tx.moveCall({
1975
+ target: "0x6f42ec2355fcda5ebeee2399d901ae9f71cb214e640a45a0007f1f1cdf9f7b5e::transfer_allowlist::confirm_transfer",
1976
+ arguments: [tx.object(sharedObjects?.allowList), tx.object(transferRequest)],
1977
+ typeArguments: [nftType]
1978
+ });
1979
+ if (sharedObjects?.royaltyStrategy) {
1980
+ tx.moveCall({
1981
+ target: "0x6f42ec2355fcda5ebeee2399d901ae9f71cb214e640a45a0007f1f1cdf9f7b5e::royalty_strategy_bps::confirm_transfer",
1982
+ arguments: [tx.object(sharedObjects?.royaltyStrategy), tx.object(transferRequest)],
1983
+ typeArguments: [nftType, "0x2::sui::SUI"]
1984
+ });
1985
+ }
1986
+ tx.moveCall({
1987
+ target: "0xadf32ebafc587cc86e1e56e59f7b17c7e8cbeb3315193be63c6f73157d4e88b9::transfer_request::confirm",
1988
+ arguments: [tx.object(transferRequest), tx.object(sharedObjects?.transferPolicy)],
1989
+ typeArguments: [nftType, "0x2::sui::SUI"]
1990
+ });
1991
+ };
1992
+
1993
+ // src/helpers/originByte/depositNftIntoOBKiosk.ts
1994
+ var depositItemIntoOBKiosk = ({ tx, kiosk, nftTokenId, nftType }) => {
1995
+ tx.moveCall({
1996
+ target: "0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::deposit",
1997
+ arguments: [tx.object(kiosk), tx.object(nftTokenId)],
1998
+ typeArguments: [nftType]
1999
+ });
2000
+ };
2001
+
2002
+ // src/helpers/originByte/createOBKiosk.ts
2003
+ var createOBKiosk = async ({ tx, createMethod = "new" }) => {
2004
+ const [kiosk] = tx.moveCall({
2005
+ target: `0x2678c98fe23173eebea384509464eb81b1f3035a57419cb46d025000c337451a::ob_kiosk::${createMethod}`,
2006
+ arguments: [],
2007
+ typeArguments: []
2008
+ });
2009
+ return [kiosk];
2010
+ };
2011
+
2012
+ // src/graphql/queries/fetchWalletKiosks.ts
2013
+ var import_graphql_request10 = require("graphql-request");
2014
+ var fetchWalletKiosks = import_graphql_request10.gql`
2015
+ query fetchWalletKiosks($wallet: String!) {
2016
+ kiosks: kiosks_by_owner_address(owner_address: $wallet) {
2017
+ id
2018
+ is_origin_byte
2019
+ is_personal
2020
+ owner_address
2021
+ profits
2022
+ is_shared
2023
+ }
2024
+ }
2025
+ `;
2026
+
2027
+ // src/helpers/originByte/getOBKiosk.ts
2028
+ var getOBKiosk = async (wallet) => {
2029
+ const res = await gqlChainRequest({
2030
+ chain: "sui",
2031
+ query: fetchWalletKiosks,
2032
+ variables: { wallet: addLeadingZerosAfter0x(wallet) }
2033
+ });
2034
+ return res?.kiosks?.filter((kiosk) => kiosk?.is_origin_byte && kiosk?.is_shared)?.[0]?.id;
2035
+ };
2036
+
2037
+ // src/helpers/originByte/getOrCreateOBKiosk.ts
2038
+ var getOrCreateOBKiosk = async ({
2039
+ tx,
2040
+ address,
2041
+ kioskToUseIfExists,
2042
+ createMethod
2043
+ }) => {
2044
+ if (kioskToUseIfExists) {
2045
+ return {
2046
+ kiosk: kioskToUseIfExists,
2047
+ isNewKiosk: false
2048
+ };
2049
+ }
2050
+ const existingKiosk = await getOBKiosk(address);
2051
+ if (existingKiosk) {
2052
+ return {
2053
+ kiosk: existingKiosk,
2054
+ isNewKiosk: false
2055
+ };
2056
+ }
2057
+ const [newKiosk] = await createOBKiosk({ tx, createMethod });
2058
+ return {
2059
+ kiosk: newKiosk,
2060
+ isNewKiosk: true
2061
+ };
2062
+ };
2063
+
2064
+ // src/helpers/originByte/isOriginByteBid.ts
2065
+ var isOriginByteBid = (bidType) => bidType === ORIGIN_BYTE_BID_NONCE_TYPE || bidType === "0x2::Kiosk::Kiosk" || bidType === "0x2::kiosk::Kiosk";
2066
+
2067
+ // src/helpers/originByte/isOriginByteCollection.ts
2068
+ var isOriginByteCollection = (transferPolicies) => {
2069
+ const hasOriginBytePolicies = transferPolicies?.filter((policy) => policy?.is_origin_byte)?.length > 0;
2070
+ const hasNonOriginBytePoliciesWithRules = transferPolicies?.filter((policy) => !policy?.is_origin_byte)?.some((policy) => policy?.rules?.length > 0);
2071
+ return Boolean(hasOriginBytePolicies && !hasNonOriginBytePoliciesWithRules);
2072
+ };
2073
+
2074
+ // src/helpers/originByte/shareOriginByteKiosk.ts
2075
+ var shareOriginByteKiosk = async ({ tx, kiosk }) => {
2076
+ tx.moveCall({
2077
+ target: "0x2::transfer::public_share_object",
2078
+ arguments: [tx.object(kiosk)],
2079
+ typeArguments: ["0x2::kiosk::Kiosk"]
2080
+ });
2081
+ };
2082
+
2083
+ // src/helpers/rpc/getObjectType.ts
2084
+ var import_utils2 = require("@mysten/sui/utils");
2085
+ var getObjectType = async ({
2086
+ suiClient,
2087
+ objectId
2088
+ }) => {
2089
+ const normalizedObjectId = objectId.startsWith("0x") ? addLeadingZerosAfter0x(objectId) : objectId;
2090
+ if ((0, import_utils2.isValidSuiObjectId)(normalizedObjectId)) {
2091
+ const res = await suiClient.getObject({ id: normalizedObjectId, options: { showType: true } });
2092
+ return res.data.type;
2093
+ }
2094
+ return "";
2095
+ };
2096
+
2097
+ // src/methods/acceptNftBids/addAcceptNftBidTxs.ts
2098
+ var import_utils3 = require("@mysten/sui/utils");
2099
+
2100
+ // src/graphql/queries/fetchMultibidById.ts
2101
+ var import_graphql_request11 = require("graphql-request");
2102
+ var fetchMultibidChainIdById = import_graphql_request11.gql`
2103
+ query fetchMultibidById($multiBidId: uuid!) {
2104
+ multi_bids(where: { id: { _eq: $multiBidId } }) {
2105
+ chain_id
2106
+ cancelled_at
2107
+ }
2108
+ }
2109
+ `;
2110
+
2111
+ // src/helpers/kiosk/lockNftInsideKioskIfNotLocked.ts
2112
+ var lockNftInsideKioskIfNotLocked = async ({
2113
+ tx,
2114
+ kioskClient,
2115
+ kioskTx,
2116
+ nftTokenId,
2117
+ nftType,
2118
+ transferPolicyId
2119
+ }) => {
2120
+ if (lockNftInsideKioskIfKioskCreatedInThisTx({ tx, kioskTx, nftTokenId, nftType, transferPolicyId })) {
2121
+ return;
2122
+ }
2123
+ const kioskId = getKioskIdFromKioskTx({ kioskTx, tx });
2124
+ const res = await kioskClient.getKiosk({ id: kioskId });
2125
+ const nftInKiosk = res.items.find((i) => i.objectId === nftTokenId);
2126
+ let takeFromKiosk = true;
2127
+ if (!nftInKiosk) {
2128
+ const result = await kioskClient.client.getObject({
2129
+ id: nftTokenId,
2130
+ options: { showOwner: true }
2131
+ });
2132
+ if (result.data.owner.AddressOwner) {
2133
+ takeFromKiosk = false;
2134
+ } else {
2135
+ throw new Error(`NFT ${nftTokenId} is not found in kiosk ${kioskId}`);
2136
+ }
2137
+ }
2138
+ if (!nftInKiosk?.isLocked) {
2139
+ let takenNftId;
2140
+ if (takeFromKiosk) {
2141
+ const takenNft = kioskTx.take({
2142
+ itemId: nftTokenId,
2143
+ itemType: nftType
2144
+ });
2145
+ takenNftId = "value" in takenNft ? takenNft.value : takenNft;
2146
+ }
2147
+ kioskTx.lock({
2148
+ itemId: takenNftId ?? nftTokenId,
2149
+ itemType: nftType,
2150
+ policy: transferPolicyId
2151
+ });
2152
+ }
2153
+ };
2154
+ function lockNftInsideKioskIfKioskCreatedInThisTx({
2155
+ tx,
2156
+ kioskTx,
2157
+ nftTokenId,
2158
+ nftType,
2159
+ transferPolicyId
2160
+ }) {
2161
+ if (Array.isArray(kioskTx.kiosk.NestedResult)) {
2162
+ const transaction = tx.blockData.transactions[kioskTx.kiosk.NestedResult[0]];
2163
+ if (transaction.target === "0x0000000000000000000000000000000000000000000000000000000000000002::kiosk::new" || transaction.target === "0x0000000000000000000000000000000000000000000000000000000000000002::personal_kiosk::new") {
2164
+ kioskTx.lock({
2165
+ itemId: nftTokenId,
2166
+ itemType: nftType,
2167
+ policy: transferPolicyId
2168
+ });
2169
+ return true;
2170
+ }
2171
+ throw new Error(`Unsupported kiosk move call ${transaction.target}`);
2172
+ }
2173
+ return false;
2174
+ }
2175
+
2072
2176
  // src/helpers/originByte/getOBBidderKiosk.ts
2073
2177
  var getOBBidderKiosk = async ({
2074
2178
  suiClient,
@@ -2553,6 +2657,22 @@ async function addTradePortUnlistTxHandler(txData) {
2553
2657
  ...txData,
2554
2658
  kioskTx
2555
2659
  });
2660
+ if (!hasNativeKioskTransferPolicyRules(txData?.transferPolicies)) {
2661
+ const borrowedItem = await takeAndBorrowNftFromKiosk({
2662
+ tx: txData?.tx,
2663
+ transferPolicies: txData?.transferPolicies,
2664
+ kioskTx,
2665
+ kioskClient: txData?.kioskClient,
2666
+ nftTokenId: txData?.nftTokenId,
2667
+ nftType: txData?.nftType,
2668
+ suiClient: txData?.suiClient,
2669
+ kioskOwner: txData?.seller
2670
+ });
2671
+ txData?.tx.transferObjects(
2672
+ [txData?.tx.object(borrowedItem)],
2673
+ txData?.tx.pure.address(addLeadingZerosAfter0x(txData?.seller))
2674
+ );
2675
+ }
2556
2676
  }
2557
2677
  });
2558
2678
  }
@@ -2818,11 +2938,17 @@ async function addTradePortAcceptCollectionBidTxHandler(txData) {
2818
2938
  kiosk: txData?.sellerKiosk,
2819
2939
  shouldAssertNftInSharedKiosk: true,
2820
2940
  async runCommands(kioskTx) {
2821
- const item = kioskTx.take({
2822
- itemId: txData?.nftTokenId,
2823
- itemType: txData?.nftType
2941
+ const borrowedItem = await takeAndBorrowNftFromKiosk({
2942
+ tx: txData?.tx,
2943
+ transferPolicies: txData?.transferPolicies,
2944
+ kioskTx,
2945
+ kioskClient: txData?.kioskClient,
2946
+ nftTokenId: txData?.nftTokenId,
2947
+ nftType: txData?.nftType,
2948
+ suiClient: txData?.suiClient,
2949
+ kioskOwner: txData?.seller
2824
2950
  });
2825
- addTradeportAcceptCollectionBidTx({ ...txData, itemTakenOutOfNativeKiosk: item });
2951
+ addTradeportAcceptCollectionBidTx({ ...txData, itemTakenOutOfNativeKiosk: borrowedItem });
2826
2952
  }
2827
2953
  });
2828
2954
  }
@@ -2900,11 +3026,17 @@ async function addBluemoveAcceptCollectionBidTxHandler(txData) {
2900
3026
  kiosk: txData?.sellerKiosk,
2901
3027
  shouldAssertNftInSharedKiosk: true,
2902
3028
  async runCommands(kioskTx) {
2903
- const item = kioskTx.take({
2904
- itemId: txData?.nftTokenId,
2905
- itemType: txData?.nftType
3029
+ const borrowedItem = await takeAndBorrowNftFromKiosk({
3030
+ tx: txData?.tx,
3031
+ transferPolicies: txData?.transferPolicies,
3032
+ kioskTx,
3033
+ kioskClient: txData?.kioskClient,
3034
+ nftTokenId: txData?.nftTokenId,
3035
+ nftType: txData?.nftType,
3036
+ suiClient: txData?.suiClient,
3037
+ kioskOwner: txData?.itemOwner
2906
3038
  });
2907
- addBluemoveAcceptCollectionBidTx({ ...txData, itemTakenOutOfNativeKiosk: item });
3039
+ addBluemoveAcceptCollectionBidTx({ ...txData, itemTakenOutOfNativeKiosk: borrowedItem });
2908
3040
  }
2909
3041
  });
2910
3042
  }
@@ -5153,9 +5285,15 @@ async function addTradePortListTxHandler(txData) {
5153
5285
  kiosk: txData?.sellerKiosk,
5154
5286
  shouldAssertNftInSharedKiosk: true,
5155
5287
  async runCommands(kioskTx) {
5156
- const borrowedItem = kioskTx.take({
5157
- itemId: txData?.nftTokenId,
5158
- itemType: txData?.nftType
5288
+ const borrowedItem = await takeAndBorrowNftFromKiosk({
5289
+ tx: txData?.tx,
5290
+ transferPolicies: txData?.transferPolicies,
5291
+ kioskTx,
5292
+ kioskClient: txData?.kioskClient,
5293
+ nftTokenId: txData?.nftTokenId,
5294
+ nftType: txData?.nftType,
5295
+ suiClient: txData?.suiClient,
5296
+ kioskOwner: txData?.seller
5159
5297
  });
5160
5298
  addTradePortListTx({ ...txData, borrowedItem });
5161
5299
  }
@@ -5176,7 +5314,7 @@ async function addTradePortListTxHandler(txData) {
5176
5314
  }
5177
5315
  });
5178
5316
  }
5179
- if (!txData?.sellerKiosk && getNativeKioskTransferPolicies(txData?.transferPolicies)) {
5317
+ if (!txData?.sellerKiosk && hasNativeKioskTransferPolicyRules(txData?.transferPolicies)) {
5180
5318
  return kioskTxWrapper({
5181
5319
  tx: txData?.tx,
5182
5320
  kioskClient: txData?.kioskClient,
@@ -5219,22 +5357,22 @@ function addTradePortRelistTx({
5219
5357
  });
5220
5358
  }
5221
5359
  function addBlueMoveRelistTx(txData) {
5222
- const { tx, nftTokenId, nftType, listPrice } = txData;
5360
+ const { tx, nftTokenId, nftType, listPrice, suiClient } = txData;
5223
5361
  const borrowedItem = tx.moveCall({
5224
5362
  target: "0xd5dd28cc24009752905689b2ba2bf90bfc8de4549b9123f93519bb8ba9bf9981::marketplace::delist",
5225
5363
  arguments: [tx.object(BLUEMOVE_MARKET_CONFIG_OBJECT), tx.pure.address(nftTokenId)],
5226
5364
  typeArguments: [nftType, nftType]
5227
5365
  });
5228
- addTradePortListTx({ ...txData, listPrice, borrowedItem });
5366
+ addTradePortListTx({ ...txData, listPrice, borrowedItem, suiClient });
5229
5367
  }
5230
5368
  function addTocenRelistTx(txData) {
5231
- const { tx, nftTokenId, nftType, listPrice } = txData;
5369
+ const { tx, nftTokenId, nftType, listPrice, suiClient } = txData;
5232
5370
  const borrowedItem = tx.moveCall({
5233
5371
  target: "0x3605d91c559e80cf8fdeabae9abaccb0bc38f96eac0b32bf47e95a9159a5277f::tocen_marketplace::delist",
5234
5372
  arguments: [tx.object(TOCEN_MARKETPLACE_OBJECT), tx.pure.address(nftTokenId)],
5235
5373
  typeArguments: [nftType]
5236
5374
  });
5237
- addTradePortListTx({ ...txData, listPrice, borrowedItem });
5375
+ addTradePortListTx({ ...txData, listPrice, borrowedItem, suiClient });
5238
5376
  }
5239
5377
 
5240
5378
  // src/methods/relistNft/relistNft.ts
@@ -5365,6 +5503,7 @@ var listNfts = async ({ nfts, walletAddress }, context) => {
5365
5503
  } else {
5366
5504
  const listTxData = {
5367
5505
  tx,
5506
+ suiClient: context.suiClient,
5368
5507
  kioskClient: context.kioskClient,
5369
5508
  transferPolicies,
5370
5509
  seller: walletAddress,
@@ -5710,6 +5849,7 @@ async function migrateNftsFromUnsharedToSharedKiosks({ walletAddress, max = 50 }
5710
5849
  tx,
5711
5850
  kioskTx,
5712
5851
  kioskClient: context?.kioskClient,
5852
+ suiClient: context?.suiClient,
5713
5853
  senderKiosk: unsharedNativeKiosk,
5714
5854
  senderAddress: walletAddress,
5715
5855
  recipientAddress: walletAddress,
@@ -6414,6 +6554,7 @@ var transferNfts = async ({ nftIds, recipientAddress, walletAddress }, context)
6414
6554
  const transferPolicies = nft?.collection?.chain_state?.transfer_policies;
6415
6555
  const txData = {
6416
6556
  tx,
6557
+ suiClient: context.suiClient,
6417
6558
  kioskClient: context.kioskClient,
6418
6559
  nftType,
6419
6560
  nftTokenId: nft?.token_id,
@@ -6422,6 +6563,32 @@ var transferNfts = async ({ nftIds, recipientAddress, walletAddress }, context)
6422
6563
  recipientAddress,
6423
6564
  transferPolicies
6424
6565
  };
6566
+ if (txData?.senderKiosk && !hasNativeKioskTransferPolicyRules(txData?.transferPolicies)) {
6567
+ await kioskTxWrapper({
6568
+ tx: txData?.tx,
6569
+ kioskClient: txData?.kioskClient,
6570
+ kioskOwner: txData?.senderAddress,
6571
+ kiosk: txData?.senderKiosk,
6572
+ shouldAssertNftInSharedKiosk: true,
6573
+ async runCommands(kioskTx) {
6574
+ const borrowedItem = await takeAndBorrowNftFromKiosk({
6575
+ tx: txData?.tx,
6576
+ transferPolicies: txData?.transferPolicies,
6577
+ kioskTx,
6578
+ kioskClient: txData?.kioskClient,
6579
+ nftTokenId: txData?.nftTokenId,
6580
+ nftType: txData?.nftType,
6581
+ suiClient: txData?.suiClient,
6582
+ kioskOwner: txData?.senderAddress
6583
+ });
6584
+ tx.transferObjects(
6585
+ [tx.object(borrowedItem)],
6586
+ tx.pure.address(addLeadingZerosAfter0x(recipientAddress))
6587
+ );
6588
+ }
6589
+ });
6590
+ continue;
6591
+ }
6425
6592
  if (!txData.senderKiosk) {
6426
6593
  tx.transferObjects(
6427
6594
  [tx.object(txData.nftTokenId)],