@iota/kiosk 0.1.2 → 0.2.0
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 +12 -0
- package/README.md +2 -2
- package/dist/cjs/bcs.d.ts +38 -2
- package/dist/cjs/bcs.js +20 -18
- package/dist/cjs/bcs.js.map +2 -2
- package/dist/cjs/client/kiosk-client.d.ts +4 -2
- package/dist/cjs/client/kiosk-client.js +10 -5
- package/dist/cjs/client/kiosk-client.js.map +2 -2
- package/dist/cjs/client/kiosk-transaction.d.ts +11 -10
- package/dist/cjs/client/kiosk-transaction.js +102 -140
- package/dist/cjs/client/kiosk-transaction.js.map +2 -2
- package/dist/cjs/client/tp-transaction.d.ts +8 -6
- package/dist/cjs/client/tp-transaction.js +54 -65
- package/dist/cjs/client/tp-transaction.js.map +2 -2
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/query/kiosk.js +2 -4
- package/dist/cjs/query/kiosk.js.map +1 -1
- package/dist/cjs/query/transfer-policy.d.ts +1 -0
- package/dist/cjs/query/transfer-policy.js +5 -7
- package/dist/cjs/query/transfer-policy.js.map +3 -3
- package/dist/cjs/tx/kiosk.d.ts +14 -14
- package/dist/cjs/tx/kiosk.js.map +2 -2
- package/dist/cjs/tx/personal-kiosk.d.ts +3 -3
- package/dist/cjs/tx/personal-kiosk.js.map +2 -2
- package/dist/cjs/tx/rules/attach.d.ts +5 -5
- package/dist/cjs/tx/rules/attach.js.map +2 -2
- package/dist/cjs/tx/rules/resolve.js +18 -20
- package/dist/cjs/tx/rules/resolve.js.map +2 -2
- package/dist/cjs/tx/transfer-policy.d.ts +7 -7
- package/dist/cjs/tx/transfer-policy.js.map +2 -2
- package/dist/cjs/types/kiosk.d.ts +0 -1
- package/dist/cjs/types/kiosk.js.map +2 -2
- package/dist/cjs/types/transfer-policy.d.ts +4 -2
- package/dist/cjs/types/transfer-policy.js.map +2 -2
- package/dist/cjs/utils.js +4 -7
- package/dist/cjs/utils.js.map +2 -2
- package/dist/esm/bcs.d.ts +38 -2
- package/dist/esm/bcs.js +20 -18
- package/dist/esm/bcs.js.map +2 -2
- package/dist/esm/client/kiosk-client.d.ts +4 -2
- package/dist/esm/client/kiosk-client.js +10 -5
- package/dist/esm/client/kiosk-client.js.map +2 -2
- package/dist/esm/client/kiosk-transaction.d.ts +11 -10
- package/dist/esm/client/kiosk-transaction.js +101 -139
- package/dist/esm/client/kiosk-transaction.js.map +2 -2
- package/dist/esm/client/tp-transaction.d.ts +8 -6
- package/dist/esm/client/tp-transaction.js +53 -64
- package/dist/esm/client/tp-transaction.js.map +2 -2
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/query/kiosk.js +2 -4
- package/dist/esm/query/kiosk.js.map +1 -1
- package/dist/esm/query/transfer-policy.d.ts +1 -0
- package/dist/esm/query/transfer-policy.js +7 -9
- package/dist/esm/query/transfer-policy.js.map +2 -2
- package/dist/esm/tx/kiosk.d.ts +14 -14
- package/dist/esm/tx/kiosk.js.map +2 -2
- package/dist/esm/tx/personal-kiosk.d.ts +3 -3
- package/dist/esm/tx/personal-kiosk.js.map +2 -2
- package/dist/esm/tx/rules/attach.d.ts +5 -5
- package/dist/esm/tx/rules/attach.js.map +2 -2
- package/dist/esm/tx/rules/resolve.js +18 -20
- package/dist/esm/tx/rules/resolve.js.map +2 -2
- package/dist/esm/tx/transfer-policy.d.ts +7 -7
- package/dist/esm/tx/transfer-policy.js.map +2 -2
- package/dist/esm/types/kiosk.d.ts +0 -1
- package/dist/esm/types/kiosk.js.map +2 -2
- package/dist/esm/types/transfer-policy.d.ts +4 -2
- package/dist/esm/types/transfer-policy.js.map +2 -2
- package/dist/esm/utils.js +12 -10
- package/dist/esm/utils.js.map +2 -2
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -11
- package/src/bcs.ts +16 -19
- package/src/client/kiosk-client.ts +15 -5
- package/src/client/kiosk-transaction.ts +52 -56
- package/src/client/tp-transaction.ts +31 -28
- package/src/query/transfer-policy.ts +5 -3
- package/src/tx/kiosk.ts +14 -14
- package/src/tx/personal-kiosk.ts +3 -3
- package/src/tx/rules/attach.ts +5 -5
- package/src/tx/rules/resolve.ts +16 -16
- package/src/tx/transfer-policy.ts +7 -7
- package/src/types/kiosk.ts +0 -1
- package/src/types/transfer-policy.ts +4 -2
- package/src/utils.ts +10 -5
package/dist/esm/tx/kiosk.d.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Transaction, TransactionArgument, TransactionObjectArgument } from '@iota/iota-sdk/transactions';
|
|
2
2
|
import type { ObjectArgument } from '../types/index.js';
|
|
3
3
|
/**
|
|
4
4
|
* Create a new shared Kiosk and returns the [kiosk, kioskOwnerCap] tuple.
|
|
5
5
|
*/
|
|
6
|
-
export declare function createKiosk(tx:
|
|
6
|
+
export declare function createKiosk(tx: Transaction): [TransactionObjectArgument, TransactionObjectArgument];
|
|
7
7
|
/**
|
|
8
8
|
* Calls the `kiosk::new()` function and shares the kiosk.
|
|
9
9
|
* Returns the `kioskOwnerCap` object.
|
|
10
10
|
*/
|
|
11
|
-
export declare function createKioskAndShare(tx:
|
|
11
|
+
export declare function createKioskAndShare(tx: Transaction): TransactionObjectArgument;
|
|
12
12
|
/**
|
|
13
13
|
* Converts Transfer Policy to a shared object.
|
|
14
14
|
*/
|
|
15
|
-
export declare function shareKiosk(tx:
|
|
15
|
+
export declare function shareKiosk(tx: Transaction, kiosk: TransactionArgument): void;
|
|
16
16
|
/**
|
|
17
17
|
* Call the `kiosk::place<T>(Kiosk, KioskOwnerCap, Item)` function.
|
|
18
18
|
* Place an item to the Kiosk.
|
|
19
19
|
*/
|
|
20
|
-
export declare function place(tx:
|
|
20
|
+
export declare function place(tx: Transaction, itemType: string, kiosk: ObjectArgument, kioskCap: ObjectArgument, item: ObjectArgument): void;
|
|
21
21
|
/**
|
|
22
22
|
* Call the `kiosk::lock<T>(Kiosk, KioskOwnerCap, TransferPolicy, Item)`
|
|
23
23
|
* function. Lock an item in the Kiosk.
|
|
@@ -26,46 +26,46 @@ export declare function place(tx: TransactionBlock, itemType: string, kiosk: Obj
|
|
|
26
26
|
* and be passed in. This is done to make sure the item does not get
|
|
27
27
|
* locked without an option to take it out.
|
|
28
28
|
*/
|
|
29
|
-
export declare function lock(tx:
|
|
29
|
+
export declare function lock(tx: Transaction, itemType: string, kiosk: ObjectArgument, kioskCap: ObjectArgument, policy: ObjectArgument, item: ObjectArgument): void;
|
|
30
30
|
/**
|
|
31
31
|
* Call the `kiosk::take<T>(Kiosk, KioskOwnerCap, ID)` function.
|
|
32
32
|
* Take an item from the Kiosk.
|
|
33
33
|
*/
|
|
34
|
-
export declare function take(tx:
|
|
34
|
+
export declare function take(tx: Transaction, itemType: string, kiosk: ObjectArgument, kioskCap: ObjectArgument, itemId: string): TransactionObjectArgument;
|
|
35
35
|
/**
|
|
36
36
|
* Call the `kiosk::list<T>(Kiosk, KioskOwnerCap, ID, u64)` function.
|
|
37
37
|
* List an item for sale.
|
|
38
38
|
*/
|
|
39
|
-
export declare function list(tx:
|
|
39
|
+
export declare function list(tx: Transaction, itemType: string, kiosk: ObjectArgument, kioskCap: ObjectArgument, itemId: string, price: string | bigint): void;
|
|
40
40
|
/**
|
|
41
41
|
* Call the `kiosk::list<T>(Kiosk, KioskOwnerCap, ID, u64)` function.
|
|
42
42
|
* List an item for sale.
|
|
43
43
|
*/
|
|
44
|
-
export declare function delist(tx:
|
|
44
|
+
export declare function delist(tx: Transaction, itemType: string, kiosk: ObjectArgument, kioskCap: ObjectArgument, itemId: string): void;
|
|
45
45
|
/**
|
|
46
46
|
* Call the `kiosk::place_and_list<T>(Kiosk, KioskOwnerCap, Item, u64)` function.
|
|
47
47
|
* Place an item to the Kiosk and list it for sale.
|
|
48
48
|
*/
|
|
49
|
-
export declare function placeAndList(tx:
|
|
49
|
+
export declare function placeAndList(tx: Transaction, itemType: string, kiosk: ObjectArgument, kioskCap: ObjectArgument, item: ObjectArgument, price: string | bigint): void;
|
|
50
50
|
/**
|
|
51
51
|
* Call the `kiosk::purchase<T>(Kiosk, ID, Coin<IOTA>)` function and receive an Item and
|
|
52
52
|
* a TransferRequest which needs to be dealt with (via a matching TransferPolicy).
|
|
53
53
|
*/
|
|
54
|
-
export declare function purchase(tx:
|
|
54
|
+
export declare function purchase(tx: Transaction, itemType: string, kiosk: ObjectArgument, itemId: string, payment: ObjectArgument): [TransactionObjectArgument, TransactionObjectArgument];
|
|
55
55
|
/**
|
|
56
56
|
* Call the `kiosk::withdraw(Kiosk, KioskOwnerCap, Option<u64>)` function and receive a Coin<IOTA>.
|
|
57
57
|
* If the amount is null, then the entire balance will be withdrawn.
|
|
58
58
|
*/
|
|
59
|
-
export declare function withdrawFromKiosk(tx:
|
|
59
|
+
export declare function withdrawFromKiosk(tx: Transaction, kiosk: ObjectArgument, kioskCap: ObjectArgument, amount?: string | bigint | number): TransactionObjectArgument;
|
|
60
60
|
/**
|
|
61
61
|
* Call the `kiosk::borrow_value<T>(Kiosk, KioskOwnerCap, ID): T` function.
|
|
62
62
|
* Immutably borrow an item from the Kiosk and return it in the end.
|
|
63
63
|
*
|
|
64
64
|
* Requires calling `returnValue` to return the item.
|
|
65
65
|
*/
|
|
66
|
-
export declare function borrowValue(tx:
|
|
66
|
+
export declare function borrowValue(tx: Transaction, itemType: string, kiosk: ObjectArgument, kioskCap: ObjectArgument, itemId: string): [TransactionArgument, TransactionArgument];
|
|
67
67
|
/**
|
|
68
68
|
* Call the `kiosk::return_value<T>(Kiosk, Item, Borrow)` function.
|
|
69
69
|
* Return an item to the Kiosk after it was `borrowValue`-d.
|
|
70
70
|
*/
|
|
71
|
-
export declare function returnValue(tx:
|
|
71
|
+
export declare function returnValue(tx: Transaction, itemType: string, kiosk: ObjectArgument, item: TransactionArgument, promise: TransactionArgument): void;
|
package/dist/esm/tx/kiosk.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/tx/kiosk.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@iota/iota-sdk/bcs';\nimport type {\n
|
|
5
|
-
"mappings": "AAIA,SAAS,WAAW;AAQpB,SAAS,cAAc,kBAAkB;AAKlC,SAAS,YACZ,IACsD;AACtD,QAAM,CAAC,OAAO,aAAa,IAAI,GAAG,SAAS;AAAA,IACvC,QAAQ,GAAG;AAAA,
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@iota/iota-sdk/bcs';\nimport type {\n Transaction,\n TransactionArgument,\n TransactionObjectArgument,\n} from '@iota/iota-sdk/transactions';\n\nimport type { ObjectArgument } from '../types/index.js';\nimport { KIOSK_MODULE, KIOSK_TYPE } from '../types/index.js';\n\n/**\n * Create a new shared Kiosk and returns the [kiosk, kioskOwnerCap] tuple.\n */\nexport function createKiosk(\n tx: Transaction,\n): [TransactionObjectArgument, TransactionObjectArgument] {\n const [kiosk, kioskOwnerCap] = tx.moveCall({\n target: `${KIOSK_MODULE}::new`,\n });\n\n return [kiosk, kioskOwnerCap];\n}\n\n/**\n * Calls the `kiosk::new()` function and shares the kiosk.\n * Returns the `kioskOwnerCap` object.\n */\nexport function createKioskAndShare(tx: Transaction): TransactionObjectArgument {\n const [kiosk, kioskOwnerCap] = createKiosk(tx);\n shareKiosk(tx, kiosk);\n return kioskOwnerCap;\n}\n\n/**\n * Converts Transfer Policy to a shared object.\n */\nexport function shareKiosk(tx: Transaction, kiosk: TransactionArgument) {\n tx.moveCall({\n target: `0x2::transfer::public_share_object`,\n typeArguments: [KIOSK_TYPE],\n arguments: [kiosk],\n });\n}\n\n/**\n * Call the `kiosk::place<T>(Kiosk, KioskOwnerCap, Item)` function.\n * Place an item to the Kiosk.\n */\nexport function place(\n tx: Transaction,\n itemType: string,\n kiosk: ObjectArgument,\n kioskCap: ObjectArgument,\n item: ObjectArgument,\n): void {\n tx.moveCall({\n target: `${KIOSK_MODULE}::place`,\n typeArguments: [itemType],\n arguments: [tx.object(kiosk), tx.object(kioskCap), tx.object(item)],\n });\n}\n\n/**\n * Call the `kiosk::lock<T>(Kiosk, KioskOwnerCap, TransferPolicy, Item)`\n * function. Lock an item in the Kiosk.\n *\n * Unlike `place` this function requires a `TransferPolicy` to exist\n * and be passed in. This is done to make sure the item does not get\n * locked without an option to take it out.\n */\nexport function lock(\n tx: Transaction,\n itemType: string,\n kiosk: ObjectArgument,\n kioskCap: ObjectArgument,\n policy: ObjectArgument,\n item: ObjectArgument,\n): void {\n tx.moveCall({\n target: `${KIOSK_MODULE}::lock`,\n typeArguments: [itemType],\n arguments: [tx.object(kiosk), tx.object(kioskCap), tx.object(policy), tx.object(item)],\n });\n}\n\n/**\n * Call the `kiosk::take<T>(Kiosk, KioskOwnerCap, ID)` function.\n * Take an item from the Kiosk.\n */\nexport function take(\n tx: Transaction,\n itemType: string,\n kiosk: ObjectArgument,\n kioskCap: ObjectArgument,\n itemId: string,\n): TransactionObjectArgument {\n const [item] = tx.moveCall({\n target: `${KIOSK_MODULE}::take`,\n typeArguments: [itemType],\n arguments: [tx.object(kiosk), tx.object(kioskCap), tx.pure.id(itemId)],\n });\n\n return item;\n}\n\n/**\n * Call the `kiosk::list<T>(Kiosk, KioskOwnerCap, ID, u64)` function.\n * List an item for sale.\n */\nexport function list(\n tx: Transaction,\n itemType: string,\n kiosk: ObjectArgument,\n kioskCap: ObjectArgument,\n itemId: string,\n price: string | bigint,\n): void {\n tx.moveCall({\n target: `${KIOSK_MODULE}::list`,\n typeArguments: [itemType],\n arguments: [tx.object(kiosk), tx.object(kioskCap), tx.pure.id(itemId), tx.pure.u64(price)],\n });\n}\n\n/**\n * Call the `kiosk::list<T>(Kiosk, KioskOwnerCap, ID, u64)` function.\n * List an item for sale.\n */\nexport function delist(\n tx: Transaction,\n itemType: string,\n kiosk: ObjectArgument,\n kioskCap: ObjectArgument,\n itemId: string,\n): void {\n tx.moveCall({\n target: `${KIOSK_MODULE}::delist`,\n typeArguments: [itemType],\n arguments: [tx.object(kiosk), tx.object(kioskCap), tx.pure.id(itemId)],\n });\n}\n\n/**\n * Call the `kiosk::place_and_list<T>(Kiosk, KioskOwnerCap, Item, u64)` function.\n * Place an item to the Kiosk and list it for sale.\n */\nexport function placeAndList(\n tx: Transaction,\n itemType: string,\n kiosk: ObjectArgument,\n kioskCap: ObjectArgument,\n item: ObjectArgument,\n price: string | bigint,\n): void {\n tx.moveCall({\n target: `${KIOSK_MODULE}::place_and_list`,\n typeArguments: [itemType],\n arguments: [tx.object(kiosk), tx.object(kioskCap), tx.object(item), tx.pure.u64(price)],\n });\n}\n\n/**\n * Call the `kiosk::purchase<T>(Kiosk, ID, Coin<IOTA>)` function and receive an Item and\n * a TransferRequest which needs to be dealt with (via a matching TransferPolicy).\n */\nexport function purchase(\n tx: Transaction,\n itemType: string,\n kiosk: ObjectArgument,\n itemId: string,\n payment: ObjectArgument,\n): [TransactionObjectArgument, TransactionObjectArgument] {\n const [item, transferRequest] = tx.moveCall({\n target: `${KIOSK_MODULE}::purchase`,\n typeArguments: [itemType],\n arguments: [tx.object(kiosk), tx.pure.id(itemId), tx.object(payment)],\n });\n\n return [item, transferRequest];\n}\n\n/**\n * Call the `kiosk::withdraw(Kiosk, KioskOwnerCap, Option<u64>)` function and receive a Coin<IOTA>.\n * If the amount is null, then the entire balance will be withdrawn.\n */\nexport function withdrawFromKiosk(\n tx: Transaction,\n kiosk: ObjectArgument,\n kioskCap: ObjectArgument,\n amount?: string | bigint | number,\n): TransactionObjectArgument {\n const amountArg = bcs.option(bcs.u64()).serialize(amount);\n\n const [coin] = tx.moveCall({\n target: `${KIOSK_MODULE}::withdraw`,\n arguments: [tx.object(kiosk), tx.object(kioskCap), amountArg],\n });\n\n return coin;\n}\n\n/**\n * Call the `kiosk::borrow_value<T>(Kiosk, KioskOwnerCap, ID): T` function.\n * Immutably borrow an item from the Kiosk and return it in the end.\n *\n * Requires calling `returnValue` to return the item.\n */\nexport function borrowValue(\n tx: Transaction,\n itemType: string,\n kiosk: ObjectArgument,\n kioskCap: ObjectArgument,\n itemId: string,\n): [TransactionArgument, TransactionArgument] {\n const [item, promise] = tx.moveCall({\n target: `${KIOSK_MODULE}::borrow_val`,\n typeArguments: [itemType],\n arguments: [tx.object(kiosk), tx.object(kioskCap), tx.pure.id(itemId)],\n });\n\n return [item, promise];\n}\n\n/**\n * Call the `kiosk::return_value<T>(Kiosk, Item, Borrow)` function.\n * Return an item to the Kiosk after it was `borrowValue`-d.\n */\nexport function returnValue(\n tx: Transaction,\n itemType: string,\n kiosk: ObjectArgument,\n item: TransactionArgument,\n promise: TransactionArgument,\n): void {\n tx.moveCall({\n target: `${KIOSK_MODULE}::return_val`,\n typeArguments: [itemType],\n arguments: [tx.object(kiosk), item, promise],\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Transaction, TransactionObjectArgument } from '@iota/iota-sdk/transactions';
|
|
2
2
|
import type { ObjectArgument } from '../types/index.js';
|
|
3
|
-
export declare function convertToPersonalTx(tx:
|
|
3
|
+
export declare function convertToPersonalTx(tx: Transaction, kiosk: ObjectArgument, kioskOwnerCap: ObjectArgument, packageId: string): TransactionObjectArgument;
|
|
4
4
|
/**
|
|
5
5
|
* Transfers the personal kiosk Cap to the sender.
|
|
6
6
|
*/
|
|
7
|
-
export declare function transferPersonalCapTx(tx:
|
|
7
|
+
export declare function transferPersonalCapTx(tx: Transaction, personalKioskCap: TransactionObjectArgument, packageId: string): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/tx/personal-kiosk.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {
|
|
5
|
-
"mappings": "AAQO,SAAS,oBACZ,IACA,OACA,eACA,WACyB;AACzB,QAAM,mBAAmB,GAAG,SAAS;AAAA,IACjC,QAAQ,GAAG;AAAA,
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Transaction, TransactionObjectArgument } from '@iota/iota-sdk/transactions';\n\nimport type { ObjectArgument } from '../types/index.js';\n\nexport function convertToPersonalTx(\n tx: Transaction,\n kiosk: ObjectArgument,\n kioskOwnerCap: ObjectArgument,\n packageId: string,\n): TransactionObjectArgument {\n const personalKioskCap = tx.moveCall({\n target: `${packageId}::personal_kiosk::new`,\n arguments: [tx.object(kiosk), tx.object(kioskOwnerCap)],\n });\n\n return personalKioskCap;\n}\n\n/**\n * Transfers the personal kiosk Cap to the sender.\n */\nexport function transferPersonalCapTx(\n tx: Transaction,\n personalKioskCap: TransactionObjectArgument,\n packageId: string,\n) {\n tx.moveCall({\n target: `${packageId}::personal_kiosk::transfer_to_sender`,\n arguments: [personalKioskCap],\n });\n}\n"],
|
|
5
|
+
"mappings": "AAQO,SAAS,oBACZ,IACA,OACA,eACA,WACyB;AACzB,QAAM,mBAAmB,GAAG,SAAS;AAAA,IACjC,QAAQ,GAAG,SAAS;AAAA,IACpB,WAAW,CAAC,GAAG,OAAO,KAAK,GAAG,GAAG,OAAO,aAAa,CAAC;AAAA,EAC1D,CAAC;AAED,SAAO;AACX;AAKO,SAAS,sBACZ,IACA,kBACA,WACF;AACE,KAAG,SAAS;AAAA,IACR,QAAQ,GAAG,SAAS;AAAA,IACpB,WAAW,CAAC,gBAAgB;AAAA,EAChC,CAAC;AACL;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Transaction } from '@iota/iota-sdk/transactions';
|
|
2
2
|
import type { ObjectArgument } from '../../types/index.js';
|
|
3
|
-
export declare function attachKioskLockRuleTx(tx:
|
|
4
|
-
export declare function attachRoyaltyRuleTx(tx:
|
|
3
|
+
export declare function attachKioskLockRuleTx(tx: Transaction, type: string, policy: ObjectArgument, policyCap: ObjectArgument, packageId: string): void;
|
|
4
|
+
export declare function attachRoyaltyRuleTx(tx: Transaction, type: string, policy: ObjectArgument, policyCap: ObjectArgument, percentageBps: number | string, // this is in basis points.
|
|
5
5
|
minAmount: number | string, packageId: string): void;
|
|
6
|
-
export declare function attachPersonalKioskRuleTx(tx:
|
|
7
|
-
export declare function attachFloorPriceRuleTx(tx:
|
|
6
|
+
export declare function attachPersonalKioskRuleTx(tx: Transaction, type: string, policy: ObjectArgument, policyCap: ObjectArgument, packageId: string): void;
|
|
7
|
+
export declare function attachFloorPriceRuleTx(tx: Transaction, type: string, policy: ObjectArgument, policyCap: ObjectArgument, minPrice: string | bigint, packageId: string): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/tx/rules/attach.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {
|
|
5
|
-
"mappings": "AAQO,SAAS,sBACZ,IACA,MACA,QACA,WACA,WACF;AACE,KAAG,SAAS;AAAA,IACR,QAAQ,GAAG;AAAA,
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Transaction } from '@iota/iota-sdk/transactions';\n\nimport type { ObjectArgument } from '../../types/index.js';\n\nexport function attachKioskLockRuleTx(\n tx: Transaction,\n type: string,\n policy: ObjectArgument,\n policyCap: ObjectArgument,\n packageId: string,\n) {\n tx.moveCall({\n target: `${packageId}::kiosk_lock_rule::add`,\n typeArguments: [type],\n arguments: [tx.object(policy), tx.object(policyCap)],\n });\n}\n\nexport function attachRoyaltyRuleTx(\n tx: Transaction,\n type: string,\n policy: ObjectArgument,\n policyCap: ObjectArgument,\n percentageBps: number | string, // this is in basis points.\n minAmount: number | string,\n packageId: string,\n) {\n if (Number(percentageBps) < 0 || Number(percentageBps) > 10_000)\n throw new Error('Invalid basis point percentage. Use a value between [0,10000].');\n\n tx.moveCall({\n target: `${packageId}::royalty_rule::add`,\n typeArguments: [type],\n arguments: [\n tx.object(policy),\n tx.object(policyCap),\n tx.pure.u16(Number(percentageBps)),\n tx.pure.u64(minAmount),\n ],\n });\n}\n\nexport function attachPersonalKioskRuleTx(\n tx: Transaction,\n type: string,\n policy: ObjectArgument,\n policyCap: ObjectArgument,\n packageId: string,\n) {\n tx.moveCall({\n target: `${packageId}::personal_kiosk_rule::add`,\n typeArguments: [type],\n arguments: [tx.object(policy), tx.object(policyCap)],\n });\n}\n\nexport function attachFloorPriceRuleTx(\n tx: Transaction,\n type: string,\n policy: ObjectArgument,\n policyCap: ObjectArgument,\n minPrice: string | bigint,\n packageId: string,\n) {\n tx.moveCall({\n target: `${packageId}::floor_price_rule::add`,\n typeArguments: [type],\n arguments: [tx.object(policy), tx.object(policyCap), tx.pure.u64(minPrice)],\n });\n}\n"],
|
|
5
|
+
"mappings": "AAQO,SAAS,sBACZ,IACA,MACA,QACA,WACA,WACF;AACE,KAAG,SAAS;AAAA,IACR,QAAQ,GAAG,SAAS;AAAA,IACpB,eAAe,CAAC,IAAI;AAAA,IACpB,WAAW,CAAC,GAAG,OAAO,MAAM,GAAG,GAAG,OAAO,SAAS,CAAC;AAAA,EACvD,CAAC;AACL;AAEO,SAAS,oBACZ,IACA,MACA,QACA,WACA,eACA,WACA,WACF;AACE,MAAI,OAAO,aAAa,IAAI,KAAK,OAAO,aAAa,IAAI;AACrD,UAAM,IAAI,MAAM,gEAAgE;AAEpF,KAAG,SAAS;AAAA,IACR,QAAQ,GAAG,SAAS;AAAA,IACpB,eAAe,CAAC,IAAI;AAAA,IACpB,WAAW;AAAA,MACP,GAAG,OAAO,MAAM;AAAA,MAChB,GAAG,OAAO,SAAS;AAAA,MACnB,GAAG,KAAK,IAAI,OAAO,aAAa,CAAC;AAAA,MACjC,GAAG,KAAK,IAAI,SAAS;AAAA,IACzB;AAAA,EACJ,CAAC;AACL;AAEO,SAAS,0BACZ,IACA,MACA,QACA,WACA,WACF;AACE,KAAG,SAAS;AAAA,IACR,QAAQ,GAAG,SAAS;AAAA,IACpB,eAAe,CAAC,IAAI;AAAA,IACpB,WAAW,CAAC,GAAG,OAAO,MAAM,GAAG,GAAG,OAAO,SAAS,CAAC;AAAA,EACvD,CAAC;AACL;AAEO,SAAS,uBACZ,IACA,MACA,QACA,WACA,UACA,WACF;AACE,KAAG,SAAS;AAAA,IACR,QAAQ,GAAG,SAAS;AAAA,IACpB,eAAe,CAAC,IAAI;AAAA,IACpB,WAAW,CAAC,GAAG,OAAO,MAAM,GAAG,GAAG,OAAO,SAAS,GAAG,GAAG,KAAK,IAAI,QAAQ,CAAC;AAAA,EAC9E,CAAC;AACL;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { lock } from "../kiosk.js";
|
|
2
2
|
function resolveRoyaltyRule(params) {
|
|
3
|
-
const {
|
|
4
|
-
const policyObj =
|
|
5
|
-
const [amount] =
|
|
3
|
+
const { transaction: tx, itemType, price, packageId, transferRequest, policyId } = params;
|
|
4
|
+
const policyObj = tx.object(policyId);
|
|
5
|
+
const [amount] = tx.moveCall({
|
|
6
6
|
target: `${packageId}::royalty_rule::fee_amount`,
|
|
7
7
|
typeArguments: [itemType],
|
|
8
|
-
arguments: [policyObj,
|
|
8
|
+
arguments: [policyObj, tx.pure.u64(price || "0")]
|
|
9
9
|
});
|
|
10
|
-
const feeCoin =
|
|
11
|
-
|
|
10
|
+
const feeCoin = tx.splitCoins(tx.gas, [amount]);
|
|
11
|
+
tx.moveCall({
|
|
12
12
|
target: `${packageId}::royalty_rule::pay`,
|
|
13
13
|
typeArguments: [itemType],
|
|
14
14
|
arguments: [policyObj, transferRequest, feeCoin]
|
|
@@ -16,7 +16,7 @@ function resolveRoyaltyRule(params) {
|
|
|
16
16
|
}
|
|
17
17
|
function resolveKioskLockRule(params) {
|
|
18
18
|
const {
|
|
19
|
-
|
|
19
|
+
transaction: tx,
|
|
20
20
|
packageId,
|
|
21
21
|
itemType,
|
|
22
22
|
kiosk,
|
|
@@ -25,31 +25,29 @@ function resolveKioskLockRule(params) {
|
|
|
25
25
|
purchasedItem,
|
|
26
26
|
transferRequest
|
|
27
27
|
} = params;
|
|
28
|
-
if (!kiosk || !kioskCap)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
txb.moveCall({
|
|
28
|
+
if (!kiosk || !kioskCap) throw new Error("Missing Owned Kiosk or Owned Kiosk Cap");
|
|
29
|
+
lock(tx, itemType, kiosk, kioskCap, policyId, purchasedItem);
|
|
30
|
+
tx.moveCall({
|
|
32
31
|
target: `${packageId}::kiosk_lock_rule::prove`,
|
|
33
32
|
typeArguments: [itemType],
|
|
34
|
-
arguments: [transferRequest,
|
|
33
|
+
arguments: [transferRequest, tx.object(kiosk)]
|
|
35
34
|
});
|
|
36
35
|
}
|
|
37
36
|
function resolvePersonalKioskRule(params) {
|
|
38
|
-
const {
|
|
39
|
-
if (!kiosk)
|
|
40
|
-
|
|
41
|
-
txb.moveCall({
|
|
37
|
+
const { transaction: tx, packageId, itemType, kiosk, transferRequest } = params;
|
|
38
|
+
if (!kiosk) throw new Error("Missing owned Kiosk.");
|
|
39
|
+
tx.moveCall({
|
|
42
40
|
target: `${packageId}::personal_kiosk_rule::prove`,
|
|
43
41
|
typeArguments: [itemType],
|
|
44
|
-
arguments: [
|
|
42
|
+
arguments: [tx.object(kiosk), transferRequest]
|
|
45
43
|
});
|
|
46
44
|
}
|
|
47
45
|
function resolveFloorPriceRule(params) {
|
|
48
|
-
const {
|
|
49
|
-
|
|
46
|
+
const { transaction: tx, packageId, itemType, policyId, transferRequest } = params;
|
|
47
|
+
tx.moveCall({
|
|
50
48
|
target: `${packageId}::floor_price_rule::prove`,
|
|
51
49
|
typeArguments: [itemType],
|
|
52
|
-
arguments: [
|
|
50
|
+
arguments: [tx.object(policyId), transferRequest]
|
|
53
51
|
});
|
|
54
52
|
}
|
|
55
53
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/tx/rules/resolve.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { RuleResolvingParams } from '../../types/index.js';\nimport { lock } from '../kiosk.js';\n\n/**\n * A helper to resolve the royalty rule.\n */\nexport function resolveRoyaltyRule(params: RuleResolvingParams) {\n const {
|
|
5
|
-
"mappings": "AAKA,SAAS,YAAY;AAKd,SAAS,mBAAmB,QAA6B;AAC5D,QAAM,EAAE,
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { RuleResolvingParams } from '../../types/index.js';\nimport { lock } from '../kiosk.js';\n\n/**\n * A helper to resolve the royalty rule.\n */\nexport function resolveRoyaltyRule(params: RuleResolvingParams) {\n const { transaction: tx, itemType, price, packageId, transferRequest, policyId } = params;\n\n const policyObj = tx.object(policyId);\n\n // calculates the amount\n const [amount] = tx.moveCall({\n target: `${packageId}::royalty_rule::fee_amount`,\n typeArguments: [itemType],\n arguments: [policyObj, tx.pure.u64(price || '0')],\n });\n\n // splits the coin.\n const feeCoin = tx.splitCoins(tx.gas, [amount]);\n\n // pays the policy\n tx.moveCall({\n target: `${packageId}::royalty_rule::pay`,\n typeArguments: [itemType],\n arguments: [policyObj, transferRequest, feeCoin],\n });\n}\n\nexport function resolveKioskLockRule(params: RuleResolvingParams) {\n const {\n transaction: tx,\n packageId,\n itemType,\n kiosk,\n kioskCap,\n policyId,\n purchasedItem,\n transferRequest,\n } = params;\n\n if (!kiosk || !kioskCap) throw new Error('Missing Owned Kiosk or Owned Kiosk Cap');\n\n lock(tx, itemType, kiosk, kioskCap, policyId, purchasedItem);\n\n // proves that the item is locked in the kiosk to the TP.\n tx.moveCall({\n target: `${packageId}::kiosk_lock_rule::prove`,\n typeArguments: [itemType],\n arguments: [transferRequest, tx.object(kiosk)],\n });\n}\n\n/**\n * A helper to resolve the personalKioskRule.\n * @param params\n */\nexport function resolvePersonalKioskRule(params: RuleResolvingParams) {\n const { transaction: tx, packageId, itemType, kiosk, transferRequest } = params;\n\n if (!kiosk) throw new Error('Missing owned Kiosk.');\n\n // proves that the destination kiosk is personal.\n tx.moveCall({\n target: `${packageId}::personal_kiosk_rule::prove`,\n typeArguments: [itemType],\n arguments: [tx.object(kiosk), transferRequest],\n });\n}\n\n/**\n * Resolves the floor price rule.\n */\nexport function resolveFloorPriceRule(params: RuleResolvingParams) {\n const { transaction: tx, packageId, itemType, policyId, transferRequest } = params;\n\n // proves that the destination kiosk is personal\n tx.moveCall({\n target: `${packageId}::floor_price_rule::prove`,\n typeArguments: [itemType],\n arguments: [tx.object(policyId), transferRequest],\n });\n}\n"],
|
|
5
|
+
"mappings": "AAKA,SAAS,YAAY;AAKd,SAAS,mBAAmB,QAA6B;AAC5D,QAAM,EAAE,aAAa,IAAI,UAAU,OAAO,WAAW,iBAAiB,SAAS,IAAI;AAEnF,QAAM,YAAY,GAAG,OAAO,QAAQ;AAGpC,QAAM,CAAC,MAAM,IAAI,GAAG,SAAS;AAAA,IACzB,QAAQ,GAAG,SAAS;AAAA,IACpB,eAAe,CAAC,QAAQ;AAAA,IACxB,WAAW,CAAC,WAAW,GAAG,KAAK,IAAI,SAAS,GAAG,CAAC;AAAA,EACpD,CAAC;AAGD,QAAM,UAAU,GAAG,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;AAG9C,KAAG,SAAS;AAAA,IACR,QAAQ,GAAG,SAAS;AAAA,IACpB,eAAe,CAAC,QAAQ;AAAA,IACxB,WAAW,CAAC,WAAW,iBAAiB,OAAO;AAAA,EACnD,CAAC;AACL;AAEO,SAAS,qBAAqB,QAA6B;AAC9D,QAAM;AAAA,IACF,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAI;AAEJ,MAAI,CAAC,SAAS,CAAC,SAAU,OAAM,IAAI,MAAM,wCAAwC;AAEjF,OAAK,IAAI,UAAU,OAAO,UAAU,UAAU,aAAa;AAG3D,KAAG,SAAS;AAAA,IACR,QAAQ,GAAG,SAAS;AAAA,IACpB,eAAe,CAAC,QAAQ;AAAA,IACxB,WAAW,CAAC,iBAAiB,GAAG,OAAO,KAAK,CAAC;AAAA,EACjD,CAAC;AACL;AAMO,SAAS,yBAAyB,QAA6B;AAClE,QAAM,EAAE,aAAa,IAAI,WAAW,UAAU,OAAO,gBAAgB,IAAI;AAEzE,MAAI,CAAC,MAAO,OAAM,IAAI,MAAM,sBAAsB;AAGlD,KAAG,SAAS;AAAA,IACR,QAAQ,GAAG,SAAS;AAAA,IACpB,eAAe,CAAC,QAAQ;AAAA,IACxB,WAAW,CAAC,GAAG,OAAO,KAAK,GAAG,eAAe;AAAA,EACjD,CAAC;AACL;AAKO,SAAS,sBAAsB,QAA6B;AAC/D,QAAM,EAAE,aAAa,IAAI,WAAW,UAAU,UAAU,gBAAgB,IAAI;AAG5E,KAAG,SAAS;AAAA,IACR,QAAQ,GAAG,SAAS;AAAA,IACpB,eAAe,CAAC,QAAQ;AAAA,IACxB,WAAW,CAAC,GAAG,OAAO,QAAQ,GAAG,eAAe;AAAA,EACpD,CAAC;AACL;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Transaction, TransactionArgument, TransactionObjectArgument } from '@iota/iota-sdk/transactions';
|
|
2
2
|
import type { ObjectArgument } from '../types/index.js';
|
|
3
3
|
/**
|
|
4
4
|
* Call the `transfer_policy::new` function to create a new transfer policy.
|
|
5
5
|
* Returns `transferPolicyCap`
|
|
6
6
|
*/
|
|
7
|
-
export declare function createTransferPolicy(tx:
|
|
7
|
+
export declare function createTransferPolicy(tx: Transaction, itemType: string, publisher: ObjectArgument): TransactionObjectArgument;
|
|
8
8
|
/**
|
|
9
9
|
* Creates a transfer Policy and returns both the Policy and the Cap.
|
|
10
10
|
* Used if we want to use the policy before making it a shared object.
|
|
11
11
|
*/
|
|
12
|
-
export declare function createTransferPolicyWithoutSharing(tx:
|
|
12
|
+
export declare function createTransferPolicyWithoutSharing(tx: Transaction, itemType: string, publisher: ObjectArgument): [TransactionObjectArgument, TransactionObjectArgument];
|
|
13
13
|
/**
|
|
14
14
|
* Converts Transfer Policy to a shared object.
|
|
15
15
|
*/
|
|
16
|
-
export declare function shareTransferPolicy(tx:
|
|
16
|
+
export declare function shareTransferPolicy(tx: Transaction, itemType: string, transferPolicy: TransactionObjectArgument): void;
|
|
17
17
|
/**
|
|
18
18
|
* Call the `transfer_policy::withdraw` function to withdraw profits from a transfer policy.
|
|
19
19
|
*/
|
|
20
|
-
export declare function withdrawFromPolicy(tx:
|
|
20
|
+
export declare function withdrawFromPolicy(tx: Transaction, itemType: string, policy: ObjectArgument, policyCap: ObjectArgument, amount?: string | bigint | null): TransactionObjectArgument;
|
|
21
21
|
/**
|
|
22
22
|
* Call the `transfer_policy::confirm_request` function to unblock the
|
|
23
23
|
* transaction.
|
|
24
24
|
*/
|
|
25
|
-
export declare function confirmRequest(tx:
|
|
25
|
+
export declare function confirmRequest(tx: Transaction, itemType: string, policy: ObjectArgument, request: TransactionArgument): void;
|
|
26
26
|
/**
|
|
27
27
|
* Calls the `transfer_policy::remove_rule` function to remove a Rule from the transfer policy's ruleset.
|
|
28
28
|
*/
|
|
29
|
-
export declare function removeTransferPolicyRule(tx:
|
|
29
|
+
export declare function removeTransferPolicyRule(tx: Transaction, itemType: string, ruleType: string, configType: string, policy: ObjectArgument, policyCap: ObjectArgument): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/tx/transfer-policy.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@iota/iota-sdk/bcs';\nimport type {\n
|
|
5
|
-
"mappings": "AAIA,SAAS,WAAW;AAQpB,SAAS,wBAAwB,4BAA4B;AAMtD,SAAS,qBACZ,IACA,UACA,WACyB;AACzB,QAAM,CAAC,gBAAgB,iBAAiB,IAAI;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,sBAAoB,IAAI,UAAU,cAAc;AAEhD,SAAO;AACX;AAMO,SAAS,mCACZ,IACA,UACA,WACsD;AACtD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,GAAG,SAAS;AAAA,IACpD,QAAQ,GAAG;AAAA,
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@iota/iota-sdk/bcs';\nimport type {\n Transaction,\n TransactionArgument,\n TransactionObjectArgument,\n} from '@iota/iota-sdk/transactions';\n\nimport type { ObjectArgument } from '../types/index.js';\nimport { TRANSFER_POLICY_MODULE, TRANSFER_POLICY_TYPE } from '../types/index.js';\n\n/**\n * Call the `transfer_policy::new` function to create a new transfer policy.\n * Returns `transferPolicyCap`\n */\nexport function createTransferPolicy(\n tx: Transaction,\n itemType: string,\n publisher: ObjectArgument,\n): TransactionObjectArgument {\n const [transferPolicy, transferPolicyCap] = createTransferPolicyWithoutSharing(\n tx,\n itemType,\n publisher,\n );\n\n shareTransferPolicy(tx, itemType, transferPolicy);\n\n return transferPolicyCap;\n}\n\n/**\n * Creates a transfer Policy and returns both the Policy and the Cap.\n * Used if we want to use the policy before making it a shared object.\n */\nexport function createTransferPolicyWithoutSharing(\n tx: Transaction,\n itemType: string,\n publisher: ObjectArgument,\n): [TransactionObjectArgument, TransactionObjectArgument] {\n const [transferPolicy, transferPolicyCap] = tx.moveCall({\n target: `${TRANSFER_POLICY_MODULE}::new`,\n typeArguments: [itemType],\n arguments: [tx.object(publisher)],\n });\n\n return [transferPolicy, transferPolicyCap];\n}\n/**\n * Converts Transfer Policy to a shared object.\n */\nexport function shareTransferPolicy(\n tx: Transaction,\n itemType: string,\n transferPolicy: TransactionObjectArgument,\n) {\n tx.moveCall({\n target: `0x2::transfer::public_share_object`,\n typeArguments: [`${TRANSFER_POLICY_TYPE}<${itemType}>`],\n arguments: [transferPolicy],\n });\n}\n\n/**\n * Call the `transfer_policy::withdraw` function to withdraw profits from a transfer policy.\n */\nexport function withdrawFromPolicy(\n tx: Transaction,\n itemType: string,\n policy: ObjectArgument,\n policyCap: ObjectArgument,\n amount?: string | bigint | null,\n): TransactionObjectArgument {\n const amountArg = bcs.option(bcs.u64()).serialize(amount);\n\n const [profits] = tx.moveCall({\n target: `${TRANSFER_POLICY_MODULE}::withdraw`,\n typeArguments: [itemType],\n arguments: [tx.object(policy), tx.object(policyCap), amountArg],\n });\n\n return profits;\n}\n\n/**\n * Call the `transfer_policy::confirm_request` function to unblock the\n * transaction.\n */\nexport function confirmRequest(\n tx: Transaction,\n itemType: string,\n policy: ObjectArgument,\n request: TransactionArgument,\n): void {\n tx.moveCall({\n target: `${TRANSFER_POLICY_MODULE}::confirm_request`,\n typeArguments: [itemType],\n arguments: [tx.object(policy), request],\n });\n}\n\n/**\n * Calls the `transfer_policy::remove_rule` function to remove a Rule from the transfer policy's ruleset.\n */\nexport function removeTransferPolicyRule(\n tx: Transaction,\n itemType: string,\n ruleType: string,\n configType: string,\n policy: ObjectArgument,\n policyCap: ObjectArgument,\n): void {\n tx.moveCall({\n target: `${TRANSFER_POLICY_MODULE}::remove_rule`,\n typeArguments: [itemType, ruleType, configType],\n arguments: [tx.object(policy), tx.object(policyCap)],\n });\n}\n"],
|
|
5
|
+
"mappings": "AAIA,SAAS,WAAW;AAQpB,SAAS,wBAAwB,4BAA4B;AAMtD,SAAS,qBACZ,IACA,UACA,WACyB;AACzB,QAAM,CAAC,gBAAgB,iBAAiB,IAAI;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,sBAAoB,IAAI,UAAU,cAAc;AAEhD,SAAO;AACX;AAMO,SAAS,mCACZ,IACA,UACA,WACsD;AACtD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,GAAG,SAAS;AAAA,IACpD,QAAQ,GAAG,sBAAsB;AAAA,IACjC,eAAe,CAAC,QAAQ;AAAA,IACxB,WAAW,CAAC,GAAG,OAAO,SAAS,CAAC;AAAA,EACpC,CAAC;AAED,SAAO,CAAC,gBAAgB,iBAAiB;AAC7C;AAIO,SAAS,oBACZ,IACA,UACA,gBACF;AACE,KAAG,SAAS;AAAA,IACR,QAAQ;AAAA,IACR,eAAe,CAAC,GAAG,oBAAoB,IAAI,QAAQ,GAAG;AAAA,IACtD,WAAW,CAAC,cAAc;AAAA,EAC9B,CAAC;AACL;AAKO,SAAS,mBACZ,IACA,UACA,QACA,WACA,QACyB;AACzB,QAAM,YAAY,IAAI,OAAO,IAAI,IAAI,CAAC,EAAE,UAAU,MAAM;AAExD,QAAM,CAAC,OAAO,IAAI,GAAG,SAAS;AAAA,IAC1B,QAAQ,GAAG,sBAAsB;AAAA,IACjC,eAAe,CAAC,QAAQ;AAAA,IACxB,WAAW,CAAC,GAAG,OAAO,MAAM,GAAG,GAAG,OAAO,SAAS,GAAG,SAAS;AAAA,EAClE,CAAC;AAED,SAAO;AACX;AAMO,SAAS,eACZ,IACA,UACA,QACA,SACI;AACJ,KAAG,SAAS;AAAA,IACR,QAAQ,GAAG,sBAAsB;AAAA,IACjC,eAAe,CAAC,QAAQ;AAAA,IACxB,WAAW,CAAC,GAAG,OAAO,MAAM,GAAG,OAAO;AAAA,EAC1C,CAAC;AACL;AAKO,SAAS,yBACZ,IACA,UACA,UACA,YACA,QACA,WACI;AACJ,KAAG,SAAS;AAAA,IACR,QAAQ,GAAG,sBAAsB;AAAA,IACjC,eAAe,CAAC,UAAU,UAAU,UAAU;AAAA,IAC9C,WAAW,CAAC,GAAG,OAAO,MAAM,GAAG,GAAG,OAAO,SAAS,CAAC;AAAA,EACvD,CAAC;AACL;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/types/kiosk.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n PaginatedObjectsResponse,\n IotaObjectData,\n IotaObjectDataOptions,\n} from '@iota/iota-sdk/client';\nimport type { TransactionArgument } from '@iota/iota-sdk/transactions';\n\nimport type { ObjectArgument } from './index.js';\n\n/** The Kiosk module. */\nexport const KIOSK_MODULE = '0x2::kiosk';\n\n/** The Kiosk type. */\nexport const KIOSK_TYPE = `${KIOSK_MODULE}::Kiosk`;\n\n/** The Kiosk Owner Cap Type */\nexport const KIOSK_OWNER_CAP = `${KIOSK_MODULE}::KioskOwnerCap`;\n\n/** The Kiosk Item Type */\nexport const KIOSK_ITEM = `${KIOSK_MODULE}::Item`;\n\n/** The Kiosk Listing Type */\nexport const KIOSK_LISTING = `${KIOSK_MODULE}::Listing`;\n\n/** The Kiosk Lock Type */\nexport const KIOSK_LOCK = `${KIOSK_MODULE}::Lock`;\n\n/** The Kiosk PurchaseCap type */\nexport const KIOSK_PURCHASE_CAP = `${KIOSK_MODULE}::PurchaseCap`;\n\n/**\n * The Kiosk object fields (for BCS queries).\n */\nexport type Kiosk = {\n id: string;\n profits: string;\n owner: string;\n itemCount: number;\n
|
|
5
|
-
"mappings": "AAcO,MAAM,eAAe;AAGrB,MAAM,aAAa,GAAG;
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n PaginatedObjectsResponse,\n IotaObjectData,\n IotaObjectDataOptions,\n} from '@iota/iota-sdk/client';\nimport type { TransactionArgument } from '@iota/iota-sdk/transactions';\n\nimport type { ObjectArgument } from './index.js';\n\n/** The Kiosk module. */\nexport const KIOSK_MODULE = '0x2::kiosk';\n\n/** The Kiosk type. */\nexport const KIOSK_TYPE = `${KIOSK_MODULE}::Kiosk`;\n\n/** The Kiosk Owner Cap Type */\nexport const KIOSK_OWNER_CAP = `${KIOSK_MODULE}::KioskOwnerCap`;\n\n/** The Kiosk Item Type */\nexport const KIOSK_ITEM = `${KIOSK_MODULE}::Item`;\n\n/** The Kiosk Listing Type */\nexport const KIOSK_LISTING = `${KIOSK_MODULE}::Listing`;\n\n/** The Kiosk Lock Type */\nexport const KIOSK_LOCK = `${KIOSK_MODULE}::Lock`;\n\n/** The Kiosk PurchaseCap type */\nexport const KIOSK_PURCHASE_CAP = `${KIOSK_MODULE}::PurchaseCap`;\n\n/**\n * The Kiosk object fields (for BCS queries).\n */\nexport type Kiosk = {\n id: string;\n profits: string;\n owner: string;\n itemCount: number;\n};\n\n/**\n * PurchaseCap object fields (for BCS queries).\n */\nexport type PurchaseCap = {\n id: string;\n kioskId: string;\n itemId: string;\n minPrice: string;\n};\n\n/**\n * The response type of a successful purchase flow.\n * Returns the item, and a `canTransfer` param.\n */\nexport type PurchaseAndResolvePoliciesResponse = {\n item: TransactionArgument;\n canTransfer: boolean;\n};\n\n/**\n * Optional parameters for `purchaseAndResolvePolicies` flow.\n * This gives us the chance to extend the function in further releases\n * without introducing more breaking changes.\n */\nexport type PurchaseOptionalParams = {\n ownedKiosk?: ObjectArgument;\n ownedKioskCap?: ObjectArgument;\n};\n\n/**\n * A dynamic field `Listing { ID, isExclusive }` attached to the Kiosk.\n * Holds a `u64` value - the price of the item.\n */\nexport type KioskListing = {\n /** The ID of the Item */\n objectId: string;\n /**\n * Whether or not there's a `PurchaseCap` issued. `true` means that\n * the listing is controlled by some logic and can't be purchased directly.\n *\n * TODO: consider renaming the field for better indication.\n */\n isExclusive: boolean;\n /** The ID of the listing */\n listingId: string;\n price?: string;\n};\n\n/**\n * A dynamic field `Item { ID }` attached to the Kiosk.\n * Holds an Item `T`. The type of the item is known upfront.\n */\nexport type KioskItem = {\n /** The ID of the Item */\n objectId: string;\n /** The type of the Item */\n type: string;\n /** Whether the item is Locked (there must be a `Lock` Dynamic Field) */\n isLocked: boolean;\n /** Optional listing */\n listing?: KioskListing;\n /** The ID of the kiosk the item is placed in */\n kioskId: string;\n /** Optional Kiosk Data */\n data?: IotaObjectData;\n};\n\n/** The overview type returned from `getKiosk` */\nexport type KioskExtensionOverview = {\n /** The ID of the extension's DF */\n objectId: string;\n /** The inner type of the Extension */\n type: string;\n};\n/**\n * Hold the KioskExtension data\n */\nexport type KioskExtension = KioskExtensionOverview & {\n /** These fields are only there if we have `withExtensions` flag */\n isEnabled: boolean;\n permissions: string;\n storageId: string;\n storageSize: number;\n};\n\n/**\n * Aggregated data from the Kiosk.\n */\nexport type KioskData = {\n items: KioskItem[];\n itemIds: string[];\n listingIds: string[];\n kiosk?: Kiosk;\n extensions: KioskExtensionOverview[]; // type will be defined on later versions of the SDK.\n};\n\nexport type PagedKioskData = {\n data: KioskData;\n nextCursor: string | null | undefined;\n hasNextPage: boolean;\n};\n\nexport type FetchKioskOptions = {\n /** Include the base kiosk object, which includes the profits, the owner and the base fields. */\n withKioskFields?: boolean;\n /** Include the listing prices. */\n withListingPrices?: boolean;\n /** Include the objects for the Items in the kiosk. Defaults to `display` only. */\n withObjects?: boolean;\n /** Pass the data options for the objects, when fetching, in case you want to query other details. */\n objectOptions?: IotaObjectDataOptions;\n};\n\nexport type OwnedKiosks = {\n kioskOwnerCaps: KioskOwnerCap[];\n kioskIds: string[];\n} & Omit<PaginatedObjectsResponse, 'data'>;\n\nexport type KioskOwnerCap = {\n isPersonal?: boolean;\n objectId: string;\n kioskId: string;\n digest: string;\n version: string;\n};\n\nexport type PurchaseOptions = {\n extraArgs?: Record<string, any>;\n};\n\nexport type ItemId = { itemType: string; itemId: string };\nexport type ItemReference = { itemType: string; item: ObjectArgument };\nexport type ItemValue = { itemType: string; item: TransactionArgument };\nexport type Price = { price: string | bigint };\n"],
|
|
5
|
+
"mappings": "AAcO,MAAM,eAAe;AAGrB,MAAM,aAAa,GAAG,YAAY;AAGlC,MAAM,kBAAkB,GAAG,YAAY;AAGvC,MAAM,aAAa,GAAG,YAAY;AAGlC,MAAM,gBAAgB,GAAG,YAAY;AAGrC,MAAM,aAAa,GAAG,YAAY;AAGlC,MAAM,qBAAqB,GAAG,YAAY;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ObjectOwner } from '@iota/iota-sdk/client';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Transaction, TransactionObjectArgument } from '@iota/iota-sdk/transactions';
|
|
3
3
|
import type { ObjectArgument } from './index.js';
|
|
4
4
|
/** The Transfer Policy module. */
|
|
5
5
|
export declare const TRANSFER_POLICY_MODULE = "0x2::transfer_policy";
|
|
@@ -34,7 +34,9 @@ export type TransferPolicyCreated = {
|
|
|
34
34
|
id: string;
|
|
35
35
|
};
|
|
36
36
|
export type RuleResolvingParams = {
|
|
37
|
-
|
|
37
|
+
transaction: Transaction;
|
|
38
|
+
/** @deprecated use transaction instead */
|
|
39
|
+
transactionBlock: Transaction;
|
|
38
40
|
itemType: string;
|
|
39
41
|
itemId: string;
|
|
40
42
|
price: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/types/transfer-policy.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ObjectOwner } from '@iota/iota-sdk/client';\nimport type {
|
|
5
|
-
"mappings": "AAUO,MAAM,yBAAyB;AAG/B,MAAM,gCAAgC,GAAG;
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ObjectOwner } from '@iota/iota-sdk/client';\nimport type { Transaction, TransactionObjectArgument } from '@iota/iota-sdk/transactions';\n\nimport type { ObjectArgument } from './index.js';\n\n/** The Transfer Policy module. */\nexport const TRANSFER_POLICY_MODULE = '0x2::transfer_policy';\n\n/** Name of the event emitted when a TransferPolicy for T is created. */\nexport const TRANSFER_POLICY_CREATED_EVENT = `${TRANSFER_POLICY_MODULE}::TransferPolicyCreated`;\n\n/** The Transfer Policy Type */\nexport const TRANSFER_POLICY_TYPE = `${TRANSFER_POLICY_MODULE}::TransferPolicy`;\n\n/** The Transfer Policy Cap Type */\nexport const TRANSFER_POLICY_CAP_TYPE = `${TRANSFER_POLICY_MODULE}::TransferPolicyCap`;\n\n/** The Kiosk Lock Rule */\nexport const KIOSK_LOCK_RULE = 'kiosk_lock_rule::Rule';\n\n/** The Royalty rule */\nexport const ROYALTY_RULE = 'royalty_rule::Rule';\n\n/**\n * The Transfer Policy Cap in a consumable way.\n */\nexport type TransferPolicyCap = {\n policyId: string;\n policyCapId: string;\n type: string;\n};\n\n/** The `TransferPolicy` object */\nexport type TransferPolicy = {\n id: string;\n type: string;\n balance: string;\n rules: string[];\n owner: ObjectOwner;\n};\n\n/** Event emitted when a TransferPolicy is created. */\nexport type TransferPolicyCreated = {\n id: string;\n};\n\n// The object a Rule resolving function accepts\n// It can accept a set of fixed fields, that are part of every purchase flow as well any extra arguments to resolve custom policies!\n// Each rule resolving function should check that the key it's seeking is in the object\n// e.g. `if(!'my_key' in ruleParams!) throw new Error(\"Can't resolve that rule!\")`\nexport type RuleResolvingParams = {\n transaction: Transaction;\n /** @deprecated use transaction instead */\n transactionBlock: Transaction;\n itemType: string;\n itemId: string;\n price: string;\n policyId: ObjectArgument;\n sellerKiosk: ObjectArgument;\n kiosk: ObjectArgument;\n kioskCap: ObjectArgument;\n transferRequest: TransactionObjectArgument;\n purchasedItem: TransactionObjectArgument;\n packageId: string;\n extraArgs: Record<string, any>; // extraParams contains more possible {key, values} to pass for custom rules.\n};\n"],
|
|
5
|
+
"mappings": "AAUO,MAAM,yBAAyB;AAG/B,MAAM,gCAAgC,GAAG,sBAAsB;AAG/D,MAAM,uBAAuB,GAAG,sBAAsB;AAGtD,MAAM,2BAA2B,GAAG,sBAAsB;AAG1D,MAAM,kBAAkB;AAGxB,MAAM,eAAe;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/esm/utils.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import {
|
|
2
|
+
fromB64,
|
|
3
|
+
normalizeStructTag,
|
|
4
|
+
normalizeIotaAddress,
|
|
5
|
+
parseStructTag
|
|
6
|
+
} from "@iota/iota-sdk/utils";
|
|
7
|
+
import { KioskType } from "./bcs.js";
|
|
8
|
+
import { TRANSFER_POLICY_CAP_TYPE } from "./types/index.js";
|
|
4
9
|
const DEFAULT_QUERY_LIMIT = 50;
|
|
5
10
|
async function getKioskObject(client, id) {
|
|
6
11
|
const queryRes = await client.getObject({ id, options: { showBcs: true } });
|
|
@@ -10,7 +15,7 @@ async function getKioskObject(client, id) {
|
|
|
10
15
|
if (!queryRes.data.bcs || !("bcsBytes" in queryRes.data.bcs)) {
|
|
11
16
|
throw new Error(`Invalid kiosk query: ${id}, expected object, got package`);
|
|
12
17
|
}
|
|
13
|
-
return
|
|
18
|
+
return KioskType.parse(fromB64(queryRes.data.bcs.bcsBytes));
|
|
14
19
|
}
|
|
15
20
|
function extractKioskData(data, listings, lockedItemIds, kioskId) {
|
|
16
21
|
return data.reduce(
|
|
@@ -51,12 +56,10 @@ function attachListingsAndPrices(kioskData, listings, listingObjects) {
|
|
|
51
56
|
const itemListings = listings.reduce(
|
|
52
57
|
(acc, item, idx) => {
|
|
53
58
|
acc[item.objectId] = { ...item };
|
|
54
|
-
if (listingObjects.length === 0)
|
|
55
|
-
return acc;
|
|
59
|
+
if (listingObjects.length === 0) return acc;
|
|
56
60
|
const content = listingObjects[idx].data?.content;
|
|
57
61
|
const data = content?.dataType === "moveObject" ? content?.fields : null;
|
|
58
|
-
if (!data)
|
|
59
|
-
return acc;
|
|
62
|
+
if (!data) return acc;
|
|
60
63
|
acc[item.objectId].price = data.value;
|
|
61
64
|
return acc;
|
|
62
65
|
},
|
|
@@ -153,8 +156,7 @@ function percentageToBasisPoints(percentage) {
|
|
|
153
156
|
function parseTransferPolicyCapObject(item) {
|
|
154
157
|
const type = item?.data?.content?.type;
|
|
155
158
|
const policy = item?.data?.content?.fields?.policy_id;
|
|
156
|
-
if (!type.includes(TRANSFER_POLICY_CAP_TYPE))
|
|
157
|
-
return void 0;
|
|
159
|
+
if (!type.includes(TRANSFER_POLICY_CAP_TYPE)) return void 0;
|
|
158
160
|
const objectType = type.replace(TRANSFER_POLICY_CAP_TYPE + "<", "").slice(0, -1);
|
|
159
161
|
return {
|
|
160
162
|
policyId: policy,
|
package/dist/esm/utils.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n DynamicFieldInfo,\n PaginationArguments,\n IotaClient,\n IotaObjectData,\n IotaObjectDataFilter,\n IotaObjectDataOptions,\n IotaObjectResponse,\n} from '@iota/iota-sdk/client';\nimport {
|
|
5
|
-
"mappings": "AAaA,
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n DynamicFieldInfo,\n PaginationArguments,\n IotaClient,\n IotaObjectData,\n IotaObjectDataFilter,\n IotaObjectDataOptions,\n IotaObjectResponse,\n} from '@iota/iota-sdk/client';\nimport {\n fromB64,\n normalizeStructTag,\n normalizeIotaAddress,\n parseStructTag,\n} from '@iota/iota-sdk/utils';\n\nimport { KioskType } from './bcs.js';\nimport type { Kiosk, KioskData, KioskListing, TransferPolicyCap } from './types/index.js';\nimport { TRANSFER_POLICY_CAP_TYPE } from './types/index.js';\n\nconst DEFAULT_QUERY_LIMIT = 50;\n\nexport async function getKioskObject(client: IotaClient, id: string): Promise<Kiosk> {\n const queryRes = await client.getObject({ id, options: { showBcs: true } });\n\n if (!queryRes || queryRes.error || !queryRes.data) {\n throw new Error(`Kiosk ${id} not found; ${queryRes.error}`);\n }\n\n if (!queryRes.data.bcs || !('bcsBytes' in queryRes.data.bcs)) {\n throw new Error(`Invalid kiosk query: ${id}, expected object, got package`);\n }\n\n return KioskType.parse(fromB64(queryRes.data.bcs!.bcsBytes));\n}\n\n// helper to extract kiosk data from dynamic fields.\nexport function extractKioskData(\n data: DynamicFieldInfo[],\n listings: KioskListing[],\n lockedItemIds: string[],\n kioskId: string,\n): KioskData {\n return data.reduce<KioskData>(\n (acc: KioskData, val: DynamicFieldInfo) => {\n const type = val.name.type;\n\n if (type.startsWith('0x2::kiosk::Item')) {\n acc.itemIds.push(val.objectId);\n acc.items.push({\n objectId: val.objectId,\n type: val.objectType,\n isLocked: false,\n kioskId,\n });\n }\n if (type.startsWith('0x2::kiosk::Listing')) {\n acc.listingIds.push(val.objectId);\n listings.push({\n objectId: (val.name.value as { id: string }).id,\n listingId: val.objectId,\n isExclusive: (val.name.value as { is_exclusive: boolean }).is_exclusive,\n });\n }\n if (type.startsWith('0x2::kiosk::Lock')) {\n lockedItemIds?.push((val.name.value as { id: string }).id);\n }\n\n if (type.startsWith('0x2::kiosk_extension::ExtensionKey')) {\n acc.extensions.push({\n objectId: val.objectId,\n type: normalizeStructTag(parseStructTag(val.name.type).typeParams[0]),\n });\n }\n\n return acc;\n },\n { items: [], itemIds: [], listingIds: [], extensions: [] },\n );\n}\n\n/**\n * A helper that attaches the listing prices to kiosk listings.\n */\nexport function attachListingsAndPrices(\n kioskData: KioskData,\n listings: KioskListing[],\n listingObjects: IotaObjectResponse[],\n) {\n // map item listings as {item_id: KioskListing}\n // for easier mapping on the nex\n const itemListings = listings.reduce<Record<string, KioskListing>>(\n (acc: Record<string, KioskListing>, item, idx) => {\n acc[item.objectId] = { ...item };\n\n // return in case we don't have any listing objects.\n // that's the case when we don't have the `listingPrices` included.\n if (listingObjects.length === 0) return acc;\n\n const content = listingObjects[idx].data?.content;\n const data = content?.dataType === 'moveObject' ? content?.fields : null;\n\n if (!data) return acc;\n\n acc[item.objectId].price = (data as { value: string }).value;\n return acc;\n },\n {},\n );\n\n kioskData.items.forEach((item) => {\n item.listing = itemListings[item.objectId] || undefined;\n });\n}\n\n/**\n * A helper that attaches the listing prices to kiosk listings.\n */\nexport function attachObjects(kioskData: KioskData, objects: IotaObjectData[]) {\n const mapping = objects.reduce<Record<string, IotaObjectData>>(\n (acc: Record<string, IotaObjectData>, obj) => {\n acc[obj.objectId] = obj;\n return acc;\n },\n {},\n );\n\n kioskData.items.forEach((item) => {\n item.data = mapping[item.objectId] || undefined;\n });\n}\n\n/**\n * A Helper to attach locked state to items in Kiosk Data.\n */\nexport function attachLockedItems(kioskData: KioskData, lockedItemIds: string[]) {\n // map lock status in an array of type { item_id: true }\n const lockedStatuses = lockedItemIds.reduce<Record<string, boolean>>(\n (acc: Record<string, boolean>, item: string) => {\n acc[item] = true;\n return acc;\n },\n {},\n );\n\n // parse lockedItemIds and attach their locked status.\n kioskData.items.forEach((item) => {\n item.isLocked = lockedStatuses[item.objectId] || false;\n });\n}\n\n/**\n * A helper to fetch all DF pages.\n * We need that to fetch the kiosk DFs consistently, until we have\n * RPC calls that allow filtering of Type / batch fetching of spec\n */\nexport async function getAllDynamicFields(\n client: IotaClient,\n parentId: string,\n pagination: PaginationArguments<string>,\n) {\n let hasNextPage = true;\n let cursor = undefined;\n const data: DynamicFieldInfo[] = [];\n\n while (hasNextPage) {\n const result = await client.getDynamicFields({\n parentId,\n limit: pagination.limit || undefined,\n cursor,\n });\n data.push(...result.data);\n hasNextPage = result.hasNextPage;\n cursor = result.nextCursor;\n }\n\n return data;\n}\n\n/**\n * A helper to fetch all objects that works with pagination.\n * It will fetch all objects in the array, and limit it to 50/request.\n * Requests are sent using `Promise.all`.\n */\nexport async function getAllObjects(\n client: IotaClient,\n ids: string[],\n options: IotaObjectDataOptions,\n limit: number = DEFAULT_QUERY_LIMIT,\n) {\n const chunks = Array.from({ length: Math.ceil(ids.length / limit) }, (_, index) =>\n ids.slice(index * limit, index * limit + limit),\n );\n\n const results = await Promise.all(\n chunks.map((chunk) => {\n return client.multiGetObjects({\n ids: chunk,\n options,\n });\n }),\n );\n\n return results.flat();\n}\n\n/**\n * A helper to return all owned objects, with an optional filter.\n * It parses all the pages and returns the data.\n */\nexport async function getAllOwnedObjects({\n client,\n owner,\n filter,\n limit = DEFAULT_QUERY_LIMIT,\n options = { showType: true, showContent: true },\n}: {\n client: IotaClient;\n owner: string;\n filter?: IotaObjectDataFilter;\n options?: IotaObjectDataOptions;\n limit?: number;\n}) {\n let hasNextPage = true;\n let cursor = undefined;\n const data: IotaObjectResponse[] = [];\n\n while (hasNextPage) {\n const result = await client.getOwnedObjects({\n owner,\n filter,\n limit,\n cursor,\n options,\n });\n data.push(...result.data);\n hasNextPage = result.hasNextPage;\n cursor = result.nextCursor;\n }\n\n return data;\n}\n\n/**\n * Converts a number to basis points.\n * Supports up to 2 decimal points.\n * E.g 9.95 -> 995\n * @param percentage A percentage amount in the range [0, 100] including decimals.\n */\nexport function percentageToBasisPoints(percentage: number) {\n if (percentage < 0 || percentage > 100)\n throw new Error('Percentage needs to be in the [0,100] range.');\n return Math.ceil(percentage * 100);\n}\n\n/**\n * A helper to parse a transfer policy Cap into a usable object.\n */\nexport function parseTransferPolicyCapObject(\n item: IotaObjectResponse,\n): TransferPolicyCap | undefined {\n const type = (item?.data?.content as { type: string })?.type;\n\n //@ts-expect-error Silencing error here\n const policy = item?.data?.content?.fields?.policy_id as string;\n\n if (!type.includes(TRANSFER_POLICY_CAP_TYPE)) return undefined;\n\n // Transform 0x2::transfer_policy::TransferPolicyCap<itemType> -> itemType\n const objectType = type.replace(TRANSFER_POLICY_CAP_TYPE + '<', '').slice(0, -1);\n\n return {\n policyId: policy,\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n policyCapId: item.data?.objectId!,\n type: objectType,\n };\n}\n\n// Normalizes the packageId part of a rule's type.\nexport function getNormalizedRuleType(rule: string) {\n const normalizedRuleAddress = rule.split('::');\n normalizedRuleAddress[0] = normalizeIotaAddress(normalizedRuleAddress[0]);\n return normalizedRuleAddress.join('::');\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|